多个 CPU 密集型任务,应该共用 gRPC 服务还是分开?

2021-09-17 14:51:27 +08:00
 mekingname
我有三个互不相关的 CPU 密集型的函数要做到 gRPC 里面。现在有两个方案:

1. 把他们做成 3 个完全不相关的 gRPC 项目,分别部署,客户端各调各的。
2. 把他们做到同一个 gRPC 服务的三个函数。客户端分别调用这三个远程函数

请问大家建议用哪种方式?
1054 次点击
所在节点    问与答
11 条回复
emeab
2021-09-17 15:24:54 +08:00
1.
securityCoding
2021-09-17 15:47:32 +08:00
没看出有什么区别
slipper
2021-09-17 17:34:32 +08:00
1
mekingname
2021-09-17 17:49:11 +08:00
@securityCoding 因为 gPRC 使用的是 http2,它会保持一个 tcp 的链接,避免频繁握手。方案 1 有 3 个连接。但我不确定方案 2 是 1 条还是 3 条。
locoz
2021-09-17 18:59:57 +08:00
我搞我会选 1,方便管控。
locoz
2021-09-17 19:01:05 +08:00
@mekingname #4 可以 Wireshark 抓个包看看
byzf
2021-09-17 19:37:58 +08:00
你自己考虑一下扩容、HA 之类的这三个是不是一起做的,是不是总是同时更新的。
ch2
2021-09-17 19:57:45 +08:00
跟分库分表一样的思路,压力大的请求不能挤在一起处理
mekingname
2021-09-18 10:28:37 +08:00
@locoz ok
Brentwans
2021-09-18 16:45:47 +08:00
那个 CPU 密集型任务本身才是关键。
如果都是单台机器的话,方案 1 和 2 功能没有什么太大区别,如果是我选择方案 2,快,然后就可以喝咖啡了。
如果方案 1 是多台机器各种运行密集型任务,那完全和方案 2 又不是一个层面的问题了啊
mekingname
2021-09-22 10:22:18 +08:00
@Brentwans 通过 k8s 分到不同的机器上。

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

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

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

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

© 2021 V2EX