motan源碼解讀:註冊中心zookeeper(1)

     Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination.node

                 --官網數據庫

     從官網能夠看出,zookeeper是一個分佈式一致性服務的軟件。認識它源於hadoop中的habse.在後來的使用過程,能夠看出它本省就是一個分佈式的內存數據庫,它由多個節點組成,每一個節點的中存儲的內容的都是同樣的。,看到這裏,每一個節點保存內容相同,這樣也不怕數據丟失了,讀的時候隨便從一個節點讀取就行,可是如何保證這些節點都是「同樣的」的。  這樣就須要一個協議,名字叫zab協議。內部咋實現的,這裏面不討論。apache

      motan利用zookeeper實現發佈訂閱。其實所謂發佈,其實就是建立節點。訂閱就是對本身感興趣的節點設計監聽器。顯然:服務器

      發佈者就是provider:它根據本身URL建立節點。固然consumer也會建立節點。只是前者會被監聽,後者不會。負載均衡

     訂閱者就是Consumer:它監聽某個節點的變化或者相應的節點的子節點變化了解了provider的狀況,同一個provider可能有多個服務器提供,有服務器可能會忽然宕機,或者加上一個新的服務器,所以consumer要及時的感覺到它對應的服務列表的變化。從而能夠根據負載均衡機制或者高可用機制選取一個服務提供者。分佈式

motan中的zookeeper應用(發佈訂閱)ide

  源碼中示例代碼motan-demo中已經存在MotanDemoService這個服務,我也隨便建立了一個服務motan.learn的服務實現一個很是簡單的功能。下圖是zookeper的目錄結構和節點的內容。從中能夠看到一個服務下會建立對應的server和client的znode.該service的對應的provider和consumer都會建立本身的節點。好比MotanDemoService中有2個服務器提供服務。一個客戶端,這個 client會監測相應的server的服務列表。根據已定規則選取一個對應的serveroop

圖1.1 motan-demo中的服務對應的zookeeper結構    設計

相關文章
相關標籤/搜索