分布式应用的水平扩展,如何实现?

发布于 2024-11-14 09:31:57 字数 298 浏览 3 评论 0原文

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

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

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

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

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

预先感谢您的任何建议。

I would like to disregard web applications here, because to scale them horizontally, ie to use multiple server instances together, it is "sufficient" to just duplicate the server software over the machines and just use a sort of router that forwards requests to the "less busy" server machine.

But what if my server application allows users to engage together in realtime ?

If the response to the request of a certain client X depends on the context of a client Y whose connection is managed by another machine then "inter machines" communication is needed.

I'd like to know the kind of "design solutions" that people has used in such cases.

For example, the people at Facebook must have already encountered such situation when enabling the chat feature of their social app.

Thank you in advance for any advise.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北渚 2024-11-21 09:31:57

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

问候

One solution to achive that is to use distibuted caches like memcache (Facebook also uses that aproach).
Then all the information which is needed on all nodes is stored in that cache (and a database if it needs to be permanent) an so all nodes can access that information (with a very small latency between the nodes).

regards

神经大条 2024-11-21 09:31:57

您应该考虑一些提供透明的水平数据库可扩展性并保证 ACID 语义的解决方案。有许多解决方案可以在不同级别提供此服务。你提到的 Facebook 的人已经通过接受最终一致性解决了这个问题,但你的问题让我相信你不能接受最终一致性。

You should consider some solutions that provide transparent horizontal database scalability and guarantee ACID semantics. There are many solutions that offer this at various levels. People at Facebook which you reference have solved the problem by accepting eventual consistency but your question leads me to believe that you can't accept eventual consistency.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文