【发布时间】:2015-01-26 22:48:43
【问题描述】:
所以我有一个为客户端提供服务的单一扭曲套接字服务器,最终我需要添加更多服务器。问题是到服务器的连接是唯一的,无法在多个服务器实例之间共享。
如果服务器位于负载平衡器之后,或者来自单个聊天的多个用户跨多个服务器实例,则会出现问题,因为聊天消息不会成功发送给所有人。
我该如何解决这个问题?
【问题讨论】:
所以我有一个为客户端提供服务的单一扭曲套接字服务器,最终我需要添加更多服务器。问题是到服务器的连接是唯一的,无法在多个服务器实例之间共享。
如果服务器位于负载平衡器之后,或者来自单个聊天的多个用户跨多个服务器实例,则会出现问题,因为聊天消息不会成功发送给所有人。
我该如何解决这个问题?
【问题讨论】:
这可能是一项艰巨的任务,因为可以根据底层协议(例如用于 Web 服务器的 http)来改进平衡负载。
您是否正在尝试为基本上任何基于套接字的应用程序设计负载平衡系统?我的意思是,在多个服务器之间发送消息,确保正确同步是一回事,为任何通信协议构建动态自平衡系统是另一回事。
要构建负载均衡器,您可以使用“TCP 代理”,例如 HAProxy (http://www.haproxy.org/)
要处理应用服务器实例之间的通信(在负载平衡服务器之后),您可以使用 zeromq (http://zeromq.org/) 或 rabbitmq (http://www.rabbitmq.com/) 之类的消息传递。你会在那里找到一些常见的架构模式。
zeromq 和 rabbitmq 都有 python 库,因此在基于 twisted 的服务器中实现并不难。
【讨论】: