【成爲架構師2-3】反向代理:接入層擴容,負載均衡

系列文章是博主對沈劍的《架構師訓練營》分享內容的個人筆記總結,原內容公衆號“成爲架構師”。

1 單機遺留問題

上一篇討論了僞分佈式與垂直拆分的問題

垂直拆分,解除了子系統耦合,但是對於同一個垂直站點子系統,仍然是一個“單體架構”
在這裏插入圖片描述
集羣的實現,通常需要引入反向代理

2 反向代理,接入層擴容

用什麼做反向代理
  1. 軟件層面:nginx / apache
  2. 操作系統層面:LVS
  3. 硬件:F5

在這裏我們只談軟件層面的,OS與硬件層面感興趣的話可以百度或者Google,至於何爲反向代理這裏也不贅述了

反向代理解決了什麼問題
  1. 子web系統性能,不再受到單臺機器資源限制,可以擴展
  2. 子web系統,實現了高可用,僞集羣變爲真集羣

在這裏插入圖片描述

反向代理帶來了什麼新問題
  1. 多個web節點,負載如何分配(負載均衡問題)
  2. 反向代理層,如何保證高可用(反向代理高可用問題)

3 反向代理,負載均衡

負載均衡方法:
  1. 隨機,將請求random到web-server
  2. 輪詢,按照web-server 1-n的順序依次的分發請求
  3. 靜態權重輪詢,不同web-server之間的處理能力不同,性能好的權重大,會被轉發更多的請求
  4. 動態權重輪詢(後續討論),權重分配是動態的,而不是一個固定值
  5. 一致性哈希(後續討論),ip哈希之後落在hash環上,按照順時針方向找到對應的真實服務器ip或者虛擬節點
負載均衡抓手(如何維護session狀態一致性):
  1. 四層(轉發/交換)
  2. 七層(轉發/交換)

這來自於七層結構模型
在這裏插入圖片描述
第四層傳輸層:使用ip作爲負載均衡的抓手

第七層應用層(在TCP/IP模型中爲第五層):使用http請求中攜帶的參數作爲負載均衡的抓手

4 反向代理,高可用

虛擬IP + keepalived方案:
在這裏插入圖片描述
公網IP虛擬化,nginx集羣對外暴露的公網ip是一個虛擬ip,dns解析得到的是此虛擬ip

通過keepalived保證nginx的可用性,當其中一個nginx掛了,虛擬ip得到的請求會轉到另一個可用的nginx上

在這裏插入圖片描述
但是這種stand by的方式會引入新的問題:利用率的問題,圖中利用率只有50%,這將在後續進行討論。

5 兩個遺留問題

  1. 異構服務器的負載均衡,即前面的動態權重問題
  2. keepalived方案造成的其中一個nginx stand by利用率低下的問題

下一篇將介紹接入層的架構演進,如果nginx達到了流量上限應該怎麼辦?

上一篇回顧:【成爲架構師2-2】僞分佈式與垂直拆分:快速解決單機性能問題的實踐方案
下一篇更精彩:【成爲架構師2-4】反向代理與DNS輪詢:接入層的架構演進

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章