1. 程式人生 > >Zookeeper 系統學習一

Zookeeper 系統學習一

個人備忘調重要的記錄部落格。

分散式協作中難點

  1. 保證節點的高可用(節點故障),Ps: zk 有四種節點,自己普及。
  2. 資料的一致性。
  3. 通訊異常。
  4. 網路分割槽。

以上都可以看出來,在一個分散式系統中,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條。

這裡寫圖片描述