RPC小谈

RPC:
  • 应用分布在不同的机器上,无法共用内存空间,或者在一台机器内通过本地调用无法完成相关的需求,比如不同的系统之间的通讯,甚至不同组织之间的通讯。此外由于机器的横向扩展,需要在多台机器组成的集群上部署应用等等。
  • RPC是远程过程调用协议,允许程序调用另一个地址空间的过程或函数,不需要显示编码远程调用细节
  • 使程序员从网络处理中释放出来,在分布式环境下编程变得简单,无需关心底层网络实现细节和协议仅关注业务逻辑实现
  • RPC的核心问题在于进程间通信时,减少网络编码的成本和出错概率
  • 核心内容:通信协议、编码协议、序列化格式

 

RPC调用过程:
  1. 客户端对传输内容进行序列化、协议编码、网络传输到远程服务器端
  2. 服务端接收内容后解码、反序列化完成数据逻辑计算,产生输出后以同样的方式传递给客户端
RPC框架:
  • 除了调用过程的基本上功能外,通常还会有负载均衡、容错机制、服务注册发现功能
  • 服务注册发现:鉴别调用哪些机器,哪些机器可用
  • 容错机制:分布式环境下网络不稳定问题
  • 负载均衡:合理使用机器和网络资源,保证各个机器的稳定程度
RPC和HTTP:
  • HTTP :提供标准的报文格式,都认可的通讯特性等,对外暴露出标准的网络编程接口。
  • RPC :针对某些领域的特定场景提供具有更灵活、可定制的、更加保密的协议。可以把RPC理解是通讯协议之上,站在服务的角度,做的更高一级的封装。
  • RPC框架:dubbo、motan、rpcx、grpc、thrift
RPC架构的基础组件:
  1. 客户端(Client):服务调用方(服务消费者)
  2. 客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数数据信息打包成网络消息,再通过网络传输发送给服务端
  3. 服务端存根(Server Stub):接收客户端发送过来的请求消息并进行解包,然后再调用本地服务进行处理
  4. 服务端(Server):服务的真正提供者
调用核心原理图

 

RPC服务调用过程:
  1. Client通过本地调用方式调用服务
  2. Client Stub接收到请求后将方法、入参等信息通过序列化组装
  3. Client Stub找到远程的服务地址,并通过网络发生消息给Server
  4. Server Stub接收到消息后进行解码(反序列化)
  5. Server Stub根据解码结果调用本地服务进行相关处理
  6. 本地服务处理后将结果会返回给Server Stub
  7. Server Stub将返回结果通过序列化组装并通过网络发送给Client
  8. Client Stub接收消息并进行解码(反序列化)
  9. Client得到最终结果
posted @ 2025-04-16 18:31  难得  阅读(16)  评论(0)    收藏  举报