Zookeeper实践与应用-- Nginx负载均衡差异
生活随笔
收集整理的這篇文章主要介紹了
Zookeeper实践与应用-- Nginx负载均衡差异
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Nginx/ZooKeeper 負載均衡的差異
- Nginx 是我們常見的反向代理服務器,也被廣泛的用作負載均衡服務器
- ZooKeeper是分布式協調服務框架,有時也被用來做負載均衡
Nginx
- Nginx負載均衡配置非常簡單,吧多個Web Server配置到nginx中,用戶訪問Nginx時候,會自動被分配到某個webServer,如下Nginx配置:
- 當網證規模變大,通常進行服務拆分,各個服務獨立部署,通過遠程調用方式協同工作,如下示意圖:
- 為保證穩定性,每個服務不會用一臺服務器,也會做集群,你們這子集群同樣需要一個負載均衡,可以使用Nginx
- 到這一步我們用Nginx完全可以解決問題,但是隨著系統再次增大,服務數量也會增加,每個服務集群服務器數據增加,這個時候會有如下問題:
- 維護Nginx配置的成本變大,節點變多
- 單點故障風險增加,因為熱點服務,比如用戶信息,訪問量高,如果這個服務器集群的Nginx出現問題,服務將失效
- 第一個問題,可以自己開發插件解決,只是降低復雜度,沒有根本解決。
- 第二個問題,可以通過多Nginx部署方案,另一臺Nginx可以待命狀態,提高容錯,只是增加成本
Zookeeper負載均衡實現思路
- 將Zookeeper作為服務注冊中心,在其中登記每個服務,每臺服務器指定自己是屬于那個服務,在服務啟動時候,想所屬服務進行注冊,這樣一個樹形服務結構就呈現出來:
- 服務調用者到注冊中心查找:能提供所需服務的服務列表,然后自己根據負載均衡算法,從中選取一臺服務器進行連接,并且在此節點注冊watcher,修改通知
- 調用者渠道服務列表,可以緩存在自己內部,省的下次在獲取,當服務器列表發送變化,例如宕機,或添加新的服務器,Zookeeper的watcher機制會通知添加修改關注的調用者重新獲取服務器列表
- 此處只是利用了Zookeeper樹形數據結構,watcher機制等性能,吧Zookeeper作為服務注冊和變更通知,解決了Nginx負載均衡方案帶來的問題
總結
| 不存在單點問題,zab機制保證單點故障可重新選舉一個leader | 存在單點問題,單點負載高數據量大 |
| 只負責服務的注冊與發現,不負責轉發,減少一次數據交換(消費方與服務方直接通信) | 每次負載,都充當一次中間人轉發角色,增加網絡負載量(消費方與服務方間接通信) |
| 需要自己實現相應的負載均衡算法 | 自帶負載均衡算法 |
上一篇Zookeeper實踐與應用- Canal
下一篇Zookeeper–分布式鎖
總結
以上是生活随笔為你收集整理的Zookeeper实践与应用-- Nginx负载均衡差异的全部內容,希望文章能夠幫你解決所遇到的問題。