2 回答

TA贡献2041条经验 获得超4个赞
云 bigtable 客户端使用 gRPC 连接池连接到 bigtable。Java 客户端为每个 HBase 连接使用一个通道池,每个通道池有多个 gRPC 连接。gRPC 连接每小时关闭一次(或在 15 分钟不活动后),底层 gRPC 基础设施执行重新连接。每个新连接上的第一个请求执行许多设置任务,例如 TLS 握手和预热服务器端缓存。这些操作相当昂贵,可能会导致延迟峰值。
Bigtable 被设计成一个高吞吐量系统,这些重新连接和持续查询量的摊销成本应该可以忽略不计。但是,如果客户端应用程序的 QPS 非常低或查询之间的空闲时间很长并且不能容忍这些延迟峰值,它可以每 30-40 分钟创建一个新的 Hbase 连接(java)或一个新的 CBT 客户端(golang)并且在新连接/客户端上不运行 op 调用(存在于 hbase 客户端或读取一小行)以启动底层 gRPC 连接(每个连接调用一次,对于 hbase 默认是 CPU 数量的两倍,默认情况下有 4 个连接) . 准备就绪后,您可以为客户端应用程序中的主要操作换出新的连接/客户端。

TA贡献1835条经验 获得超7个赞
我怀疑这可能是由于最近的 grpc-go 版本中引入了一个错误,并且刚刚得到修复。基本上,我们没有在连接断开时立即重新连接,而是错误地等待 1 秒再重新连接。请用grpc-go master head再试一次。谢谢!
- 2 回答
- 0 关注
- 118 浏览
添加回答
举报