1

我想在这里忽略 Web 应用程序,因为要水平扩展它们,即一起使用多个服务器实例,只需在机器上复制服务器软件并使用一种将请求转发到“不太忙”的服务器机器。

但是,如果我的服务器应用程序允许用户实时互动怎么办?

如果对某个客户端 X 的请求的响应取决于客户端 Y 的上下文,该客户端 Y 的连接由另一台机器管理,则需要“机器间”通信。

我想知道人们在这种情况下使用的那种“设计解决方案”。

例如,Facebook 的人们在启用其社交应用程序的聊天功能时肯定已经遇到过这种情况。

提前感谢您的任何建议。

4

2 回答 2

1

一种解决方案是使用像memcache这样的分布式缓存(Facebook 也使用这种方法)。然后,所有节点上所需的所有信息都存储在该缓存中(如果需要永久保存,则存储在数据库中),因此所有节点都可以访问该信息(节点之间的延迟非常小)。

问候

于 2011-06-08T17:14:38.397 回答
0

您应该考虑一些提供透明水平数据库可伸缩性并保证 ACID 语义的解决方案。有许多解决方案可以在各个级别提供此功能。您引用的 Facebook 人员通过接受最终一致性解决了这个问题,但您的问题让我相信您不能接受最终一致性。

于 2013-08-12T20:34:25.390 回答