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