0
点赞
收藏
分享

微信扫一扫

【Python使用】Python之RPC开发讲解第2篇:RPC结构,RPC消息协议

RPC结构

RPC的设计思想是力图使远程调用中的通讯细节对于使用者透明,调用双方无需关心网络通讯的具体实现。因而实现RPC要进行一定的封装。

RPC原理上是按如下结构流程进行实现的。

流程:
  1. 调用者(Caller, 也叫客户端、Client)以本地调用的方式发起调用;
  2. Client stub(客户端存根,可理解为辅助助手)收到调用后,负责将被调用的方法名、参数等打包编码成特定格式的能进行网络传输的消息体;
  3. Client stub将消息体通过网络发送给对端(服务端)
  4. Server stub(服务端存根,同样可理解为辅助助手)收到通过网络接收到消息后按照相应格式进行拆包解码,获取方法名和参数;
  5. Server stub根据方法名和参数进行本

RPC消息协议

在实现RPC调用时,通讯双方传输的数据(消息)如何表达描述,设计时一般会考虑两个目标

  • 性能高

性能高包括两点:

  1. 将原始数据转换为消息数据的速度快
  2. 转换后的消息数据体积小
  • 跨语言

RPC调用没有要求调用双方的编程语言必须相同,如果能做到跨语言调用是最好,这会方便产品开发中不同的功能服务以最合适的语言实现,然后使用RPC实现彼此调用。因此RPC调用中传输的消息数据应该尽量能让跟多的语言支持。

本中仅以Python为例进行讲解。

1. 边界

在网络传输中,一方可能连续向另一方多次发送消息,收到数据的一方如何界定数据中包含几条消息,这便是消息边界问题。

考虑TCP传输控制协议,在一条TCP链接中可以多次发送数据,如果发送的数据过大,就会被T

举报

相关推荐

0 条评论