rpc框架的理解

什么是rpc框架呢

RPC是远程过程调用(Remote Procedure Call)。 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制,让使用者不必显式的区分本地调用和远程调用。

以上是百度的原句,确实不太好理解,换句简单的话来讲,就是Springboot项目中,Controler层需要注入Serevice的对象,从而调用Service层的方法,但是请思考一个问题,如果本地只是声明了一个Service接口,并没有做实现类,真正的实现类是你们公司别的项目组负责,现在你想要调用他们的实现类完成注入并调用她们实现类的方法,该怎么办呢?

rpc框架就是解决该问题,他可以实现就像没有通过网络请求一样,就好像本地有这个实现类一样,这就是rpc框架的强大之处

 以上方法为本地调用远端方法的代码,在没有说明使用了rpc框架思路前,是不是就是觉得 它普通的像本地自己调用一样

rpc框架的工作原理

首先,我们可以想一下,既然本地没有这样的资源,要想得到就要通过网络,对吧,所以rpc框架需要结合一些网络框架,比如netty,tomcat,甚至Socket也可以,只要能够接收和发送网络请求就行

内部的逻辑也很简单,简单一点来说,首先,本地想要访问某一接口实现类的方法,这时就可以通过反射获得到一系列信息,比如接口名,方法名,参数类型等等

然后再将信息封装到一个RpcRequest类中的body中,可以看到该类实现了序列化接口Serializable,将信息包装到RpcRequest的对象中是为了模拟rpc协议,加上协议后肯定会有header,body嘛,将接口信息等等存在body中

客户端需要做的就是将信息封装成RpcRequest对象,然后发送,还需要将返回的RpcResponse对象解析。

 然后服务器能够解析所有的RpcRequest对象,读取出body,然后通过反射创造出对象,并将结果封装到RpcResponse,然后客户端能够对返回的对象解包并返回

这就是rpc的工作原理

当然,也没这么简单,实际操作也不会就单纯的客户端与服务端沟通,一般是一堆客户端与一个注册中心,注册中心只是负责中转,去寻找应该向哪个客户端发送。

基本流程就是,本地客户端调用方法,代理类会将其调用的接口方法等一系列信息,序列化封装成rpc请求,然后发送给服务端,服务端解包并调用方法,然后执行结果再装包发给客户端,客户端解包然后将结果展示出来,即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值