load-balancing - 如何实现具有持久连接的有状态应用程序的负载平衡 - Envoy 和 Rsocket
问题描述
我正在研究服务器和客户端的架构模型,它们都通过 Rsocket 连接进行连接。我使用 Envoy 为服务器配置了一个负载均衡器。请求流程如下所示,
假设我有 3 个服务器实例和 1 个代理实例。
- 代理将使用其标头连接到任何一台服务器(使用 Envoy 中的 MAGLEV 负载平衡策略)。
- 所有后续请求都应定向到代理连接所在的特定服务器。
但是,如果我按比例放大/缩小服务器实例,则标头哈希值将被重新哈希,并且后续请求将重定向到代理连接(以前连接 - 仍驻留在旧服务器实例中)不存在于新服务器中的不同服务器实例实例。
因此,一种可能的解决方案是通过识别持有代理连接的正确服务器实例(需要对服务器代码进行一些更改)在服务器之间进行重定向。但我不太确定这是最好的解决方案。所以,我想知道我是否可以使用任何 Envoy 配置来解决这个问题,或者我可以实施什么逻辑来缓解这个问题。
解决方案
推荐阅读
- python - 使用 sklearn OneHotEncoder 时如何去掉数字列?
- python - python绝对路径中的双反斜杠
- wikipedia-api - 维基书 API 查询
- powershell - powershell 输出到文本文件
- machine-learning - 我应该在测试集和训练集中获得相同的准确度吗
- python - Django ModelForm 的 DateTime 值在本地化关闭的情况下进行本地化/翻译
- c++ - 反转 Int 数字的函数
- javascript - JavaScript 函数在 ASP.NET 应用程序中不起作用
- android - 没有这样的表:Android R / 11 中的 audio_genres_map 错误
- javascript - 比较每个项目的两个数组并根据条件返回?