RPC开发的四大要素

RPC开发的四大要素


RPC(Remote Procedure Call)远程过程调用是一种协议,它允许一个程序调用另一个地址空间(通常是远程计算机上)的过程或函数,就像调用本地过程一样。RPC开发中的四大要素包括:

  1. 客户端(Client):服务调用发起方,也称为服务消费者。

  2. 客户端存根(Client Stub):该程序运行在客户端所在的计算机机器上,主要用来存储要调用的服务器的地址,并负责将客户端请求远端服务器程序的数据信息打包成数据包,通过网络发送给服务端。

  3. 服务端(Server):远端的计算机机器上运行的程序,其中有客户端要调用的方法。

  4. 服务端存根(Server Stub):接收客户程序通过网络发送的请求消息数据包,并调用服务端中真正的程序功能方法,完成功能调用。服务端程序根据已有业务逻辑执行调用过程,待业务执行结束,将执行结果返回给服务端Stub程序23。

这四大要素协同工作,使得远程方法调用能够在分布式系统中顺利进行,同时隐藏了底层的网络通信细节,使开发人员可以像调用本地方法一样调用远程服务。

了解完了 RPC 技术的组成结构我们来看⼀下具体是如何实现客户端到服务端的调⽤的。实际上,如果我们想要在⽹络中的任意两台计算机上实现远程调⽤过程,要解决很多问题,⽐如:

  • 两台物理机器在⽹络中要建⽴稳定可靠的通信连接。
  • 两台服务器的通信协议的定义问题,即两台服务器上的程序如何识别对⽅的请求和返回结果。也就是说两台计算机必须都能够识别对⽅发来的信息,并且能够识别出其中的请求含义和返回含义,然后才能进⾏处理。

这其实就是通信协议所要完成的⼯作。

在上述图中,通过 1-10 的步骤图解的形式,说明了 RPC 每⼀步的调⽤过程。具体描述为:
在上述图中,通过 1-10 的步骤图解的形式,说明了 RPC 每⼀步的调⽤过程。具体描述为:

  • 1、客户端想要发起⼀个远程过程调⽤,⾸先通过调⽤本地客户端 Stub 程序的⽅式调⽤想要使⽤的功能⽅法名;
  • 2、客户端 Stub 程序接收到了客户端的功能调⽤请求,将客户端请求调⽤的⽅法名,携带的参数等信息做序列化操作,并打包成数据包。
  • 3、客户端 Stub 查找到远程服务器程序的 IP 地址,调⽤ Socket 通信协议,通过⽹络发送给服务端。
  • 4、服务端 Stub 程序接收到客户端发送的数据包信息,并通过约定好的协议将数据进⾏反序列化,得到请求 的⽅法名和请求参数等信息。
  • 5、服务端 Stub 程序准备相关数据,调⽤本地 Server 对应的功能⽅法进⾏,并传⼊相应的参数,进⾏业务 处理。
  • 6、服务端程序根据已有业务逻辑执⾏调⽤过程,待业务执⾏结束,将执⾏结果返回给服务端 Stub 程序。
  • 7、服务端 Stub 程序 将程序调⽤结果按照约定的协议进⾏序列化, 并通过⽹络发送回客户端 Stub 程 序。
  • 8、客户端 Stub 程序接收到服务端 Stub 发送的返回数据,对数据进⾏反序列化操作, 并将调⽤返回的数据传递给客户端请求发起者。
  • 9、客户端请求发起者得到调⽤结果,整个 RPC 调⽤过程结束。

通过上⽂⼀系列的⽂字描述和讲解,我们已经了解了 RPC 的由来和 RPC 整个调⽤过程。我们可以看到 RPC 是⼀系列操作的集合,其中涉及到很多对数据的操作,以及⽹络通信。因此,我们对 RPC 中涉及到的技术做⼀个总结和分析:

  • 1、动态代理技术: 上⽂中我们提到的 Client Stub 和 Sever Stub 程序,在具体的编码和开发实践过程中,
    都是使⽤动态代理技术⾃动⽣成的⼀段程序。
  • 2、序列化和反序列化: 在 RPC 调⽤的过程中,我们可以看到数据需要在⼀台机器上传输到另外⼀台机器 上。在互联⽹上,所有的数据都是以字节的形式进⾏传输的。⽽我们在编程的过程中,往往都是使⽤数据对象,因此想要在⽹络上将数据对象和相关变量进⾏传输,就需要对数据对象做序列化和反序列化的操作。

序列化: 把对象转换为字节序列的过程称为对象的序列化,也就是编码的过程。

反序列化: 把字节序列恢复为对象的过程称为对象的反序列化,也就是解码的过程。我们常⻅的 Json,XML 等相关框架都可以对数据做序列化和反序列化编解码操作。后⾯我们要学习的 Protobuf 协 议,这也是⼀种数据编解码的协议,在 RPC 框架中使⽤的更⼴泛。

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值