ZooKeeper 常用的技術應用場景如下所述。
場景一:分布式協調
分布式鎖 :在分布式環境中,程序都在獨立的節點上,分布式鎖是控制分布式系統之間同步訪問共享資源的一種方式,分布式鎖主要有如下2種類型:
- 獨占鎖:主要實現原理是利用ZooKeeper在一個具體路徑下每個進程創建一個有序的臨時節點,每個進程會判斷自己的節點是否序號最小的節點,如果是則獲得鎖,如果不是則創建一個監聽等待前一個序號小的臨時節點釋放鎖。
- 共享鎖:共享鎖可以支持多個進程同時獲取這把鎖進行讀操作,但是如果某個進程要獲取寫操作的權限,那么在寫操作之前是沒有讀操作的數據,并且該進程是第一個獲取到寫操作類型鎖的。
分布式隊列 :隊列功能可以利用ZooKeeper的有序節點,實現先進先出(First Input First Output,簡稱FIFO)的分布式隊列,即先進入隊列的先被消費,后加入隊列的后被消費。在創建znode時開啟sequence 和 ephemeral模式,則被創建的節點結尾是一個遞增的值,且不會重復。

場景二:配置中心
運用ZooKeeper的存儲模式,實現配置信息的集中管理和數據的動態更新,保證了配置數據的一致性和實時性。

場景三:微服務領域的注冊中心場景
在微服務場景里,利用ZooKeeper的注冊和監聽功能。ZooKeeper可以用作Dubbo和Spring Cloud的注冊中心。

MSE提供的ZooKeeper企業級服務
MSE提供的ZooKeeper企業級服務,分為單機版和集群版兩種,更多關于單機版和集群版的功能特性,請參見版本特性。
優勢一:穩定高可用
多AZ部署:平均部署可用區,提高集群容災能力。例如,當一個5節點的ZooKeeper集群,部署在3個可用區的時候,它應該是2/2/1的分布,任意一個可用區出現故障,不影響ZooKeeper的整體可用性。
高可用負載均衡:MSE ZooKeeper自動對用戶請求做負載均衡,會把請求壓力均衡到后端的節點上去,并且能保障請求會到監控正常的節點上面去。
數據安全:MSE ZooKeeper提供了快照備份能力,在集群出現意外狀況時候,能快速重建恢復集群的數據,保障數據的安全。
優勢二:可觀測性增強
提供監控中心:MSE ZooKeeper提供了多達20余項常用的監控指標,包括業務指標和系統資源指標等,供您免費開啟使用。
支持核心告警規則:支持配置告警規則,一旦發生指標異常,及時進行告警,可以滿足日常運維使用。
優勢三:性能提升
寫入性能提升:ZooKeeper的寫入性能和磁盤性能是強相關。MSE ZooKeeper提供了自研的超高IO磁盤供您選擇,整個寫入TPS性能可提高約25%。
參數性能調優:MSE ZooKeeper對JVM參數進行了調優,堆的參數設置會根據不同的規格進行動態調整。
優勢四:豐富的控制臺功能
| 對比項 | MSE ZooKeeper | 自建ZooKeeper |
|---|---|---|
| 系統搭建成本 | 資源全托管免運維,故障節點自動摘除。 | 自行購買各種資源搭建系統,運維升級需投入精力,人工成本高。 |
| 易用性 | 提供可視化的數據管理,支持頁面修改全局參數,重啟生效。 | 不支持可視化。 |
| 高可用 | 多AZ部署,故障自動檢測以及數據及時備份成快照。 | 需自行開發高可用保障體系。 |
| 性能 | 集成超高IOS磁盤,提高ZooKeeper讀寫性能。 | 需要自行調試。 |
| 監控告警 | 對集群狀態,znode數,連接數,請求平均延時等指標監控。 | 沒有監控體系,需要自己搭建。 |