「簡單」的Dubbo與Zookeeper (2)- zk原理

前言

上一篇介紹了用Dubbo + zookeeper實現RPC調用,你就沒有什麼問題嗎?markdown

  1. 爲何要用zk?
  2. 爲何消費者要配置zk地址,有什麼做用?
  3. 爲何生產者要配置zk地址,有什麼做用?

zk在這主要是數據的發佈與訂閱做用!!!ide

Idea安裝zookeeper

  1. Idea plugin搜索zookeeper插件 ,並重啓
  2. 重啓以後配置地址

3. 在側邊欄查看工具

zk分析

zk 節點

  1. zk的內部都是由節點組成,相似於二叉樹的節點概念,每個節點均可以存在子節點當前節點信息

2. 節點包括 持久節點臨時節點

持久節點

  1. 持久節點顧名思義,當客戶端與服務端斷開鏈接後,持久節點不會消失。Dubbo中的服務名節點就是持久節點。

臨時節點

  1. 臨時節點,當客戶端與服務端斷開鏈接後,因爲zk的心跳機制,臨時節點會被刪除。Dubbo中的URL配置節點就是持久節點。

dubbo註冊和監聽

生產者往zk發佈信息

  1. 生產者在配置文件中配置zk地址,在啓動項目時,Dubbo會往zk中寫入節點信息,即將數據推送到zk中。
  2. 節點的目錄爲:dubbo - 服務名 - providers - URL等地址信息
    另外第四個節點是臨時節點,包含IP地址,服務名稱,服務的各類方法,dubbo版本號,時間戳等等

3. zk會經過心跳檢測鏈接,若是鏈接斷了,會將第四個節點給刪除。

消費者訂閱zk節點

  1. 因爲消費者有@Refrence註解,dubbo會在zk中監聽這個服務的子節點,獲取信息。
  2. 當生產者掛掉時,因爲心跳機制,zk會將臨時節點刪除,當消費者監聽到節點的信息變化時,消費者會拉取監聽節點的信息。

消費者調用生產者服務

  1. 消費者獲取信息後經過Dubbo的各類協議進行遠程調用。
  2. 當生產者的某個服務斷開鏈接後,zk會向監聽者(消費者)主動發送變化的信息,便於消費者的調用。
  3. 固然若是provider所有斷開後,也能夠經過直連的方式調用。

問題

  1. 因爲消費者是監聽生產者的節點,那麼dubbo在zk中建立的消費者節點是什麼用途
    猜想:用於給dubbo-admin等提供消費者信息等。

結尾

因爲車轍還未看過Dubbo註冊訂閱的源碼,所以上述不保證百分百正確~~~工具

相關文章
相關標籤/搜索