通过动态响应协调大规模集群系统上的共享状态

时间:2013-07-27 00:49:46

标签: java cluster-computing state distributed

我正在设计一个扑克webapp,其中有多个用户共享游戏,并分布在许多服务器上。假设我想在单个服务器中维护游戏的状态 - 有没有一种方法可以“路由”或“引导”登录用户与托管游戏的机器进行交互?游戏涉及通过AJAX进行的大量交互式响应,因此不能在多个服务器上协调数据库中的状态。 (如果您认为可以使用分布式缓存跨多个服务器维护状态 - 那么我也对此持开放态度)。

为了简化,假设webapp是用Java实现的。

如果您可以在答案中提供示例库和有关路由的信息,那将会很有帮助。 (例如,为什么或为什么Apache Zookeeper是处理这个问题的合适方法)。

1 个答案:

答案 0 :(得分:0)

在负载均衡器级别,有sticky sessions的概念,由负载均衡器(如HAProxy)支持,这将确保同一用户始终路由到同一服务器(使用https可能更难)

但是,很难确保最终登录到不同服务器的2个用户在同一台​​服务器上播放。这也意味着如果服务器出现故障,两个玩家的游戏都会丢失。也许您应该将游戏保留在分布式缓存上并处理故障?

据我所知,在HAProxy中,可以使用查询字符串将请求路由到适当的服务器。 http://haproxy.1wt.eu/download/1.4/doc/configuration.txt

但是你最好使用无状态请求,并能够处理来自许多服务器的请求。