gRPC 谷歌开源的高性能 RPC 框架

8/10/2019 4:47:57 PM

gRPC 是 Google 开源的高性能、通用 RPC 框架,面向移动和 HTTP/2 设计,是由谷歌发布的首款基于 Protocol Buffers 的 RPC 框架。gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电且节省空间占用。

新版包含改进和错误修复,更新亮点如下:

core

  • Service Config 更改为在无效服务配置上的瞬时故障中设置通道
  • 将备份轮询器添加到 c-ares 解析器以更好地利用 c-ares 查询超时/重试逻辑
  • 将 WSA_FLAG_NO_HANDLE_INHERIT 标志传递给 WSASocketA(),以避免在服务器上使用 CreateProcess() 时 Windows 上的句柄泄漏问题
  • 在 xds 中添加 fallback-at-startup
  • 退出 GRPC_ARENA_INIT_STRATEGY env 变量
  • 使用 C-Ares 作为 DNS 解析器修复 gevent segfault
  • 接受 unix 套接字后,显式调用 getsockname 以获取 sun_path
  • RBE Windows c-core 构建
  • 减轻对 googleapis-common-protos-types gem 的依赖
  • 为 gpr_now 返回值的 tv_nsec 字段添加保护
  • 重新启用 ALPN 检查 gRPC C 核心 S​​SL 堆栈 

C++

  • 全局配置变量迁移
  • 使 cc_grpc_library 与本机 proto_library 和 cc_proto_library 规则兼容
  • 在回调流测试中添加警报

C#

  • 支持逐片反序列化
  • 为 C# 项目的设计时间的构建添加 VS 集成
  • 将服务器端拦截器的拦截器类型迁移到 Grpc.Core.Api
  • 添加有关 C# nightly nuget feed 的信息
  • 将 C# nightly nugets 上传到 Artifactory dev nuget feed
  • 将客户端 API 类型迁移到 Grpc.Core.Api
  • 使 CallCredentials 实现不可知(准备转移到 Grpc.Core.Api)
  • 添加 BindServiceAttribute
  • 提供从 C# 访问 verify_peer_callback 的权限

Node

  • 为 libuv 事件循环添加 cares glue

Objective-C

  • gRPC Objective-C 流量控制
  • 更新了所有 ObjC 示例以使用新的 api
  • 修复 v2 API 调度到主队列
  • 修复在 mac 上找不到默认根证书文件的问题
  • 默认在 iOS 上打开 CFStream

Python

  • 添加 python 弃用通知
  • 添加在 Python gRPC protoc 插件中剥离模块前缀的功能
  • 在完成队列之上传播 KeyboardInterrupt
  • 添加 Python Compression Porcelain

Ruby

  • 添加 BadStatus#to_rpc_status