Cloud 应用程序级集群有哪些技术?

Cloud 应用程序级集群有哪些技术?,cloud,load-balancing,cluster-computing,high-availability,Cloud,Load Balancing,Cluster Computing,High Availability,假设我有一个应用程序,即使经过优化,它也能保证覆盖一台服务器。是否有一种技术允许在维护其状态的同时将web应用程序拆分到多个服务器上 以多人在线游戏为例。通常在《战舰世界》中有多个服务器,每个服务器都有自己的游戏状态。我正在寻找的是一种可以让这个游戏状态在多个服务器之间共享的东西 编辑:平台并不重要,因为这是针对web应用程序的,因此后端并不重要。然而,Rails和Java是可能的 还有,魔兽世界只是一个例子,我只是对这种技术感兴趣;大型游戏将是一个很好的应用程序 我使用,但不是为了游戏。非常容

假设我有一个应用程序,即使经过优化,它也能保证覆盖一台服务器。是否有一种技术允许在维护其状态的同时将web应用程序拆分到多个服务器上

以多人在线游戏为例。通常在《战舰世界》中有多个服务器,每个服务器都有自己的游戏状态。我正在寻找的是一种可以让这个游戏状态在多个服务器之间共享的东西

编辑:平台并不重要,因为这是针对web应用程序的,因此后端并不重要。然而,Rails和Java是可能的


还有,魔兽世界只是一个例子,我只是对这种技术感兴趣;大型游戏将是一个很好的应用程序

我使用,但不是为了游戏。非常容易设置和使用。

您没有提到您的平台。对于Java,有一个。它是面向Java的开源、高度可扩展的数据分发平台。Hazelcast提供分布式地图,将在集群成员之间共享。您可以轻松地将数据存储在其中。它非常容易使用。只需将hazelcast.jar添加到类路径中。无需安装任何服务器

对于像实时在线游戏这样的低延迟、高吞吐量的内存应用程序,实际上没有任何东西,至少作为一个任意的中间件是没有的

在可用性和复杂性方面进行了令人钦佩的尝试,但发现(毫不奇怪)它不是可伸缩的

归根结底,这是一个困难的(虽然不是棘手的)问题,没有接近普遍适用的解决方案。特别是,您可能需要在一方面需要处理过时的游戏数据,另一方面需要不断交换共享数据之间进行权衡。缺乏正确性与复杂性的指数增长。。。选择你的毒药

值得注意的是——特别是当你的应用程序域不是实时游戏时——你通常不介意你使用的是过时的数据,只要它很快就变得正确。在这种情况下,像memcache这样的简单缓存系统非常好。类似地,如果您需要更多的正确性,但不必太担心吞吐量,像Hazelcast(在另一个答案中提到)这样的东西可能会很好,但对于大多数大到需要负载平衡的在线游戏来说,“数千次操作/秒”还不够好

一些MMO技术试图通过地理分区来分发应用程序,这意味着实际上根本没有太多共享状态,这就要求这种方案在游戏世界和虚拟世界中有意义


另一种方法是按服务对其进行分区,并使用您最喜欢的现成RPC方法实现大多数服务。如果您的服务是独立的,这可以让您非常轻松地进行扩展,但是服务之间的任何依赖关系都会让您重新回到原点。

谢谢,我将解决这个问题以反映这一点。