1. 程式人生 > >網際網路技術架構——水平擴充套件

網際網路技術架構——水平擴充套件

在實踐中,我們發現,“向上擴充套件註定會失敗”。這是因為,在超高速增長的環境裡,公司計劃以水平方式擴充套件(又稱為向外擴充套件)至關重要。而大多數的水平擴充套件都是通過對跨越多個系統工作負荷的拆分或者複製完成的。

水平擴充套件

水平擴充套件是通過複製或拆分服務或資料庫而分散事務負載的方法,與此相對的是向上擴充套件,即通過購買更大的硬體而實現的擴充套件。

向上擴充套件最終會停在一個點,要麼是成本太高,要麼是沒有更大的硬體。而且四個八核處理器的計算資源也不等於兩個八核處理器的兩倍,因為還要耗費時間和資源優化可以並行的解決方案。

伺服器上的水平擴充套件

大多數的SaaS應用可以通過簡單地複製程式碼到多個應用伺服器,然後把它們配置在負載均衡器的後面來實現。應用伺服器彼此之間不必相互通知,從負載均衡器發來的請求可以由任何一個伺服器來處理。如果應用必須跟蹤狀態,一個可能的解決方案是負載均衡器允許使用會話cookie,以維持客戶的瀏覽器和特定的應用伺服器之間的關係。一旦客戶提交了初始請求,相應的伺服器繼續服務該客戶直到會話結束。

資料庫上的水平擴充套件

對資料庫的擴充套件往往需要更多的規劃和技術工作,可以使用複製資料庫,拆分服務,拆分使用者的方式實現資料庫上的水平擴充套件。詳細內容請參見連結

使用商品化系統

在生產環境中遠離那些龐大的系統,儘可能採用小型廉價的系統。這樣可以實現快速和低成本的增長,只採購必要的容量,而不浪費在尚未明確的容量需求上。

  • 裝置供應商利潤最高的產品往往是處理器最多的最大的產品。
  • 與有同等數量處理器的較小系統相比,這些更大更快的機器並非真正能夠做更多的工作。
    • 以CPU為例,由於多處理器排程演算法的低效率、記憶體匯流排訪問速度衝突、結構障礙、資料障礙等原因,在新增CPU時,每個CPU的工作量比單個CPU的系統少。而在虛擬化環境中,管理虛擬機器的開銷隨著物理機規模的增加而增加,效率最佳似乎是兩個CPU或4個CPU的物理主機。
  • 考慮更大的系統可能會消耗更少的電力並降低成本。在電力成本的增加和系統成本的降低之間尋找一個合適的規模,可以最優化電力消耗、系統成本和計算能力。
  • 大型的系統投入了大量的資金,因此需要時間來維護和修復;而小型的系統非常便宜,如果壞掉,我們可能會輕鬆地丟棄它們,而不是投入大量的時間來修復。

使用託管方案擴充套件

把系統部署到三個或更多活的資料中心,以降低總體成本、增加可用性並實現災難恢復。資料中心可以是自有設施、託管或雲端計算(IaaS或PaaS)例項。

避免擁有自己的資料中心,除非公司的規模大到可以通過建設和執行自己的資料中心來節省成本。

以三個資料中心為例。將完整的資料拆分為三部分,資料集A,B,C。每個資料中心包含一個數據集,而且每個資料集都有一半的資料被複制到其他的資料中心。這樣,我們只需要至少兩個資料中心存活,整個系統就能正常運作,而且在系統發生故障時,每個資料中心只需要具備150%的容量就可以執行100%的流量,而資料庫永遠需要200%的儲存。

三資料中心配置的一個很大的好處是能夠利用空閒容量建立測試區(如負載和效能測試),以及在需求高峰期利用這些閒置資源的能力。但是由於每個資料中心都在發揮作用,所以也帶來了一些額外的操作複雜性。

使用雲擴充套件

我們要有目的地利用雲技術按需擴充套件。當需求是臨時的、突增的、偶發的,響應時間不是產品的核心問題。要將其當成是“租用風險”——新產品對未來需求的不確定性,需要在快速改變或放棄投資間抉擇。當公司從雙活向三活資料中心遷移時,雲可以作為第三資料中心。

  • 採用第三方雲環境應對臨時需求,如季節性業務變動、大的批處理任務或者是測試中需要的QA環境。
  • 當用戶請求超過某個峰值時,把應用設計成可以從第三方雲環境對外提供服務。擴充套件雲以應對高峰期,然後再把活躍的節點數減少到基本水平。

在雲環境中配置硬體只需要幾分鐘,但是在自己託管設施配置物理伺服器需要幾天甚至幾周。所以當臨時使用時,雲的成本效益非常高。

  • 租賃有風險產品的系統容量更有意義,因為如果有風險就可以輕鬆地拋棄它,而不需要消耗硬體的費用。
  • 通常有些元件,諸如批量處理、測試環境或峰值容量,把它們放在雲環境更有意義。因為雲環境允許根據需要在非常短的時間範圍內實現按需擴充套件。

提前做好擴充套件計劃,以便在需求出現時可以輕鬆地拆分系統。擴充套件系統和資料中心,依靠廉價的商品化硬體,利用雲來處理意外需求,為超高速成長做好準備。