打下rpc
什么是RPC RPC(Remote Procedure Call)是远程过程调用,比如说现在有两台服务器A, B,一个在A服务器上的应用想要调用B服务器上的应用提供的某个,由于不在两个方法不在一个内存空间,不能直接调用,需要通过网络表达调用的语义和传达调用的数据。常存在于分布式系统中。 RPC要解决的问题 建立通信:在客户端与服务端建立起数据传输通道。著名的 [gRPC]( grpc / grpc.io ) 使用的 http2 协议,也有如dubbo一类的自定义报文的tcp协议。 寻址:A服务器上的应用需要告诉RPC框架:B服务器地址、端口,调用函数名称。所以必须实现待调用方法到call ID的映射。 序列化与反序列化:由于网络协议都是二进制的,所以调用方法的参数在进行传递时首先要序列化成二进制,B服务器收到请求后要再对参数进行反序列化。恢复为内存中的表达方式,找到对应的方法进行本地调用,得到返回值。返回值从B到A的传输仍要经过序列化与反序列化的过程。序列化协议如基于文本编码的 xml json,也有二进制编码的 protobuf hessian等。 其实RPC需要了解的基本内容就是上面,我们最想知道这个名词与一般的HTTP相比有啥优势,解决了什么问题。 OSI模型 什么是Http 超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据