在阅读grpc-go源码前,我们先从整体上简单了解一下:
grpc-go框架中grpc客户端跟grpc服务器端整个的交互过程,都经历了哪些过程;
在后面的章节中,我们会对每个过程进行详细的分析;
在grpc-go框架中grpc客户端跟grpc服务器端整个交互主要经历以下阶段:
grpc客户端跟grpc服务器端整体交互过程,如下图所示: |
1、rpc链接建立阶段
建立tcp链接阶段 用户设置链接参数,如拦截器设置,链接地址设置等解析器根据链接地址来获取后端对应的grpc服务器地址列表平衡器根据grpc服务器地址列表来建立tcp链接 帧交互阶段 grpc服务器端需要自己能够发送的帧大小、窗口大小等信息发送给客户端,客户端接收到这些信息后,会更新本地的帧大小,窗口大小等信息PRI校验2、rpc请求阶段
客户端将请求服务的名称,方法名称、超时时间等信息封装到头帧里,发送给服务器端;这样服务器端接收到头帧后,就可以解析出客户端请求的方法名称了,如Greeter服务下的SayHello方法名称了客户端需要将SayHello方法的具体参数值,进行序列化,压缩后,封装成数据帧发送服务器端服务器端接收到数据帧后,进行解压,反序列化 *** 作后,就得到了请求方法的具体参数值了,如&pb.HelloRequest{Name: name}服务器端此时已经知道了客户端请求的方法名称,以及该方法名称的具体参数值了,服务器端开始具体执行方法,如真正执行SayHello方法了;执行完成后,服务器端创建头帧,将执行的状态信息发送给客户端,如grpc-status, 状态码200客户端开始接收服务器端的发送的头帧服务器端将执行结果,进行序列化、压缩后,封装成数据帧,发送给客户端客户端接收到服务器端反馈的数据帧后,进行解压,反序列化后,,就可以得到SayHello方法的具体执行结果了。简单总结一下,
rpc链接,其实就是干了四件事: |
rpc请求,干了哪些事呢? |
在这里我们只需要简单了解一下grpc客户端跟grpc服务器端交互的整体流程即可。
详细流程,会在后面的章节中,慢慢介绍的。
下一篇文章
grpc服务器端启动时都做了哪些事情
点击下面的图片,返回到 专栏大纲(目录)
您的每一次点赞,每一次关注,每一次收藏都是对我工作的最大支持,让我们开始 吧!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)