【问题标题】:One application on multiple servers多台服务器上的一个应用程序
【发布时间】:2014-10-23 21:44:04
【问题描述】:

我正在开发一个需要使用 websockets 的基于 Web 的应用程序,以便用户能够实时看到更新。

但是有一些事情让我感到不安。如果有太多客户端同时使用该应用程序,则需要第二台服务器运行相同的应用程序,以便将一些用户重定向到它。

那么我如何使发生在两台服务器之一上的更新在另一台服务器上可见?我是否需要在它们之间编写一个 tcp 连接并在发生某些更新时互相发送消息???

【问题讨论】:

    标签: ajax jakarta-ee websocket load-balancing


    【解决方案1】:

    如果您的用户连接到两台服务器(例如,一些用户连接到一台服务器,而一些用户连接到另一台服务器)并且您想从其中一台服务器向所有连接的用户广播消息,那么是的,您需要让发起消息的服务器告诉另一台服务器向所有连接的用户广播消息。所以,是的,两台服务器必须连接起来才能交换这些更新命令。

    如果您有 N 个服务器(可能 N 甚至会随时间变化),那么您可能会指定一个主服务器来保持与所有其他服务器的连接。然后,当任何通知要发送给所有连接的用户时,服务器将简单地通知主服务器,然后主服务器将通知所有服务器,然后将广播给所有用户。当每台服务器启动时,它只连接到一个主服务器,这就是它现在所要做的。

    当然,如果你只有两台服务器,你就不需要主服务器的概念。每个都可以相互连接。

    【讨论】:

    • Facebook 使用什么技术?据我所知,他们有几千台服务器,并且可以实时与某人聊天?
    • @JoroSeksa - 我不知道 Facebook 的架构。他们通常不会按照您要求的那样通知所有人。从一个用户到另一个用户甚至从一个用户到少数用户聊天是一个完全不同的问题。您可以阅读this post,了解关于一台服务器如何将消息发送给不一定连接到发起消息的服务器的特定用户的想法。有多种不同的可能策略。
    猜你喜欢
    • 2012-08-22
    • 2015-07-12
    • 2019-10-29
    • 1970-01-01
    • 2010-11-11
    • 2019-06-15
    • 2014-03-21
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多