rpc
RPC 的定义
RPC 的全称是 Remote Procedure Call,即远程过程调用,实现了跨网络调用其他服务就像调用本地服务一样的模式。简单来说 RPC 替我们封装了网络层繁琐的开发开发,通过增强代理的方式嵌入进去,这样我们只需要编写业务逻辑即可调用远程服务。RPC 的使用范围非常广泛,不仅仅约束在接口维度,包括MQ Client 和 MQ Server 间的通信、Redis Client 和 Redis Server 间的通信、JDBC 和 MySQL 间的通信都属于 RPC 通信。

协议
由于跨网络的特性,一次 RPC 调用通常要经过序列化、协议编码、解码、反序列化的过程。当被调用者接收到一堆二进制字节后首先要对这些二进制进行解码和反序列化,这样才能定位到本次调用的具体方法。基于性能的考虑,RPC 调用通常是基于 TCP 层,TCP 接收到的二进制数据是没有分隔的,TCP 窗口可能会对多次调用进行合并,下游必须解析出合并前的数据边界,这就需要指定的协议格式了。也就是说 RPC 协议是为了避免语义不一致的事情发生,需要在发送请求的时候设定一个边界,然后在收到请求的时候按照这个设定的边界进行数据分割。这个边界语义的表达,就是所说的协议。