1. 程式人生 > >大型系統演進之路-負載均衡演進

大型系統演進之路-負載均衡演進

Nginx做負載均衡

通過Nginx的反向代理將請求分發到tomcat中,如果tomcat支援100併發,Nginx支援50000併發,理論上nginx把請求傳送到500個tomcat就可以了。

LVS或F5做多個Nginx負載均衡

Tomcat和資料庫都可以水平擴充套件之後,單機的Nginx會成為瓶頸。

LVS和H5解決網路四層負載均衡,效能高於七層的Nginx,單機LVS可支援幾十萬併發請求轉發,F5是硬體負載均衡,效能比LVS高,但是價格昂貴。

為解決LVS服務高可用,可以採用主備方式解決可用性,使用keepalived模擬虛擬IP,然後把虛擬IO繫結到多個LVS機器上,訪問虛擬IP時,請求會被路由到真實到LVS伺服器上,當主LVS宕機時,keepalived會自動更新路由策略,把虛擬IP重定向到另一臺正常到LVS伺服器上,達到LVS服務高可用。

一般幾個Nginx下面是一部分tomcat,Nginx之間通過keepalived實現高可用。

DNS輪詢實現多機房負載均衡

LVS是單機的,當併發數增加到幾十萬時,LVS伺服器變成了瓶頸,用於使用者較多,請求分佈在不同地區,導致訪問同一個機房存在跨地域延遲。

DNS服務配置一個域名對應多個IP地址,每個IP對應不同機房虛擬IP,通過DNS實現了機房間的負載均衡,實現了機房級別的水平擴充套件。

微服務拆分

按照業務拆分程式碼,使單個應用指責清晰,可以獨立升級迭代,同時由於不同應用之間存在共用模組,導致升級迭代過程不自由。

於是抽象出通用業務中臺,使用者,訂單,支付,鑑權等作為單獨服務進行治理,服務之間通過http,rpc進行通訊,服務之間需要做服務治理,限流,熔斷,降級等工作,提高系統穩