我有一个Java TCP / IP客户端和服务器程序,它根据客户端的请求交换数据。我现在需要实现此服务器的多个实例,每个实例都包含数据的子集,客户端仍然只连接到主服务器。什么是最好的方法,最好不要多线程?
答案 0 :(得分:0)
(我同意多线程将是对高可用性和性能的改进,尽管并非绝对必要。)
如果你想要这样的计划:
{ ---> slave server 1
client ---> master server { ---> slave server 2
{ ---> slave server 3
...然后,您必须向主服务器添加客户端 API,因为它将具有双重角色:作为服务器,要接收来自客户端的请求,并作为客户端向从服务器发送请求。
如果您已经实现了客户端/服务器通信协议,那么将相同的协议重用于通信主/从服务器将是有用的。
您还必须解决绑定问题:主人如何知道有多少奴隶和哪些奴隶?
还有可用性问题:如果其中一个奴隶关闭怎么办?
如果共享可写数据,则数据同步可能会成为问题。在这种情况下,主设备必须向每个受影响的从设备广播相同的写入。