koalas-rpc
koalas-rpc(https://github.com/dromara/koalas-rpc) 是一個RPC 框架, 相比于 dubbo,它足夠簡單,無論是做二次開發還是想了解 RPC 原理,都有非常好的入手體驗。
項目啟動調用過程如下:
使用注解標注接口。
使用 zookeeper 作為注冊中心。客戶端從zk拉取可用的 IP
客戶端利用 spring 生成 代理類。 最終由代理類完成消息的序列化和發送。
服務端反射調用。
可以配置直連,也可以利用注冊中心,獲取一批的IP,然后進行負載均衡。
基本上 JavaRPC 框架都是這個套路:
先定義協議,一般是一個接口。
服務端實現這個接口。
客戶端直接調用這個接口。 因為客戶端引用的僅僅是一個接口,所以在調用之前,RPC框架要為這個接口生成了一個代理類, 在實際調用的時候,其實調用的是這個代理類,這個代理類代理的方法都是一個實現:就是將調用的信息(調用的類,方法,參數)進行封裝。
然后獲取所有的實現這個接口的服務端 IP(對應集群管理模塊)。
從這些IP 中選擇一臺(對應負載管理模塊)。
對調用信息序列化(序列化模塊模塊)。
最后發送(網絡通信模塊,http/tcp)。
對于服務端
掃描所有接口實現,將接口信息,連同服務器信息(IP、端口)一起注冊到注冊中心。
建立偵聽。
獲取到請求。
反序列化報文 。
解析出要調用的類,方法,參數,然后通過反射調用目標類和方法,并傳遞參數進去。 當然出于一定的目的也會對服務端的實現做一定的增強。
所以一般的 RPC 實現,都是客戶端使用代理實現,對應代理的實現方式,dubbo 使用的是Javassist,koalas-rpc使用的是 spring中 的功能。
個人注解版:
https://github.com/zhaoyb/koalas-rpc
總結
以上是生活随笔為你收集整理的koalas-rpc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CEO何文艺专访:铺开线下体验 助VR真
- 下一篇: linux (rm指令) 及误删除解决