【问题标题】:Java chat socket milion clientsJava 聊天套接字百万客户端
【发布时间】:2016-11-06 03:59:01
【问题描述】:

我想知道像whatsapp这样的数百万用户实时聊天的架构。

我实现了聊天,但我需要使用更多服务器来处理更多客户端

我读了另一个问题,但我仍然有疑问。 告诉我我说的是否正确:

客户端连接到负载平衡器,该负载平衡器决定连接到其中一个 whatsapp 服务器。 示例 ClientA 连接到 Server1, ClientB 连接到 Server2,

-如果ClientA想和ClientB通信,就向Server1发送消息,现在,你怎么知道ClientB在哪个服务器?保持数百万用户的可扩展性)

如何实现聊天来处理数百万用户?

【问题讨论】:

    标签: java database architecture


    【解决方案1】:

    关键是存储来自客户端的所有输入的数据库(或任何其他持久性系统)。通常在这些尺度中,key-value NoSql Database 是合适的,例如 Apache CassandraAmazon DynamoGoogle Datastore。 这些数据库最适合仅通过 PK 进行快速插入和提取。

    所有服务器都需要是无状态的,因此客户端 A 连接到服务器 A 并发送文本消息和目标客户端 ID。这将存储在数据库中。然后,客户端 B 连接到服务器 B,服务器 B 进入数据库并检索文本。

    【讨论】:

    • 谢谢,但是如果我使用大型数据库,如果我有数百万用户,则每个服务器必须在数百万个查询中进行搜索,这就是您想要的。这需要时间
    • 如果您通过 PK 获取一行(如 client-id),那么数据库引擎可以适应这一点。所有大型社交应用程序都使用这种架构。
    • 这是 instagram 使用的架构的非常详细的描述,来自他们的技术博客。他们使用 redis(开源 key-value nosql db)作为主要提要。他们还使用传统的 RDBMS 和云存储,请阅读所有相关信息instagram-engineering.tumblr.com/post/13649370142/…
    • 好的,谢谢!我可以向数据库发出更多并发请求吗?
    • 我读到了,谢谢。最后一个问题:服务器必须继续询问数据库以查看您是否收到新查询或有解决方案?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多