我有三个互不相关的 CPU 密集型的函数要做到 gRPC 里面。现在有两个方案:
1. 把他们做成 3 个完全不相关的 gRPC 项目,分别部署,客户端各调各的。
2. 把他们做到同一个 gRPC 服务的三个函数。客户端分别调用这三个远程函数
请问大家建议用哪种方式?
1. 把他们做成 3 个完全不相关的 gRPC 项目,分别部署,客户端各调各的。
2. 把他们做到同一个 gRPC 服务的三个函数。客户端分别调用这三个远程函数
请问大家建议用哪种方式?
|
2kCS5c0b0ITXE5k2Sep 17, 2021
1
1.
|
|
securityCodingSep 17, 2021
2
没看出有什么区别
|
|
slipperSep 17, 2021
3
1
|
|
4
@securityCoding 因为 gPRC 使用的是 http2,它会保持一个 tcp 的链接,避免频繁握手。方案 1 有 3 个连接。但我不确定方案 2 是 1 条还是 3 条。
|
|
locozSep 17, 2021 via Android
5
我搞我会选 1,方便管控。
|
|
locozSep 17, 2021 via Android
6
@mekingname #4 可以 Wireshark 抓个包看看
|
|
byzfSep 17, 2021
7
你自己考虑一下扩容、HA 之类的这三个是不是一起做的,是不是总是同时更新的。
|
|
ch2Sep 17, 2021
8
跟分库分表一样的思路,压力大的请求不能挤在一起处理
|
|
9
@locoz ok
|
|
BrentwansSep 18, 2021
10
那个 CPU 密集型任务本身才是关键。
如果都是单台机器的话,方案 1 和 2 功能没有什么太大区别,如果是我选择方案 2,快,然后就可以喝咖啡了。 如果方案 1 是多台机器各种运行密集型任务,那完全和方案 2 又不是一个层面的问题了啊 |
|
11
@Brentwans 通过 k8s 分到不同的机器上。
|