前言
上一篇介紹了用Dubbo + zookeeper
實現RPC
調用,你就沒有什麼問題嗎?markdown
- 爲何要用zk?
- 爲何消費者要配置zk地址,有什麼做用?
- 爲何生產者要配置zk地址,有什麼做用?
zk在這主要是數據的發佈與訂閱做用!!!ide
Idea安裝zookeeper
- Idea plugin搜索
zookeeper插件
,並重啓
- 重啓以後配置地址
3. 在側邊欄查看工具
zk分析
zk 節點
- zk的內部都是由節點組成,相似於二叉樹的節點概念,每個節點均可以存在
子節點
和當前節點信息
。
2. 節點包括
持久節點
和
臨時節點
持久節點
- 持久節點顧名思義,當客戶端與服務端斷開鏈接後,持久節點不會消失。Dubbo中的服務名節點就是持久節點。
臨時節點
- 臨時節點,當客戶端與服務端斷開鏈接後,因爲zk的心跳機制,臨時節點會被刪除。Dubbo中的
URL配置節點
就是持久節點。
dubbo註冊和監聽
生產者往zk發佈信息
- 生產者在配置文件中配置zk地址,在啓動項目時,Dubbo會往zk中寫入節點信息,即將數據推送到zk中。
- 節點的目錄爲:dubbo - 服務名 - providers - URL等地址信息
另外第四個節點是臨時節點,包含IP地址,服務名稱,服務的各類方法,dubbo版本號,時間戳等等
3. zk會經過心跳檢測鏈接,若是鏈接斷了,會將第四個節點給刪除。
消費者訂閱zk節點
- 因爲消費者有
@Refrence
註解,dubbo會在zk中監聽這個服務的子節點,獲取信息。
- 當生產者掛掉時,因爲心跳機制,zk會將臨時節點刪除,當消費者監聽到節點的信息變化時,消費者會拉取監聽節點的信息。
消費者調用生產者服務
- 消費者獲取信息後經過Dubbo的各類協議進行遠程調用。
- 當生產者的某個服務斷開鏈接後,zk會向監聽者(消費者)主動發送變化的信息,便於消費者的調用。
- 固然若是provider所有斷開後,也能夠經過直連的方式調用。
問題
- 因爲消費者是監聽生產者的節點,那麼dubbo在zk中建立的消費者節點是什麼用途
猜想:用於給dubbo-admin
等提供消費者信息等。
結尾
因爲車轍還未看過Dubbo註冊訂閱的源碼,所以上述不保證百分百正確~~~工具