本文轉自:http://www.cnblogs.com/heartstill/archive/2011/09/28/2194601.html
此內容涉及到開發工具 開發方法 開發過程 體繫結構 應用分層 常用web功能舉例和注意事項
效能瓶頸 擴充並提出一些解訣方法 最後還涉及到效能的監控方法.
擴充Web應用程式
一、概念
簡單的來說,如果一個系統可擴充,那麼你可以通過擴充來提供系統的效能。這代表著系統能夠容納更高的負載、更大的數集,並且系統是可維護的。擴充和語言、某項具體的技術都是無關的。擴充可以分為兩種:
1. 垂直擴充(stade up),通俗的說就是將某台單一的機器的效能提升的更高,如添加記憶體、更換更強的處理器等等。
2. 水平擴充(out),通俗的說就是添加新的機器。
對比可以發現,水平擴充比垂直擴充有更強大的擴充性,可以說是“無限”擴充,畢竟單台的機器的效能總是有限的,硬體的技術發展還趕不上web的發展。但同時,水平擴充也來了更高的維護成本。實際中,須要根劇具體情況來尋求一個平衡點。
二、冗餘
機器總可能會發生故障,而唯一的保證故障狀況下服務依然可用的辦法就是由多個硬體備份。備份可以分為熱備份和冷備份,注意的區別在於數劇服務是否線上,數劇線上服務的同時進行的備份成為熱備份。例如將mysql伺服器關閉,然後拷貝數劇檔案到備份位置,則是典型的冷備份行為。
三、負載平衡
當我們使用了水平擴充之後,我們開始考慮新的問題了,如何將大量的請求“均衡”到我們的擴充機器上呢?
兩種負載平衡模式:有狀態(如有攜帶session)和無狀態
兩種負載平衡方式:硬體均衡和軟體均衡
硬體均衡比較簡單,通常接入一個裝置即可,之後的均衡和故障檢測等等都由硬體自動完成。成本較高。
軟體均衡則是通過軟體來轉寄各種請求,更加容易的定義轉寄規則,有較多的開源產品選擇。
第四層和第七層
經常在負載平衡中看到第四層和第七層這兩個名詞。它們實際上是指它們各自工作時所處理的網路通訊協定的層數(使用ISO模型)。
第四層是數劇傳輸層,包括TCP和UDP,第七層則是應用程式層,通常web中為HTTP應用。如Apache、nginx等支援第七層的均衡,而且可配置性都相當強大,能夠適應較複雜的應用。例如可以簡單的將流量分擔到各個負載機上,也可以定義一套商務規則,將應用劃分為不同的池,每個池處理某些關聯規則的
URL。
對比軟體均衡與硬體均衡,可以發現它們各自的優缺點:
1. 硬體均衡成本比較高,軟體均衡多數可以使用免費的開源軟體來實現。
2. 硬體均衡對於故障檢測比軟體均衡更加趴大、快速。在採用硬體均衡時,一旦某台機器出現故障,馬上就可以檢測出來並立即屏蔽。
3. 硬體均衡可以快速的添加機器(接入硬體介面即可),而軟體均衡除了添加機器外還要添加一些配置資訊,以將某些流量匯入到新的機器。
4. 軟體均衡可以定義非常複雜的商務規則,而硬體均衡在這方面相對較弱。
5. 多數的硬體均衡方案都有捆綁附加的一些服務如HTTPS加速、DOS防火牆等等。
還有一種比較流行的方案:DNS解析。這種方式對解訣使用者分布在不同地理位置、不同網路的情況有著相當好的效果,每個使用者都可以根劇自己的網路得到一個較快速的訪問IP。缺點也比較明顯:DNS更新緩慢,對於即時性的均衡幾乎沒有什麼作用,因為DNS的更新往往須要一兩個小時,甚至一兩天。
四、使用緩衝
使用緩衝將某些即時性要求不高的服務結果緩衝起來是大型應用解訣方案的一個共識,合理的使用緩衝將極大的改善應用體驗和效能。
常用的幾類緩衝:
緩衝數劇:memcached memcachedb
緩衝HTTP請求: squid
使用者瀏覽器緩衝
此內容涉及到開發工具 開發方法 開發過程 體繫結構 應用分層 常用web功能舉例和注意事項
效能瓶頸 擴充並提出一些解訣方法 最後還涉及到效能的監控方法.
擴充Web應用程式
一、概念
簡單的來說,如果一個系統可擴充,那麼你可以通過擴充來提供系統的效能。這代表著系統能夠容納更高的負載、更大的數集,並且系統是可維護的。擴充和語言、某項具體的技術都是無關的。擴充可以分為兩種:
1. 垂直擴充(stade up),通俗的說就是將某台單一的機器的效能提升的更高,如添加記憶體、更換更強的處理器等等。
2. 水平擴充(out),通俗的說就是添加新的機器。
對比可以發現,水平擴充比垂直擴充有更強大的擴充性,可以說是“無限”擴充,畢竟單台的機器的效能總是有限的,硬體的技術發展還趕不上web的發展。但同時,水平擴充也來了更高的維護成本。實際中,須要根劇具體情況來尋求一個平衡點。
二、冗餘
機器總可能會發生故障,而唯一的保證故障狀況下服務依然可用的辦法就是由多個硬體備份。備份可以分為熱備份和冷備份,注意的區別在於數劇服務是否線上,數劇線上服務的同時進行的備份成為熱備份。例如將mysql伺服器關閉,然後拷貝數劇檔案到備份位置,則是典型的冷備份行為。
三、負載平衡
當我們使用了水平擴充之後,我們開始考慮新的問題了,如何將大量的請求“均衡”到我們的擴充機器上呢?
兩種負載平衡模式:有狀態(如有攜帶session)和無狀態
兩種負載平衡方式:硬體均衡和軟體均衡
硬體均衡比較簡單,通常接入一個裝置即可,之後的均衡和故障檢測等等都由硬體自動完成。成本較高。
軟體均衡則是通過軟體來轉寄各種請求,更加容易的定義轉寄規則,有較多的開源產品選擇。
第四層和第七層
經常在負載平衡中看到第四層和第七層這兩個名詞。它們實際上是指它們各自工作時所處理的網路通訊協定的層數(使用ISO模型)。
第四層是數劇傳輸層,包括TCP和UDP,第七層則是應用程式層,通常web中為HTTP應用。如Apache、nginx等支援第七層的均衡,而且可配置性都相當強大,能夠適應較複雜的應用。例如可以簡單的將流量分擔到各個負載機上,也可以定義一套商務規則,將應用劃分為不同的池,每個池處理某些關聯規則的
URL。
對比軟體均衡與硬體均衡,可以發現它們各自的優缺點:
1. 硬體均衡成本比較高,軟體均衡多數可以使用免費的開源軟體來實現。
2. 硬體均衡對於故障檢測比軟體均衡更加趴大、快速。在採用硬體均衡時,一旦某台機器出現故障,馬上就可以檢測出來並立即屏蔽。
3. 硬體均衡可以快速的添加機器(接入硬體介面即可),而軟體均衡除了添加機器外還要添加一些配置資訊,以將某些流量匯入到新的機器。
4. 軟體均衡可以定義非常複雜的商務規則,而硬體均衡在這方面相對較弱。
5. 多數的硬體均衡方案都有捆綁附加的一些服務如HTTPS加速、DOS防火牆等等。
還有一種比較流行的方案:DNS解析。這種方式對解訣使用者分布在不同地理位置、不同網路的情況有著相當好的效果,每個使用者都可以根劇自己的網路得到一個較快速的訪問IP。缺點也比較明顯:DNS更新緩慢,對於即時性的均衡幾乎沒有什麼作用,因為DNS的更新往往須要一兩個小時,甚至一兩天。
四、使用緩衝
使用緩衝將某些即時性要求不高的服務結果緩衝起來是大型應用解訣方案的一個共識,合理的使用緩衝將極大的改善應用體驗和效能。
常用的幾類緩衝:
緩衝數劇:memcached memcachedb
緩衝HTTP請求: squid
使用者瀏覽器緩衝