在日常的开发过程中随处可见rpc的身影,特别是在微服务项目流行的今天,各个服务之间基本上都采用rpc进行通信。
那么这里就好好介绍一下RPC吧。
什么是RPC
RPC的全程是Remote Procedure Call,远程过程调用。RPC的目标就是为了屏蔽网络编程的细节,能够像调用本地方法一样调用远程方法。让开发者更专注于业务逻辑本身。
RPC通信流程
RPC的整个流程简单来说就是调用方将调用的方法和参数发送到被调方,被调处理后将结果返回给调用方。
不过由于RPC是一个远程调用,所以肯定需要网络来传输数据。而网络传输的数据是二进制数据,不过调用方的出入参数都是对象,所以需要能够将对象转为二进制数据并且要求可逆,这个过程叫做序列化。
被调方收到二进制数据,需要知道一个完整的请求在二进制数据中的起始位置,而这就是我们所定义的协议的工作。大多数协议会分为两部分,分别是数据头和消息体,数据头用于身份识别,包括协议标识、数据大小、请求类型、序列化类型等信息;消息体则是用于请求的业务参数信息。根据协议将二进制数据解析成消息包或者将消息包转变为二进制数据的过程称为编解码。
主调方通过将请求序列化与编码,被调方通过解码和反序列化获得请求进行处理获得结果之后通过同样的流程响应给主调方。
由于RPC调用的整个流程是比较固定的,所以为了方便,例如grpc,就会利用proto文件的定义来生成桩代码,用户只需要将具体的业务实现进行注册就可以完成RPC的通信了。
希望本节能够让你对RPC整个有个大概的认识,不过有关RPC的实现还有很多细节,比如RPC本身作为网络调用的超时处理,为了传输效率的数据压缩处理,特别是在微服务项目下,RPC与微服务的服务治理的结合等等,都值得去学习了解。
标签:调用,二进制,什么,调方,RPC,序列化,数据 From: https://www.cnblogs.com/smarticen/p/16972498.html