天天看點

大型網站技術架構——讀後摘要6

網站的伸縮性架構

網站架構的伸縮性設計

1.不同功能進行實體分離實作伸縮
大型網站技術架構——讀後摘要6

每次分離都會有新的伺服器加入網站來處理特定服務。

再細化:

  • 縱向分離:将業務流程上不同部分分離部署實作系統伸縮性。
  • 橫向分離:将不同的業務子產品分離部署,實作伸縮性。
2.單一功能通過叢集規模實作伸縮

對于使用者量非常大的網站,再單一的功能一台伺服器也無法滿足使用者量,是以以叢集的方式來分擔一台伺服器的負載壓力

應用伺服器叢集的伸縮性設計

1.HTTP重定向負載均衡
大型網站技術架構——讀後摘要6

用戶端發送的請求經過HTTP重定向負載均衡伺服器,重定向負載均衡伺服器會将應用伺服器的ip給客戶,客戶重定向完成通路。缺點:通路太慢,相當于兩次請求一次響應,太耗時。

2.DNS域名解析負載均衡
大型網站技術架構——讀後摘要6

客戶通過域名對伺服器進行通路,域名請求首先通過DNS伺服器,DNS伺服器域名對應着一系列ip,DNS伺服器會通過算法将其中一個ip傳回給用戶端,用戶端再向指定伺服器請求。

另外DNS伺服器還支援地理位置域名解析,這樣請求就會發往距離比較近的伺服器。

3.反向代理負載均衡
大型網站技術架構——讀後摘要6

反向代理伺服器要配置在web伺服器的前面,web伺服器無需知道使用者的ip,它隻需與反向代理伺服器網絡相通;使用者的網絡要與反向代理伺服器相通,這樣反向代理伺服器就要有兩個網卡和兩套ip位址。

4.IP負載均衡
大型網站技術架構——讀後摘要6

在網絡層通過修改目标伺服器ip來實作負載均衡。

5.資料鍊路層負載均衡:
大型網站技術架構——讀後摘要6
大型網站技術架構——讀後摘要6
常用的負載均衡算法:
  • 輪詢:所有請求依次發往每台伺服器。
  • 權重輪詢:根據伺服器性能的不同,高性能的伺服器配置設定更多的請求。
  • 随機:請求随機發往伺服器
  • 最少連接配接:記錄每台伺服器正在處理的連接配接數,将新到的請求發往最少連接配接的伺服器上。
  • 源位址散列:根據請求來的ip進行Hash計算,得到對應伺服器,這樣來自同一台ip位址的請求就會落到同一台伺服器上處理,實作回話黏滞。

分布式緩存叢集的伸縮性

分布式緩存伺服器叢集的設計不同于應用伺服器叢集。因為請求在通路緩存伺服器是先找到有緩存資料的伺服器,然後再通路伺服器,如果緩存伺服器叢集的伺服器很多,請求在找到有相應請求的緩存資料伺服器将浪費大量時間。

Memcached分布式緩存叢集的通路模型

被通路的資料都有key标志,這個标志可以幫你找到對應緩存伺服器的ip和端口。

大型網站技術架構——讀後摘要6
大型網站技術架構——讀後摘要6
分布式緩存的一緻性hash算法(hash環)

如果新加入一台伺服器,那麼受到影響的伺服器就是加入伺服器兩端的兩台伺服器。

資料存儲伺服器叢集伸縮性設計

關系資料庫叢集的伸縮設計

大型網站技術架構——讀後摘要6

Cobar分布式關系資料庫通路代理的應用

大型網站技術架構——讀後摘要6

Cobar的伸縮有兩種:Cobar伺服器叢集的伸縮和Mysql伺服器叢集的伸縮。

Cobar實作資料遷移可以利用一緻性Hash算法

大型網站技術架構——讀後摘要6

NoSQL資料庫的伸縮性設計

主要看Hbase!!!

繼續閱讀