RPC详解

RPC是什么

RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议的存在,例如TPC/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。

rpc最原始的过程:

1:客户端处理过程中调用client sub,就像调用本地方法一样,传入参数 2:client sub将参数编组为消息,然后通过系统调用向服务端发送消息 3:客户端本地的操作系统将消息从客户端发送到服务端 4:服务端将接收到的数据包传递给server sub 5:server sub将接收到的数据解组为参数 6:server sub再调用服务端的过程,过程执行的结果以反方向的相同步骤响应给客户端。

我们不用

我们用演进的rpc过程,因为原始的RPC非常非常麻烦,你需要了解cient和server的全部内容,

演进就是把网络部分进行封装,降低了耦合性。

比如创建一个stub类作为代理:

在 server中只需引用stub的方法(这是初步的演进)

非常不完善,下面看进一步完善:

运用代理模式中的动态代理(通过jdk,new一个proxy对象)

但数据还是写死了,请看再进一步演进:

将会用到的方法传输到

服务器端读入stub传来的方法名,参数类型等等。

这样可以调用随意接口,但不能随意调用接口,所以还是不完善,返回值没有处理:

在进一步完善中返回值用object封装。支持任意类型,比较简单,不西索了

请看第六次完善:

可将stub屏蔽, 

client:

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RPC(Remote Procedure Call)和gRPC(Google Remote Procedure Call)都是用于远程过程调用的协议。它们允许客户端应用程序像调用本地函数一样调用远程函数,从而简化了分布式系统中的通信。 RPC是一种通用的协议,可以使用不同的编码格式和传输协议来实现。RPC的编解码过程是在客户端和服务器端之间进行的,这意味着它可以使用不同的编码格式来传输数据。 gRPC是由Google开发的一种基于RPC的框架,它使用Protocol Buffers作为默认的编码格式,并且使用HTTP/2作为传输协议。gRPC提供了强类型的接口定义语言(IDL),可以用来定义RPC服务的接口和消息格式,从而使得客户端和服务器端可以生成相应的代码来进行通信。 相比于RPC,gRPC具有以下优势: 1. 高效的编码格式:Protocol Buffers是一种高效的二进制编码格式,它可以大幅减少数据传输的大小,从而提高网络带宽的利用率。 2. 高效的传输协议:HTTP/2是一种高效的传输协议,它支持多路复用和头部压缩等特性,可以减少网络延迟和带宽占用。 3. 强类型的IDL:gRPC提供了一种强类型的IDL,可以用来定义服务接口和消息格式,从而使得客户端和服务器端可以生成相应的代码来进行通信,减少了手动编写和解析请求和响应的工作量。 4. 多语言支持:gRPC支持多种编程语言,包括C++、Java、Python、Go等,可以在不同的平台上进行通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值