文章目录
- 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 里面,我们是怎么实现请求跟响应关联?
请求时带上消息id,响应时,响应体里面带上请求消息的id,这样可以进行关联