【RPC】RPC基础(二)RPC协议

文章目录

  • RPC核心原理
    • 1. RPC基础
      • 1.2 RPC协议
        • 为什么设计RPC协议
        • 如何设计RPC协议
        • 可扩展协议的设计
        • 思考

RPC核心原理

1. RPC基础

1.2 RPC协议

RPC协议和HTTP协议一样都属于应用层协议

协议的作用:

​ 协议就像是文章中的标点符号、段落格式等规定,有了这些我们能明白一句话和一个段落到那里结束。RPC调用中,请求信息转换为二进制写入本地Socket,再通过网卡发往网络设备。二进制码有可能被划分为多个不同数据块进行发送,发送过程中还可能与其他数据块进行合并,协议的作用就是标定接收方拿到二进制数据后识别出RPC请求的部分,保证发送时的语义与接收到的语义的一致。

为什么设计RPC协议

RPC负责应用间通讯,性能需求较高,相比HTTP协议来说,需要设计更紧凑的私有RPC协议来满足性能需求

  • HTTP协议包有太多冗余信息,数据包大小往往比请求数据本身要大得多
  • HTTP协议为无状态协议,每次请求到要重新建立连接,相应完成就关闭连接,与RPC需求不符
如何设计RPC协议

首先要知道协议中要放哪些内容

  • 协议头:协议长度、序列化方式、协议标示、消息ID、消息类型等
    • 协议头由长度固定的参数构成
  • 协议体:请求接口方法,参数值和扩展属性
    • 协议体长度可变,划分由协议头中协议长度决定

【RPC】RPC基础(二)RPC协议_第1张图片

可扩展协议的设计

非定长的协议头,和协议体一样固定参数中设置一个头长度,并添加一个不定长协议头部分

【RPC】RPC基础(二)RPC协议_第2张图片

思考

RPC 里面,我们是怎么实现请求跟响应关联?

请求时带上消息id,响应时,响应体里面带上请求消息的id,这样可以进行关联

你可能感兴趣的:(【RPC】核心原理,java,rpc,分布式)