前言
Zookeeper到底能爲我們的程序解決一些什麼問題呢?
應用場景
1. 分佈式配置中心
1.1通過Zookeeper的watch監聽來實現各個集羣節點的配置修改,不用再一臺臺服務器單獨進行修改。
1.2使用zookeeper的持久化節點來實現配置保存。
2. 分佈式鎖
2.1.APP1 獲取鎖的時候,創建節點node0000001,APP2 併發獲取鎖的時候,創建節點node0000002,APP3 併發獲取鎖的時候,創建節點node0000003.
2.2.然後APP1判斷自己獲取到的節點是不是最小的,如果是則獲取鎖成功,APP2,APP3判斷自己的節點都不是最小的所以等待。
2.3.APP2獲取了node0000002所以APP2需要監聽比自己小的node0000001什麼時候消失,消失APP2就獲取鎖。 APP獲取鎖的邏輯和APP2一致。
2.4.實現zookeeper鎖的開源框架有Curator。
3. 註冊中心
3.1. 各個APP服務都將自己的ip和端口註冊到Zookeeper的節點上面,這個節點是臨時的,服務消息節點也會消失,各個服務都需要GSV來表示自己。
3.2. APP服務之間的互相調用,通過Zookeeper去找到對方的服務的地址,然後通過GSV和方法名具體找到實際方法。
3.3. zookeeper只是提供了節點的特性,實現以上功能的框架有dubbo。
總結
以上是zookeeper最常用的幾種方式,zookeeper還可以有很多其他的用處,利用他的watch機制和節點特性。