Java 聊天套接字百万客户
Java chat socket milion clients
我想知道像whatsapp这样的百万用户实时聊天的架构。
我实现了聊天,但我需要使用更多服务器来处理更多客户端
我看了另一个问题,但我仍然有疑问。
告诉我我说的是否正确:
客户端连接到负载平衡器,该负载平衡器决定连接到其中一个 whatsapp 服务器。
示例 ClientA 连接到 Server1,
ClientB 连接到 Server2,
-如果ClientA要和ClientB通信,发送消息给Server1,现在,你怎么知道ClientB在哪个服务器上?保持对数百万用户的可扩展性 )
如何实现一个聊天来处理数百万用户?
关键是存储来自客户端的所有输入的数据库(或任何其他持久性系统)。通常在这些量表中,一个key-value NoSql Database is suitable, like Apache Cassandra, Amazon Dynamo, or Google Datastore。
这些数据库最适合仅通过 PK 进行快速插入和提取。
所有服务器都需要是无状态的,因此客户端 A 连接到服务器 A 并发送一条文本消息和目标客户端 ID。这被存储在数据库中。然后,客户端 B 连接到服务器 B,服务器 B 进入数据库并检索文本。
我想知道像whatsapp这样的百万用户实时聊天的架构。
我实现了聊天,但我需要使用更多服务器来处理更多客户端
我看了另一个问题,但我仍然有疑问。 告诉我我说的是否正确:
客户端连接到负载平衡器,该负载平衡器决定连接到其中一个 whatsapp 服务器。 示例 ClientA 连接到 Server1, ClientB 连接到 Server2,
-如果ClientA要和ClientB通信,发送消息给Server1,现在,你怎么知道ClientB在哪个服务器上?保持对数百万用户的可扩展性 )
如何实现一个聊天来处理数百万用户?
关键是存储来自客户端的所有输入的数据库(或任何其他持久性系统)。通常在这些量表中,一个key-value NoSql Database is suitable, like Apache Cassandra, Amazon Dynamo, or Google Datastore。 这些数据库最适合仅通过 PK 进行快速插入和提取。
所有服务器都需要是无状态的,因此客户端 A 连接到服务器 A 并发送一条文本消息和目标客户端 ID。这被存储在数据库中。然后,客户端 B 连接到服务器 B,服务器 B 进入数据库并检索文本。