我正在设计一个多用户共享一个游戏的扑克网络应用程序,并分布在多个服务器上。假设我想在一台服务器上维护游戏的状态--有没有一种方法可以让登录的用户与托管游戏的机器进行交互?这个游戏涉及大量通过AJAX的交互式响应,因此不能跨多个服务器协调数据库中的状态。(如果您认为可以使用分布式缓存跨多个服务器维护状态,那么我也对此持开放态度)。
为了简单起见,假设webapp是用Java实现的。
如果你能在你的答案中提供关于路由的示例库和信息,这将是有帮助的。(例如,为什么Apache Zookeeper是处理这个问题的合适方法)。
发布于 2013-07-27 08:59:28
在负载均衡器级别,有HAProxy等负载均衡器支持的sticky sessions的概念,它将确保相同的用户总是被路由到相同的服务器(使用https可能更难)。
然而,很难确保登录到不同服务器的两个用户最终在同一服务器上玩游戏。这也意味着如果服务器宕机,两个玩家的游戏都会失败。也许你应该在分布式缓存上持久化游戏并处理失败?
据我所知,在HAProxy中,可以使用查询字符串将请求路由到适当的服务器。http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
但是你最好使用无状态请求,并且能够处理来自多个服务器的请求。
https://stackoverflow.com/questions/17893163
复制相似问题