grpc简介及python grpc

grpc

gRPC 一开始由 google 开发,开源的远程过程调用(RPC)系统

grpc 支持同步和异步调用
简单模式下, 调用函数就像本地调用一样, 直接传输数据
流式调用将信息以数据量的方式,发送或者接受,

gRPC 客户端调用成功的判断是独立的本地的, 因此可能存在客户端与服务端判断不一致的情况
例如,您可以在服务器端成功完成RPC,但在客户端失败。在客户端发送所有请求之前,服务器也可以决定完成

grpc是基于HTTP2协议的封装
gRPC 请求和应答消息流中一般的消息顺序:

请求 → 请求报头 *有定界符的消息 EOS
应答 → 应答报头 *有定界符的消息 EOS
应答 → (应答报头 *有定界符的消息 跟踪信息) / 仅仅跟踪时


proto文件

第一步是定义要在proto文件中序列化的数据的结构:这是一个带.proto扩展名的普通文本文件。协议缓冲区数据被构造为 消息,其中每个消息是包含一系列称为字段的名称 - 值对的信息的逻辑记录

message Person {
  string name = 1;
  int32 id = 2;
  bool has_ponycopter = 3;
}

二.定义一个服务, 指定其可以被远程调用的方法及其参数和返回类型

相当于定义一个接口类型的服务

gRPC 默认使用 protocol buffers 作为接口定义语言,来描述服务接口和有效载荷消息结构

定义:

service HelloService {
  rpc SayHello (HelloRequest) returns (HelloResponse);
}

message HelloRequest {
  required string greeting = 1;
}

message HelloResponse {
  required string reply = 1;
}

两种类型调用
  1. 简单模式:
rpc SayHello(HelloRequest) returns (HelloResponse){
}
  1. 流式调用
  2. 服务端支持流式
rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse){
}
  1. 客户端支持流式:
rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse) {
}
  1. 双向流式:双方使用读写流发送一系列消息。这两个流独立运行,因此客户端和服务器可以按照自己喜欢的顺序进行读写:例如,服务器可以在写入响应之前等待接收所有客户端消息,
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值