RPC調用流程
RPC兩個核心模塊:通訊,序列化
序列化:爲了傳輸
Netty網絡傳輸
下圖爲Spring Cloud架構
dubbo中文 http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
HTTP SpringCloud(是一個生態)而dubbo是一個通信,Dubbo不會幹掉springCloud
Apache Dubbo是一款高性能,輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現
下圖爲dubbo架構
iniit表示初始化
async:異步
sync: 同步
只有invoke是同步的,其它全部是異步
notify:通知,佈告 invoke:執行,調用,引用
服務提供者(Provider):暴露服務的服務提供方,服務提供者在啓動時,向註冊中心註冊自己提供的服務
服務消費者(Consumer):調用遠程服務的服務消費放,服務消費者在啓動時,向註冊中心訂閱自己所需的服務,服務消費者,從提供者地址列表中,基於軟負載均衡算法, 選一臺提供者進行調用,如果調用失敗,再選一臺調用
註冊中心(Registry):註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者
監控中心(Monitor):服務消費者和提供則,在內存中累計調用次數和調用時間, 定時每分鐘發送一次統計數據到監控中心
調用關係說明
(1)服務容器負責啓動,加載,運行服務提供者
(2)服務提供者在啓動時,向註冊中心註冊自己提供的服務
(3)服務消費者在啓動時,向註冊中心訂閱自己所需的服務
(4) 註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者
(5)服務消費者,從提供地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
(6)服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心
註冊中心參考工具
(1) Multicast註冊中心
(2) Zookeeper註冊中心
(3) Nacos註冊中心
(4) Redis註冊中心
(5) Simple註冊中心
二安裝zookeeper
cmd D:\zookeeper\apache-zookeeper-3.6.0-bin\bin
肯能遇到問題:閃退!
解決方案:編輯zkServer.cmd文件末尾添加pause,即如下內容
echo on
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*
pause <---------------添加內容如下
endlocal
打開zookeeper服務器端口 zkServer.cmd
打開zookeeper客戶端 zkCli.cmd
四 使用zkCli.cmd 進行測試
ls / :列出zookeeper跟下保存的所有節點
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[dubbo, zookeeper]
[zk: localhost:2181(CONNECTED) 1] create -e /kuangshen 123
Created /kuangshen
[zk: localhost:2181(CONNECTED) 2] ls /
[dubbo, kuangshen, zookeeper]
[zk: localhost:2181(CONNECTED) 3]
[zk: localhost:2181(CONNECTED) 3] get /kuangshen
123
[zk: localhost:2181(CONNECTED) 4]
三安裝dubbo admin
dubbo本身並不是一個服務軟件。它其實就是jar包,能夠幫你的Java程序連接到zookeeper, 並利用zookeeper消費,提供服務
但是我們爲了讓用戶更好的管理衆多的dubbo服務, 官方提供了一個可視化的監控程序dubbo-admin,不過這個監控即使不安裝也不會影響使用
1 下載dubbo-admin地址
https://github.com/apache/dubbo-admin/tree/master
2解壓進入目錄
下載文件爲爲dubbo-admin-master.zip,如果有修改,可以修改如下配置
D:\Environment\dubbo-admin-master\dubbo-admin\src\main\resources\application.properties
3在項目目錄下打包dubbo-admin
cmd D:\Environment\dubbo-admin-master
D:\Environment\dubbo-admin-master>mvn clean package -Dmaven.test.skip=true
[INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] dubbo-admin ........................................ SUCCESS [ 26.544 s] [INFO] dubbo-ops .......................................... SUCCESS [ 0.033 s] [INFO] dubbo-monitor-simple ............................... SUCCESS [ 15.254 s] [INFO] dubbo-registry-simple .............................. SUCCESS [ 2.005 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 48.970 s [INFO] Finished at: 2020-03-25T12:25:22+08:00 [INFO] Final Memory: 52M/979M [INFO] ------------------------------------------------------------------------ D:\Environment\dubbo-admin-master> D:\Environment\dubbo-admin-master>cd dubbo-admin\target D:\Environment\dubbo-admin-master\dubbo-admin\target>dir 驅動器 D 中的卷是 新加捲 卷的序列號是 04EF-B31C 打包完成目標文件 D:\Environment\dubbo-admin-master\dubbo-admin\target 的目錄 2020/03/25 12:25 <DIR> . 2020/03/25 12:25 <DIR> .. 2020/03/25 12:24 <DIR> classes 2020/03/25 12:25 31,739,794 dubbo-admin-0.0.1-SNAPSHOT.jar 2020/03/25 12:24 878,297 dubbo-admin-0.0.1-SNAPSHOT.jar.original 2020/03/25 12:24 <DIR> generated-sources 2020/03/25 12:24 <DIR> maven-archiver 2020/03/25 12:24 <DIR> maven-status 2 個文件 32,618,091 字節 6 個目錄 158,328,262,656 可用字節 D:\Environment\dubbo-admin-master\dubbo-admin\target>java -jar dubbo-admin-0.0.1-SNAPSHOT.jar http://localhost:7001 root/root zookeeper: 註冊中心 dubbo-admin: 是一個監控管理後臺-查看我們註冊了哪些服務,哪些服務被消費了 Dubbo: jar包