Dubbo+zookeeper基本概念

一、Dubbo官網文檔

http://dubbo.apache.org/en-us/docs/user/quick-start.html

二、zookeeper下載與配置

  • 下載:

http://mirrors.hust.edu.cn/apache/zookeeper/或者https://archive.apache.org/dist/zookeeper/

  • 解壓
  • 配置:

在conf目錄下將zoo_sample.cfg複製一份改名爲zoo.cfg(因爲默認加載zoo.cfg文件)

#zoo.cfg 的內容
#   心跳檢查的時間 2秒
tickTime=2000
# 初始化時 連接到服務器端的間隔次數,總時間10*2=20秒
initLimit=10
# ZK Leader 和follower 之間通訊的次數,總時間5*2=10秒 
syncLimit=5
# 存儲內存中數據庫快照的位置,如果不設置參數,更新事務日誌將被存儲到默認位置。
dataDir=C:\\test\\tmp\\zookeeper
# 錯誤日誌的存放位置
dataLogDir=C:\\test\\log\\zookeeper

# ZK 服務器端的監聽端口
clientPort=2181

主要修改dateDir和dataLogDir文件

三、Dubbo和zookeeper概念講解

(轉載於:https://www.cnblogs.com/a8457013/p/7818925.html

(一)dubbo是什麼?

1)本質:一個Jar包,一個分佈式框架,,一個遠程服務調用的分佈式框架。

既然是新手教學,肯定很多同學不明白什麼是分佈式和遠程服務調用,爲什麼要分佈式,爲什麼要遠程調用。我簡單畫個對比圖說明(圖1看到圖2。畫板畫的,勿噴)。

「dubbo專題」dubbo其實很簡單,就是一個遠程服務調用的框架(1)


你想一下,以前什麼的都在一個服務器上,調用方法直接就自然而然調用了,沒啥問題。現在因爲需求增多拆分了這麼多個,部署在不同的服務器上,那是不是相對以前都在一個服務器上,現在分佈式後,web層調用service層的服務變成了遠程調用?那怎樣像以前那樣都在一個服務器上自然而然調用方法呢?dubbo來解決。這就是下面dubbo的好處。

(二)Dubbo的好處?

1.透明化的遠程方法調用,就像調用本地方法一樣調用遠程方法,只需簡單配置,沒有任何API侵入。

2.軟負載均衡及容錯機制,可在內網替代F5等硬件負載均衡器,降低成本,減少單點。

3. 服務自動註冊與發現,不再需要寫死服務提供方地址,註冊中心基於接口名查詢服務提供者的IP地址,並且能夠平滑添加或刪除服務提供者。(下面講解)

Dubbo採用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring加載Dubbo的配置即可,Dubbo基於Spring的Schema擴展進行加載。

(三)dubbo架構圖如下所示:

講解他的架構圖之前,我們先普及下幾個概念。

節點角色說明:

Provider(生產者): 暴露服務的服務提供方。

Consumer(消費者): 調用遠程服務的服務消費方。

如圖,我們可以簡單理解爲web1234需要調用service1234的服務,所以web1234是消費者,service1234是生產者。

「dubbo專題」dubbo其實很簡單,就是一個遠程服務調用的框架(1)

那如果按照上面,消費者調用生產者的服務,那是不是如下圖:

「dubbo專題」dubbo其實很簡單,就是一個遠程服務調用的框架(1)

你看着暈不暈?暈不暈?暈不暈?反正我是暈了,萬一分佈式得更多呢?,所以我們需要他:

Registry(註冊中心): 服務註冊與發現的註冊中心。dubbo推薦的是zookeeper。什麼是zookeeper?zookeeper是用於分佈式中一致性處理的框架。更多的可以查看我之前的文章:這麼說吧,zookeeper 很簡單,其實就是個框架,是一致性處理用的。簡單的講,zookeeper就是個中介,賣樓的(生產者)把樓盤信息放在中介(註冊中心)那裏,想買樓的(消費者)去中介那裏獲得樓盤資源清單。於是,我們的圖變成了這樣:

「dubbo專題」dubbo其實很簡單,就是一個遠程服務調用的框架(1)

是不是好很多了?還不夠, 我們還需要個監控中心(幹嘛用的?當然是監控用的,調用失敗怎麼辦?掛了怎麼辦?): Monitor: 統計服務的調用次調和調用時間的監控中心。(不畫圖了)

然後,Provider放在容器裏運行,就叫做Container服務運行容器。(不畫圖了)

最終dubbo架構,如圖(從0開始看起):

「dubbo專題」dubbo其實很簡單,就是一個遠程服務調用的框架(1)

自己腦海裏按照上圖走了一遍後,看看自己想的是不是和下面說明一樣。

0 服務容器負責啓動,加載,運行服務提供者。

1. 服務提供者(生產者)在啓動時,向註冊中心註冊自己提供的服務。

2. 服務消費者在啓動時,向註冊中心訂閱自己所需的服務。

3. 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。

4. 服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。

5. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。

四、原博客地址

https://www.cnblogs.com/a8457013/p/7818925.html

感謝博主^_^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章