如何在 Elixir/Phoenix 集群中分配持久连接?
How to distribute persistent connection across a Elixir/Phoenix cluster?
所以这个问题很困扰我,其实我不需要这种秤,我只是好奇。 Recently Chris Mccord got 2 million persistent connections in a single box using Elixir/Phoenix。如果我在一个集群中有 3 个盒子,每个盒子处理 200 万个持久连接:
- 这是否意味着负载均衡器必须保持 600 万个持久连接,或者是否可以将连接转发到后端服务器并在负载均衡器上关闭连接?
- 我是否必须使用客户端中的某些逻辑来分配连接并避免单一入口点?类似于
box1.foo.com
、box2.foo.com
、box3.foo.com
并告诉客户端连接到其中之一?
我知道答案可能是特定于应用程序的,但是您能否举例说明如何实现这种规模?同样,这只是一个思考练习,我在任何地方都找不到答案,我对水平缩放很感兴趣。
谢谢。
您需要使用多个负载平衡器(或完全跳过负载平衡器)并使用循环 dns(或加权 dns)在它们之间分配请求。这就是 heroku 的路由网格和 aws 的弹性负载均衡器的工作方式。您还可以花 $$$ 购买 f5 负载均衡器之类的东西
所以这个问题很困扰我,其实我不需要这种秤,我只是好奇。 Recently Chris Mccord got 2 million persistent connections in a single box using Elixir/Phoenix。如果我在一个集群中有 3 个盒子,每个盒子处理 200 万个持久连接:
- 这是否意味着负载均衡器必须保持 600 万个持久连接,或者是否可以将连接转发到后端服务器并在负载均衡器上关闭连接?
- 我是否必须使用客户端中的某些逻辑来分配连接并避免单一入口点?类似于
box1.foo.com
、box2.foo.com
、box3.foo.com
并告诉客户端连接到其中之一?
我知道答案可能是特定于应用程序的,但是您能否举例说明如何实现这种规模?同样,这只是一个思考练习,我在任何地方都找不到答案,我对水平缩放很感兴趣。
谢谢。
您需要使用多个负载平衡器(或完全跳过负载平衡器)并使用循环 dns(或加权 dns)在它们之间分配请求。这就是 heroku 的路由网格和 aws 的弹性负载均衡器的工作方式。您还可以花 $$$ 购买 f5 负载均衡器之类的东西