我有Chat Client Server应用程序,我们正在扩展。所以我需要在两台聊天服务器之间进行服务器间通信。通过Java套接字的InterServer通信
问题是:假设有两个服务器A和B现在假设客户 C1被TCP连接与服务器A和与 服务器B. 客户端C2被连接TCP然后问题是:作为同一器件的应用客户端C1和C2应该能够相互识别为已登录并可在线使用,但由于没有内部服务器 通信,因此不会发生这种情况。
可能的解决方案否1是:使用TCP连接将服务器A和服务器B登录到每个其他 。在这里,我可以通过 TCP连接将登录XML 消息(字符串)和DataInputStream转发到其他服务器。所以每个登录都被转移到另一台服务器上,以便每台服务器都可以访问每个客户端,客户端C1可以看到 客户端C2已登录(在线),反之亦然。
解决方案1的问题是:假设客户端C1现在可以看到Client C2为 ,并且客户端C1向客户端C2发送消息。 会发生什么是服务器A将尝试写入DatainputStream为客户端 C2它建立在服务器B上,而不是在服务器A上。这里是 问题的代码将在这里打破,服务器A将无法发送 消息给客户端C2。
任何输入将不胜感激。
谢谢
为什么您需要扩展到多台机器?我们在谈论多少用户?您是否已经使用了非阻塞IO或者仍然使用每个连接的一个线程?如果可能的话,避免在多台机器上扩展 - 这是一个(有状态)的痛苦世界。 – 2012-04-17 07:39:21
谢谢reply.Well我的客户希望确保如果他会得到更多的打击他的产品,他应该能够扩大规模。我们讨论了基准测试和除了新产品以外的所有产品,他无法计算可能的命中数。所以我必须实施服务器间通信,无论如何,正如我上面所解释的。该产品已经在使用每个连接使用Thread.am思考非阻塞套接字,它的即将到来。所以在你的想法中的任何可能的解决方案呢? – Java 2012-04-17 08:08:28