美文网首页
Grpc协议消息

Grpc协议消息

作者: clive0x | 来源:发表于2020-07-10 09:09 被阅读0次

gRpc根据Consumer传参方式分为两类:Unary Call和Server Stream Call归为一类设计,Client Stream Call与Bi Direction Call另外一类。

一、Unary/ServerStream  Call

1.Consumer端发起调用

1.1.向Provider发送Initial Metadata,发起方法调用。发送cmd_server_recv_header消息,消息内容:method_full_name、meta data、authority,

method_full_name格式/service/method_name格式。

1.2.向Provider发送request参数,发送cmd_server_recv_data消息。

1.3.通知Provder结束request参数传递结束,并开启调用方法处理。

发送cmd_server_recv_half_close消息。

1.4.监听获取Provider返回。

2. Provider端接收调用

2.1接收cmd_server_recv_head消息,监听获取Consumer端Request参数。

2.2接收cmd_server_recv_data消息,赋值request参数。

2.3接收cmd_server_recv_half_close消息:

2.3.1判断是否发送过Initial Metadata消息,如果没有,向Consumer发送cmd_client_recv_header消息。消息内容为Metadata。如果有,直接进入下面步骤。

2.3.2从Consumer端成功获取到request参数时,调用业务方法,否则进入2.3.3。

2.3.2.1成功返回,向Consumer发送cmd_client_recv_data消息,消息内容为方法返回值。结束方法调用,向Consumer发送cmd_client_recv_close消息,消息内容:status:0

2.3.2.2失败返回,向Consumer发送cmd_client_recv_close消息,status:13(INTERNAL异常),message:异常消息。

2.3.3未获取到Consumer端request参数,向Consumer发送cmd_client_recv_close消息,消息内容包括status:13(INTERNAL异常),message:Half-closed without a request。

2.4结束方法调用,见2.3.2.1结束方法调用,向Consumer发送cmd_client_recv_close消息。

3. Consumer端返回处理

3.1接收cmd_client_recv_header消息,不作处理。

3.2接收cmd_client_recv_data消息,获取Provider处理结果。

3.3接收cmd_client_recv_close消息结束调用,获取Provider端处理结果,根据status区别处理,如果status非0,Provider端调用异常,进入异常处理。否则进入正常处理。

二、ClientStream/BiStream Call

1. Consumer端发起调用

1.1.向Provider发送Initial Metadata,发起方法调用。发送cmd_server_recv_header消息,消息内容:method_full_name、meta data、authority,

method_full_name格式/service/method_name格式。

2. Provider端接收调用

2.1.收到cmd_server_recv_head消息,调用Provider端方法,并准备接收Consumer request参数。

[if !supportLists]3. [endif]Consumer端发送请求参数

3.1.发送cmd_server_recv_data消息,内容为请求参数。(1次+)

[if !supportLists]4. [endif]Provider端接收参数

4.1.收到cmd_server_recv_data消息,设置请求参数。

[if !supportLists]5. [endif]Consumer端结束参数传递

5.1.发送cmd_server_recv_half_close消息

[if !supportLists]6. [endif]Provider端返回计算结果

6.1判断是否发送过Initial Metadata消息,如果没有,向Consumer发送cmd_client_recv_header消息。消息内容为Metadata。如果有,直接进入下面步骤。

6.2向Consumer发送cmd_client_recv_data消息,消息内容为方法返回值。

6.3结束方法调用,向Consumer发送cmd_client_recv_close消息,消息内容:status:0

7. Consumer端返回处理

7.1接收cmd_client_recv_header消息,不作处理。

7.2接收cmd_client_recv_data消息,获取Provider处理结果。

7.3接收cmd_client_recv_close消息结束调用,获取Provider端处理结果,根据status区别处理,如果status非0,Provider端调用异常,进入异常处理。否则进入正常处理。

相关文章

  • Grpc协议消息

    gRpc根据Consumer传参方式分为两类:Unary Call和Server Stream Call归为一类设...

  • grpc协议解析及新语言支持

    (一)grpc 协议分析。gRPC 是基于 HTTP/2 协议的,要深刻理解 gRPC,理解下 HTTP/2 是必...

  • Hyperledger-Fabric-SDK-设计

    概要 区块链网络使用 gRPC 协议 Protocol Buffers(格式的 API) 使用的协议 gRPC P...

  • 什么是gRPC?

    本文会介绍gRPC和协议缓冲。gRPC可以使用协议缓冲作为它的IDL和底层信息交换格式。如果你刚接触gRPC或者协...

  • Golang语言开发合集

    安装 IDE选型 gRPC协议

  • gRPC协议

    参考资料 https://grpc.io/docs/what-is-grpc/introduction/[http...

  • gRPC-transport包源码分析

    gRPC是基于HTTP/2标准和proto协议开发的,gRPC的很多特性都依赖于HTTP/2标准提供。gRPC设计...

  • google grpc 简介及官网的快速入门

    GRPC是基于protocol buffers3.0协议的. 本文将向您介绍gRPC和protocol buffe...

  • gRPC

    gRPC 是 Google 基于 HTTP/2 以及 protobuf 的,要了解 gRPC 协议,只需要知道 g...

  • gRPC介绍

    [TOC] gRPC gRPC介绍 gRPC是什么? RPC和RESTful的区别是什么? RPC的消息传输可以是...

网友评论

      本文标题:Grpc协议消息

      本文链接:https://www.haomeiwen.com/subject/jtdpcktx.html