我有一个API网关G
,可与多个服务S1, S2 ...
等连接。
流量模式是如此独特,以至于在某些时候,我的流量激增(10M req / min),每个人都试图从S1
访问内容。因此,S1
开始变得有点慢,因为我的网关G
在连接S1
时开始耗尽其所有套接字连接,现在无法再与其他服务连接。
由于S2
没有可用的套接字,试图访问对我们的业务至关重要的其他服务(例如G
)的用户无法访问它们。
我们尝试过的事情-
扩展API网关: 作为临时解决方案,这很好,但是要预测流量激增确实非常困难,并且最终会大大增加成本。
增加套接字:我们已在服务器上使此设置最大化。
我们还可以进行其他优化或架构更改以确保系统响应更好吗。
更新:
答案 0 :(得分:2)
这是一个常见问题,其中一项服务比其他服务获得更多的负载。您可以在网关上使用称为 Bulk Head 的云模式。在这种模式下,您基本上将资源(例如连接池)分配到所有服务中,因此,没有任何一个服务能够消耗所有资源。我不确定您使用的是哪种技术堆栈,因此您必须找到适合您的库,例如DotNet核心我们使用Polly。另一个是Hystrix。