对于像实时在线游戏这样的低延迟、高吞吐量的内存应用程序来说,真的没有任何东西,至少不是作为一个任意中间件。
Project Darkstar在可用性和复杂性方面做出了令人钦佩的尝试,但发现(不出所料)它没有扩展。
归根结底,这是一个困难的(尽管不是棘手的)问题,没有接近普遍适用的解决方案。特别是,您可能需要在一方面需要对陈旧的游戏数据采取行动与另一方面需要不断交换共享数据之间进行权衡。缺乏正确性与复杂性的指数增长......选择你的毒药。
值得注意的是——特别是如果你的应用程序域不是实时游戏——你通常不介意是否使用过时的数据,只要它尽快变得正确。在这种情况下,像 memcache 这样的简单缓存系统非常棒。同样,如果您需要更多正确性但不必担心吞吐量,那么像 Hazelcast (在另一个答案中提到)可能会很棒,但对于大多数大到需要负载平衡“数千次操作/秒”只是不够好。
一些 MMO 技术尝试通过按地理划分应用程序来分发应用程序,这意味着根本没有太多共享状态,它需要这种方案在游戏世界和小说中有意义。
另一种方法是按服务对其进行分区,并使用您最喜欢的现成 RPC 方法来实现大多数服务。如果您的服务是独立的,这可以让您非常轻松地进行扩展,但是服务之间的任何依赖关系都会让您回到原点。