0

您将如何创建一个分布式且易于扩展的 Java 服务器。我创建了一个音频中继器,它通过 UDP 接收和重新发送音频数据包,但是我希望能够在多个服务器上平衡用户。你有什么建议?服务器以以下基本方式工作:用户在房间中注册,然后开始侦听来自服务器的消息或向房间发送音频包。当服务器接收到数据包时,它会查找房间内用户的 IP 地址并将音频数据包重新发送给他们。

4

1 回答 1

1

假设新房间创建的频率相对较低,即使有很多房间、很多服务器和很多正在寻找房间的客户端,我也会推荐ZooKeeper。执行以下操作:

  • 服务器为每个房间创建一个节点,房间名称包含服务器地址。您甚至可以保证每个房间最多有一台服务器占用(请参阅文档中的锁定配方)。
  • 客户端读取具有所需名称的节点,获得相应服务器的地址。这样的读取操作将在服务器之间进行负载平衡,使其具有可扩展性。

作为第二步,您甚至可以通过使用由其他(备用?)服务器监视的临时节点来使您的服务器具有容错性,如果原始服务器出现故障,则声明房间。

于 2013-03-30T17:04:32.200 回答