三、服務注冊中心Zookeeper
3.1 服務注冊中心介紹
分布式服務框架是部署在多臺不同的機器上的,
例如:服務A是訂單相關的處理服務,服務B是訂單的客戶的相關資訊服務,但是此時有個需求需要在服務A中獲取訂單客戶的資訊,此時面臨的問題如下圖所示:

總之需要面臨的問題就是:兩者之間是如何通信的呢?
這就需要通過注冊中心來解決了,
首先在服務啟動的時候,將服務提供者資訊主動上報到服務注冊中心進行服務注冊,服務呼叫者啟動的時候,將服務提供或者資訊從注冊中心下拉倒服務呼叫者本機快取,當需要呼叫服務時,從本地快取串列中找到服務提供者的地址串列,基于某種負載均衡策略(隨機、輪詢、一致性Hash等)選擇一臺服務器發起遠程呼叫,
Zookeeper其實就是實作這些功能的分布式協調服務,
3.2 zookeeper介紹
-
zookeeper簡介
ZooKeeper是由雅虎開發并開源的分布式協調服務,ZooKeeper提供了統一命名服務、配置管理、分布式鎖等基礎服務,基于這些基礎服務,我們可以實作集群管理、軟負載、發布/訂閱、命名服務等功能,
Zookeeper 是 Apache Hadoop 的子專案,是一個樹型的目錄服務,支持變更推送,適合作為 Dubbo 服務的注冊中心,工業強度較高,可用于生產環境,并推薦使用 ,
-
zookeeper的樹型目錄
zookeeper的樹型目錄類似于我們電腦上的檔案系統:

zookeeper樹型結果目錄:

- 服務提供者(Provider)啟動時:向/dubbo/com.test.UserServiceBo/providers目錄下寫入自己的URL地址;
- 服務消費者(Consumer)啟動時:訂閱/dubbo/com.test.UserServiceBo/providers目錄下的提供者URL地址,并向/dubbo/com.test.UserServiceBo/consumers目錄下寫入自己的URL地址;
- 監控中心(Monitor)啟動時:訂閱/dubbo/com.test.UserService目錄下的所有服務提供者和消費者URL地址,
小貼士:
在專案中,一般要配置多個注冊中心zookeeper,以防出現意外時程式直接死掉!
3.3 在windows下安裝zookeeper
-
前期準備
下載zookeeper

zookeeper下載地址:http://archive.apache.org/dist/zookeeper/,準備JDK
由于ZooKeeper需要JDK,所以還要下載JDK,然后需要配置系統的環境變數"JAVA_HOME"(名稱需要完全一致),其值為JDK的檔案夾所在路徑(根據自己下載的路徑配置),

-
介紹
bin檔案目錄:以.sh結尾的腳本運行在UNIX平臺,以.cmd結尾的腳本則用于Windows,
conf目錄:保存組態檔,(zoo.cfg是默認配置,)
lib目錄:包含了java的JAR檔案,它們是運行ZooKeeper需要的第三方檔案, -
配置
Zookeeper 的組態檔在 conf 目錄下,這個目錄下有 zoo_sample.cfg 和log4j.properties,我們需要做的就是將 zoo_sample.cfg 檔案復制一份并命名為 zoo.cfg(也可以直接將zoo_sample.cfg 檔案改名為 zoo.cfg),因為 Zookeeper 在啟動時會找這個檔案作為默認組態檔,
▲ tickTime:這個時間是作為 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳,
▲ dataLogDir:顧名思義就是 Zookeeper 保存日志檔案的目錄,
▲ dataDir:顧名思義就是 Zookeeper 保存資料的目錄,默認情況下,Zookeeper 將寫資料的日志檔案也保存在這個目錄里,
▲ clientPort:這個埠就是客戶端連接 Zookeeper 服務器的埠,Zookeeper 會監聽這個埠,接受客戶端的訪問請求, -
啟動zookeeper服務
啟動zookeeper服務,到/bin檔案夾下,用命令列運行 zkService.cmd命令(雙擊),看到Starting servicer 并且沒有報錯就說明啟動成功,

-
停止zookeeper服務
直接關閉視窗即可,
3.4 在Linux下安裝zookeeper
-
前期準備
下載zookeeper

zookeeper下載地址:http://archive.apache.org/dist/zookeeper/,
注意:
linux下載的后綴名是:.gz準備JDK
由于ZooKeeper需要JDK,所以還要下載JDK,然后需要配置系統的環境變數"JAVA_HOME"(名稱需要完全一致),其值為JDK的檔案夾所在路徑(根據自己下載的路徑配置),

-
介紹
bin檔案目錄:以.sh結尾的腳本運行在UNIX平臺,以.cmd結尾的腳本則用于Windows,
conf目錄:保存組態檔,(zoo.cfg是默認配置,)
lib目錄:包含了java的JAR檔案,它們是運行ZooKeeper需要的第三方檔案, -
配置
引入壓縮包
把zookeeper的壓縮包檔案zookeeper-3.4.6.tar.gz上傳至linux系統下的/usr/local目錄下(直接將此壓縮包拖進linux里即可),
解壓壓縮包:
使用解壓命令tar -zxvf zookeeper-3.4.5.tar.gz
[root@localhost local]# tar -zxvf zookeeper-3.4.6.tar.gz創建data目錄:
進入zookeeper-3.4.6目錄中,創建data目錄
使用命令創建data目錄:
mkdir datazookeeper默認配置:
進入conf目錄,把zoo_sample.cfg復制一份,命名為zoo.cfgcd conf #進入conf目錄中 cp zoo_sample.cfg zoo,cfg #復制一份,改名為zoo.cfg修改屬性:
打開zoo.cfg檔案,修改dataDir屬性dataDir=/usr/local/zookeeper-3.4.6/data #這是絕對路徑 dataDir=../data #相對路徑(推薦使用)關閉防火墻,開放埠號(zookeeper默認埠為2181)
firewall-cmd --zone=public --add-port=2181/tcp --permanent #永久開放2181埠號 firewall-cmd --reload #重新加載,立即生效 -
啟動zookeeper服務
進入zookeeper的bin目錄,啟動服務命令(此處開啟)
cd /usr/local/zookeeper-3.4.6/bin #進入bin目錄中 ./zkServer.sh start #開啟zookeeper -
停止zookeeper服務
停止服務命令
./zkServer.sh stop #停止zookeeper查看服務狀態
./zkServer.sh status #查看狀態
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295366.html
標籤:其他
