我有一个API网关G
连接多个服务S1, S2 ...
等。
流量模式是如此独特,在某些时候我获得了大量的流量(10M req / min),每个人都试图从S1
访问内容。所以S1
开始变得有点慢,因为我的网关G
开始用尽所有套接字连接与S1
连接,现在无法再与其他服务连接。
试图访问其他服务(长尾)(例如S2
)对我们业务至关重要的用户无法访问它们,因为G
没有任何可用的套接字。
我们尝试的事情 -
我们可以做出任何其他优化或架构更改,以确保系统响应更好。
更新:
这是一个常见问题,其中一个服务比其他服务负载更多。您可以在网关上使用名为Bulk Head的云模式。在这种模式中,您基本上在所有服务之间划分资源(例如连接池),因此任何单个服务都不能消耗所有资源。我不确定您使用的是哪种技术堆栈,因此您必须找到适合您的库,例如: DotNet核心我们使用Polly。另一个是Hystrix。