首页 > 技术文章 > RPC

KL2016 2021-03-09 17:22 原文

RPC 全称是 Remote Procedure Call,  也称为远程过程调用,通过 RPC 我们可以像调用本地方法一样远程调用某个方法。这个「远程的方法」可能部署在不同的机器,使用不同的开发语言开发等等。

RPC 是解决进程间通信的技术。部署在同一台机器上的多个进程,实际是远程的一种情况。Dubbo 在 Java 应用中的使用,对于 RPC 来说,是两方使用相同的编程实现的一种情况。

 

RPC 需要在一条 TCP 链接上进行多次消息传递。

     基于 TCP 链接之上的单条消息如果过大,就会被网络协议栈拆分为多个数据包进行传送。如果消息过小,网络协议栈可能会将多个消息组合成一个数据包进行发送。对于接收端来说它看到的只是一串串的字节数组,如果没有明确的消息边界规则,接收端是无从知道这一串字节数组究竟是包含多条消息还是只是某条消息的一部分。

  (1)用特殊符号区分:“\r\n”--------------->HTTP 和 Redis 协议就大量使用了\r\n 分割符

  (2)消息发送端在每条消息的开头增加一个 4 字节长度的整数值,标记消息体的长度.

注:(HTTP 协议是一种基于特殊分割符和长度前缀法的混合型协议。比如 HTTP 的消息头采用的是纯文本外加\r\n 分割符,而消息体则是通过消息头中的 Content-Type 的值来决定长度。HTTP 协议虽然被称之为文本传输协议,但是也可以在消息体中传输二进制数据数据的,例如音视频图像,所以 HTTP 协议被称之为「超文本」传输协议。)

 

推荐阅读