基於netty手寫RPC框架

代碼目錄結構

基於netty手寫RPC框架

  • rpc-common存放公共類
  • rpc-interface為rpc調用方需要調用的接口
  • rpc-register提供服務的註冊與發現
  • rpc-client為rpc調用方底層實現
  • rpc-server為rpc被調用方底層實現
  • rpc-sample-client就是使用自實現的rpc框架調用rpc-sample-server
  • rpc-sample-server就是rpc框架的被調用方

技術要點

1. 使用zookeeper作註冊中心,把被調用方的信息註冊上去

基於netty手寫RPC框架

基於netty手寫RPC框架

服務的註冊

服務的發現

2、自定義註解

註解RpcService標記被調用方的實現類,RpcClientService標記調用方的類需要生成代理類

3、調用方代理類的注入

掃描包下的RpcClientService註解,並生成代理類

獲取代理類

調用方底層基於netty的發送請求和接收響應

4、被調用方

獲取接口與實現類的對應關係

讀取調用方傳遞過來的接口名和參數,利用反射調用相應類並返回結果給前端

5、自定義rpc框架的使用

1、被調用方maven依賴

2、調用方maven依賴

3、被調用方實現類加上註解RpcService,裡面的值是被調用的接口

4、調用方建立包名com.shuangyueliao.rpc.myinterface,新建要調用的接口,並加上註解RpcClientService

功能演示

1、啟動zookeeper,如需要修改zookeeper連接地址,請修改rpc-sample-server和rpc-sample-client的配置文件application.properties中的配置項zookeeper.url
2、運行rpc-sample-server(被調用方)RpcBootstrap的main方法啟動被調用方
3、運行rpc-sample-client(調用方)的StartApp的main方法啟動調用方
4、瀏覽器輸入http://localhost:8090/order請求rpc-sample-client,rpc-sample-client會RPC調用rpc-sample-server

基於netty手寫RPC框架

基於netty手寫RPC框架

項目地址


分享到:


相關文章: