protocol-buffers - GRPC 负载均衡器示例

标签 protocol-buffers load-balancing rpc grpc

我正在尝试使用 GRPC/Java 构建具有负载平衡的服务器集管理机制。

通过查看 API 文档,有以下类: LoadBalancer、RoundRobinLoadBalancerFactory 等

从名字来看,他们似乎应该做我想做的事情。 然而,即使我非常努力地搜索,我也找不到任何使用这些类的代码示例。

另一方面,我发现了一些 Finagle/Thrift 示例,如下所示:https://github.com/benjumanji/finagle-serverset-example

我想知道是否有人可以分享一些可用的 GRPC 示例?谢谢!

最佳答案

gRPC LoadBalancerNameResolver一起工作。 NameResolver 向 LoadBalancer 发出地址,LoadBalancer 做出有关建立连接 ( Subchannels ) 和 picking a Subchannel 的决定。对于每个请求。

NameResolver 和/或 LoadBalancer 可以是 set to ManagedChannelBuilder用于 channel 。

虽然接口(interface)已经存在,但除了基本的 DnsNameResolver 和 RoundRobinLoadBalancer 之外,没有太多常用的实现。 PickFirstBalancerFactory 是默认的“LoadBalancer”,实际上不做平衡。

如果您的地址在 DNS 中具有多个地址,则在使用 RoundRobinLoadBalancer 时您将观察到循环行为。但是,我猜您想从某些服务发现系统(例如 ZooKeeper)获取地址。您需要为此实现一个 NameResolver。如果您熟悉您选择的发现系统,那么这应该不难。

关于protocol-buffers - GRPC 负载均衡器示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42681921/

相关文章:

java - 带有长字符串的 protobuf 中的奇怪行为

go - Bazel 在处理 protobuf 文件时有一个错误。我怎样才能暂时解决这个问题?

java - 在 Java 中将 protobuf 转换为 bigquery

php - Laravel 下的负载均衡器 + 集中式 Redis session 服务器

load-balancing - Google 计算引擎负载平衡无法正确路由

goRPC newdispatcher 已导入但未使用

java - 将java项目中的proto文件编译成python模块时如何避免嵌套导入

MySQL 代理逐步配置

当结构具有嵌套结构时,golang rpc 不返回

linux - NFS 拒绝 rpc 消息的未知原因