引言
微服務最核心的注冊服務,以前一直用的springcloud,在聽了網絡視頻對dubbo的講解后加深理解,看了csdn講解后還原了代碼實現。
框架理論
Dubbo 特點:
是一個RPC框架,SOA框架
底層采用mina,netty長連接進行傳輸!典型的provider和cusomer模式!
有服務治理功能,提供服務的注冊和發現!用zookeeper實現注冊中心!
原理:
啟動時候服務端會把所有接口注冊到注冊中心,並且訂閱configurators,服務消費端訂閱provide,configurators,routers,訂閱變更時,zk會推送providers,configuators,routers,啟動時注冊長連接,進行通訊!proveider和provider啟動后,后台啟動定時器,發送統計數據到monitor(監控中心)!提供各種容錯機制和負載均衡策略!!
圖解:
盜圖,zookeeper 作為registry
實現步驟
組件:
Zookeeper、netty 。
(Zookeeper容器,映射類和服務, 簡易版完全可以用Map<類名,List<服務>>替代,此處用到zookeeper的持久化節點、臨時節點)
步驟:
- 安裝zookeeper ,java程序中建立連接。
- 服務注冊,將對象名綁定到服務地址。com.dubbo.Icsdn -> 127.0.0.1:8888
- 消費端通過classname請求zookeeper返回服務地址IP:port
- 消費端Netty請求ip:port/classname/method
- 服務端netty回復classname/method
代碼實現: