Zookeeper 系統學習一
個人備忘調重要的記錄部落格。
分散式協作中難點
- 保證節點的高可用(節點故障),Ps: zk 有四種節點,自己普及。
- 資料的一致性。
- 通訊異常。
- 網路分割槽。
以上都可以看出來,在一個分散式系統中,zk 的作用就是做協調排程,簡單講,他是用來分散式系統中溝通的橋樑,這也正是zk 的優點特性所在。基礎普及請自行學習。
Zookeeper 簡介
分散式協作,zookeeper 是google 的chubby 專案開源實現,最早是hadoop的子專案,案例:小米米聊,淘寶Taokeeper其實類似zookeeper 。
Zookeeper 解決了哪些問題
1. Master 節點管理
解決問題:Master高可用(掛掉以後,誰來負責工作),保證唯一。例如:amq 叢集levelDB下通過zk(三節點叢集)做實現。當一個主的掛掉, 冗餘的slave要立馬接管主節點的任務。
2. 配置檔案管理,配置中心
解決問題:統一配置檔案存放zk, 由zk 統一分發。,例如:dubbo 的配置 中心。
3. 釋出與訂閱
釋出者(producer)將資料釋出到zk 節點上,供訂閱者(consumer)動態獲取
4. 分散式鎖
臨時順序節點,臨時解決死鎖,順序用來提供監聽的策略,實現效能的提升。具體實現可以看我往期的部落格。作用:保證資料的一致性,安全。
5. 叢集的管理
Worker 叢集監控。當某臺機器掛掉之後,把工作轉移到其他機器上。
三節點偽叢集搭建
看我往期部落格。偽叢集
Zk Shell
Zk API
zookeeper , zkClient , curator 。越往後越好用。
wacher 監聽器,監聽節點。
分散式發展歷程
(1)
(2)
(3)
10000 個併發,可能20%是寫,80%是讀,那麼我們需要對讀進行快取。
(4)
(5)
此架構是為了解決資料庫的壓力。
mysql 的併發在 300 – 700 ;
(6)
淘寶,天貓。
分庫分表 :
mysql 300–700 之間, 高併發放1000 qps , 日均pv 千萬級別。
7000 10臺20臺mysql 。
全國省份 user 5+++億使用者。
user拆分 province 5億/32 ==== 記錄數大大縮小 。
華東區 = province1, 2 , 3 , 4 dbserver1
華北區 = province5 , 6 , 7 , 8 dbserver2
業務華東區, 華北區, 西北區 。
(7)
(8)
最終形態,業務拆分,每個業務都可以在進行上面的分散式部署。
商品搜尋,支付系統,個人系統,商家系統,熱點計算 == 》 淘寶電商平臺 。
(1)商品搜尋1 商品搜尋2 商品搜尋3。。。。。。。商品搜尋n臺 server
(2)支付系統1 支付系統2 支付系統3。。。。。。。支付系統n臺 server 。
(3)個人系統1 個人系統2 個人系統3 。。。。。。。個人系統n臺 server 。
各個伺服器之間 : 資料一致性, 和 伺服器叢集master選舉等,都需要zk 去協調。
分散式技術詳解
特點 : 併發性 , 分佈性,缺乏全域性時鐘 , 對等性 , 故障 肯定會發生 。
分散式事物
小編知道的:
(1)補償模式,A – B 都可以進行補償。
(2)atomic 框架,基於資料庫操作的實物,效能差。
(3)模仿資料庫的三階段式提交 TCC , conmit , rallback() ;
(4) 基於 mq 自身提供的事物 。
CAP 理論
一致性(Consistency)
可用性 (Availability)
分割槽容錯性 (網路分割槽)Partition tolerance
CAP 理論的特點, 就是 CAP只能滿足其中2條。