关于 grpc 如何扩展

2017-08-23 10:49:51 +08:00
 itertools

最近刚接触 grpc 有个不明白的地方: 官方例子中 grpc 服务端和客户端都是写死了 host 和 port,那么如果由于用户量的上升,grpc 服务端需要扩展到多台,那么这个时候如何处理? grpc 有现成的方案?

4535 次点击
所在节点    Python
11 条回复
donyee
2017-08-23 11:45:20 +08:00
实现个 DNS 轮询服务
或者试试 grpc + consul
maemual
2017-08-23 12:41:31 +08:00
了解一下什么叫 服务注册发现
maemual
2017-08-23 12:42:43 +08:00
简单方案就是服务端前面用 HAProxy,客户端连 HA
timonwong
2017-08-23 12:56:09 +08:00
python 的 grpc 就放弃吧,虽然你可以写 C extension 扩展 resolver,但是要在最开头引入,因为 grpcio 的所有 class,__init__ 都隐含调用 grpc_init(),这样你写的 resolver 就没有用了

c-core 原生支持 dns resolver,target 用 dns:// 开头,不过只支持 A 记录
c-core 的 client side lb 自带了,不需要你自己做,但是参数你要看 C 的代码。
完全没有 go client 那么方便。

最终你可能还是会考虑 @maemual 说的 HAProxy 方案
cloudzhou
2017-08-23 13:15:42 +08:00
JohnSmith
2017-08-23 13:30:47 +08:00
go 的话很方便,etcd 的 v3 版本客户端已经提供 grpclb 的实现,几行代码就能使用,而且不仅仅可以简单的负载算法,还可以自己实现一些特定的算法来满足特定需求,比如一致性 hash
@cloudzhou +1
hand515
2017-08-23 13:37:49 +08:00
Java 版本可以自己实现 Loadbalancer,不过略复杂
janxin
2017-08-23 15:29:05 +08:00
python 选择 HA 方案挺方便的
zh5e
2017-08-23 15:34:18 +08:00
用的 aws loadblance 服务
owt5008137
2017-08-23 15:50:56 +08:00
这和 grpc 有半毛钱关系?
0915240
2017-08-23 22:24:45 +08:00
grpc 只负责 rpc,你这个需要的是服务发现与 client 负载均衡。

当然系统化的话就更多了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/385101

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX