Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java RMI客户端与多台服务器通信的高级方法_Java_Distributed Computing_Rmi - Fatal编程技术网

java RMI客户端与多台服务器通信的高级方法

java RMI客户端与多台服务器通信的高级方法,java,distributed-computing,rmi,Java,Distributed Computing,Rmi,我试图让客户机与多个服务器进程通信,但到目前为止,我找不到任何关于客户机如何发现和区分多个服务器进程的信息。如果您能对我的工作原理以及我在哪里可以学到更多的东西做出更高层次的解释,我将不胜感激 目前,我的方法是找到一台服务器并与之交互,如下所示: ServerInterface server; try { Server = (ServerInterface) Naming.lookup(String.format("//%s:%d/Server", hostName, ser

我试图让客户机与多个服务器进程通信,但到目前为止,我找不到任何关于客户机如何发现和区分多个服务器进程的信息。如果您能对我的工作原理以及我在哪里可以学到更多的东西做出更高层次的解释,我将不胜感激

目前,我的方法是找到一台服务器并与之交互,如下所示:

ServerInterface server;
try {
Server = (ServerInterface) Naming.lookup(String.format("//%s:%d/Server", hostName, serverPort));
}
catch (Exception e) {
System.out.println("Unable to lookup server");
return;
}
server.operation();

我不清楚如何使用它来查找多个服务器并选择一个服务器来执行操作。

您可以在特定主机/端口组合上使用
Naming.list(name)
检查哪些服务可用。假设我已启动4台名为myname1..4的RMI服务器,为端口1099注册myname1/2,并在端口1100注册myname3/4,则以下查询将返回这些结果:

Naming.list("//:1099")
==> String[2] { "//:1099/myname1", "//:1099/myname2" }
Naming.list("//:1100")
==> String[2] { "//:1100/myname3", "//:1100/myname4" }
Naming.list("//MY_MACHINE:1100")
==> String[2] { "//MY_MACHINE:1100/myname3", "//MY_MACHINE:1100/myname4" }
您可以控制使用哪些名称以及它们在哪些机器上运行,因此您可以设计一个简单的命名策略,这意味着您可以搜索最合适的服务器,并实现您自己的服务器查找层,以便所有客户机以相同的方式连接


注意,此策略不考虑当前服务器负载,并且在决定如何使用最佳服务器时,您可能会考虑其他策略。假设您有2个数据中心(可能是不同的国家!),每个中心都有一对计算机(DCA1/DCA2/DCB1/DCB2)。在DCA1上运行的客户机应该在同一主机上进行查找,然后再在同一数据中心尝试任何查找,然后再从其他数据中心进行查找。

Err,
注册表
?不清楚您在问什么。请您向我解释一下注册表如何使客户机发现多个服务器并选择其中一个进行交互?例如,
注册表
将名称映射到远程对象。您可以有任意多个名称和任意多个远程对象,但仅受系统限制。当客户端不知道服务器名称时,是否有方法连接到服务器?通过这种方式,可以部署非预定义数量的服务器,客户机可以选择其中一个来使用。很抱歉,这似乎没有通知您,因为我最近才开始使用JavaRMI