- Article -

GRPC

分类于 Framework 标签 GRPC 发表于2024-03-04 21:03

RPC模式

RPC一般采用客户端/服务端(C/S)模式。请求方是客户端,而服务提供方是服务端。广义上,可以将目前所有客户端和服务端交互的方式都纳入RPC的范畴,比如说通过HTTP请求交互、通过HTTP请求交互、通过SOAP简单对象访问协议进行交互。

狭义上, RPC是指基于底层协议二进制流,并提供类似于本地方法调用形式的客户端服务器交互方式。

远程过程调用

RPC让远程过程调用具有与本地调用相同的形式。传统的调用一般用read函数由链接器从库中提取出来,然后链接器再将它链接到目标程序中,虽然Read中执行了系统调用,但它本身通过将参数压入堆栈的常规方式调用的,调用方并不知道read函数的具体实现。

RPC通过类似的方式获得透明性。当read实际上是一个远程过程时,库中就放入read的接口形式,称为客户存根。该read过程与原来的从本地文件系统进行读取的read过程一致,都执行了本地操作系统调用。不同的是它不要求操作系统提供数据,而是将参数打包消息,而后将此消息发送到服务器,在发送完调用请求后,客户存根即阻塞,直到收到服务器发回的相应信息为止。

传递参数

协议栈 - 通信协议的制定

RPC调用的通信协议选择是指其协议栈的设计和选择。 整个协议栈的组成包括编码器、解码器、心跳、命令协议和命令处理器。

出错和超时处理的情况