Dubbo+zookeeper 最簡單的分佈式搭建
大家好,我是Andy,那個永遠積極向上且自戀的Andy
介紹:本例採用 dubbo+zookeeper 搭建分佈式系統,環境 jdk1.8
運行介紹:啓動 zookeeper - 啓動服務提供者 - 啓動服務消費者
整個項目的代碼已上傳到github,https://github.com/brotherAndy/dubbo,歡迎查看。
分佈式架構:
1.當垂直應用越來越多,應用之間交互不可避免,將核心業務抽取出來,作爲獨立的服務,逐漸形成穩定的服務中心,前端應用能更快速的響應多變的市場需求。
2.此時,用於提高業務複用及整合的 分佈式服務框架(RPC) 是關鍵。
Dubbo 是什麼
- 一款分佈式服務框架
- 高性能和透明化的RPC遠程服務調用方案
- SOA服務治理方案
Dubbo 架構流程圖
Provider:服務提供方
Consumer:服務消費者
Registry:註冊中心
Monitor:統計服務調用次數和調用時間的監控中心
調用流程
0.啓動服務提供者。
1.服務提供者在啓動時,向註冊中心註冊自己提供的服務。
2.服務消費者在啓動時,向註冊中心訂閱自己所需的服務。
3.註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。
4.服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
5.服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。
註冊中心
服務提供方:針對所提供的服務到註冊中心發佈。
服務消費方:到服務中心訂閱所需的服務。
對於任何一方,不論服務提供方或者服務消費方都有可能同時兼具兩種角色,即需要提供服務也需要消費服務。
架構搭建案例
1.zookpeeper 安裝
把包下載後,解壓到目錄,例如:D:\software\work\zookeeper (解壓後更名爲zookeeper)
修改zoo_sample.cfg 文件名(D:\software\work\zookeeper\conf) 爲 zoo.cfg
主要更改配置文件裏面的日誌目錄,如下:
dataDir=D:\zookeeper\data
dataLogDir=D:\zookeeper\log
啓動
進入到bin目錄,並且啓動zkServer.cmd,如圖:
2.創建maven工程
工程分爲4個結構
- dubbo 工程,主工程,主要導入公共jar包等
- dubbo-api 工程,公共接口
- dubbo-provider 工程,服務提供者
- dubbo-consumer-user 和 dubbo-consumer 工程,服務消費者
(注:每個工程都是獨立的,通過maven 引入父子關係)
1.創建dubbo 的maven 主工程
創建步驟省略,主要導入相關jar包等,具體請查看給到源碼的pom.xml,此工程暫僅配置pom.xml,沒有其他操作
2.創建dubbo-api 的maven 接口工程
主要定義接口,並配置好pom.xml
3.創建dubbo-provider 的maven 工程
服務提供者,實現公共接口的實現,此實現對消費者隱藏
加入公共接口所在的依賴
接口實現
用Spring配置聲明服務
服務者啓動(前提啓動 zookeeper)
4.創建dubbo-consumer-user 的maven 工程(可以有多個consumer,配置跟上)
服務消費者,實現公共接口的實現,調用服務
通過Spring引用服務
啓動consumer ,調用服務
5.運行項目,順序:zookeeper –> dubbo-provider –> dubbo-consumer-user
運行結果
3.dubbo-admin 搭建
提供界面化管理dubbo 服務
下載地址
https://itmayun.ctfile.com/fs/3011962-230676583
下載後把war包放入tomcat的webapps目錄下,啓動tomcat
瀏覽器輸入:http://localhost:8080/dubbo-admin/
默認賬號: root 密碼:root
效果圖:
服務列表
服務詳細
整個項目的代碼已上傳到github,https://github.com/brotherAndy/dubbo,歡迎查看。
https://blog.csdn.net/hua1586981/article/details/79195111