在上一篇文章中,我们知道GRPC服务器如何在GRPC服务器和客户端之间建立了HTTP2连接。在本文中,让我们看一下接收客户端RPC请求后如何处理GRPC服务器。
HTTP2定义了各种类型的帧,包括数据,标题,设置,Ping,Goaway等。对于不同的帧类型,HTTP2服务器应具有不同的处理逻辑。
在GRPC中,包括框架类型的分类和处理。
它将阻止当前的goroutine并等待客户端的框架。
等待并阅读客户端的框架以进行循环,并采用不同的处理方法。在本文中,他将使用标题,数据和设置框架作为示例来简要描述GRPC服务器的处理方法。
标题框架的处理功能很长,我们将查看各节中的内容。
在GRPC服务器和客户端上,有一个流的概念来表征GRPC调用。GRPC调用始终从客户端的标头框架开始,因此服务器将在中国创建一个对象。一致的ID具有缓存。关于缓存和流控制的细节,我们将在后续章节中讨论。
GRPC服务器在帧中遍历字段,并记录流中字段中的信息。值得注意的是,两个字段和客户端需要填写这两个文件,以清楚地指定一个要调用服务器的文件。Remote过程。换句话说,哪种服务器方法调用的信息与呼叫方法的不同帧分开。
该新的流对象将放置在服务器映射中,并将其称为进一步处理此流。此功能最终将触发呼叫。
根据标头框架中的路径和方法的信息,GRPC服务器找到注册方法并执行它。例如:
首先从流中读取数据框架,即RPC方法中的参数信息。然后调用已注册良好的执行方法并将其发送给客户标志着该流的末尾。
处理数据框架时
介质缓存的数据最终将通过前面提到的函数读取,以重建服务器上的RPC参数。
除了完成完成GRPC调用所需的标头框架和数据框架外,服务器端还可以在RPC交互阶段接收客户端的设置框架,以更新HTTP2的某些参数。
它没有将设置框架的参数直接应用于服务器,而是将其放在中间。相关内容将涉及后续章节。
可以看出,除了在整个处理过程中注册的注册方法外,GRPC服务器是异步的。它基本上是异步的。每个操作都通过缓冲液连接在一起,以最大程度地提高Goroutine障碍物。