1 簡介
1 注冊中心采用zookeepr
2 接口調用采用netty (需要相容spring)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLyQWZ4QWYxAjZxETNwIjZhF2MlRTN5cTNkJTMmN2YkNzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2 工程介紹
1 netty-rpc
core: netty rpc 核心包 公用編解碼、注解、handler、格式定義、工具類等功能。
client:服務消費者依賴包,提供服務發現、channel複用、監聽服務提供資訊等功能。
server:服務提供者依賴包,提供服務注冊、client調用響應等功能。
2 spring-demo:
api:定義相關接口
spring-customer: 服務消費。
spring-provider: 服務提供者。
3 流程介紹
3.1 服務提供者
1 啟動服務提供者,掃描RoshRpcService注解,并把相關接口注冊相關資訊到zk上。
2 啟動NettyServer,提供rpc服務響應。
3.2 服務消費者
1 啟動服務消費者,發現zk相關服務資訊,并且監聽變化。
2 後置處理器,收集RoshRpcRemote相關注解service,采用動态代理進行加強。
3.3 編解碼
1 TCP粘包、半包采用LengthFieldBasedFrameDecoder,固定header,變body。
2 請求格式RpcRequest、響應格式為RpcResponse,根據用戶端/服務端場景不同,采用不同的RpcResponse、RpcRequest 編解碼器。
4 項目示範
1 依次啟動spring-provider、spring-customer。
2 檢視zk服務注冊資訊。
3 通路消費者接口
5 代碼位址
https://gitee.com/zhurongsheng/netty-rpc