我正在研究服务器和客户端的架构模型,它们都通过 Rsocket 连接进行连接。我使用 Envoy 为服务器配置了一个负载均衡器。请求流程如下所示,
假设我有 3 个服务器实例和 1 个代理实例。
- 代理将使用其标头连接到任何一台服务器(使用 Envoy 中的 MAGLEV 负载平衡策略)。
- 所有后续请求都应定向到代理连接所在的特定服务器。
但是,如果我按比例放大/缩小服务器实例,则标头哈希值将被重新哈希,并且后续请求将重定向到代理连接(以前连接 - 仍驻留在旧服务器实例中)不存在于新服务器中的不同服务器实例实例。
因此,一种可能的解决方案是通过识别持有代理连接的正确服务器实例(需要对服务器代码进行一些更改)在服务器之间进行重定向。但我不太确定这是最好的解决方案。所以,我想知道我是否可以使用任何 Envoy 配置来解决这个问题,或者我可以实施什么逻辑来缓解这个问题。