java - 如何在 Apache Ignite 中查找正在运行的服务器或客户端 IP 及其端口

标签 java ignite

我正在设置 Apache Ingine 服务器集群,我使用下面的代码,

ipFinder.setAddresses(Arrays.asList("10.154.8.208","10.154.8.121:3389","127.0.0.1:47500..47509"));

如果我运行 Java 代码 n 次,n 台服务器启动,使用 IP 地址及其默认/特定端口之一出现在 IP 列表中地址。

我希望 Java 代码能够找到启动的 IP 和端口服务器。请帮助我找到这些值。

下面是我正在使用的示例代码,

public class IgniteClientStaticIP {

public static void main(String[] args) {

TcpDiscoverySpi spi = new TcpDiscoverySpi();

TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();

ipFinder.setAddresses(Arrays.asList("10.154.8.208","10.154.8.121:3389","127.0.0.1:47500..47509"));
spi.setIpFinder(ipFinder);
IgniteConfiguration cfg = new IgniteConfiguration();


cfg.setPeerClassLoadingEnabled(true);


cfg.setDiscoverySpi(spi);


Ignite ignite = Ignition.start(cfg);

IgniteCompute igniteCompute = ignite.compute();
igniteCompute.broadcast(() -> System.out.println("Hello World"));

}
}

最佳答案

Denis表明这不是您通常需要做的事情。然而,我见过有必要的情况,包括自动化负载平衡器或防火墙规则。因此,带着这个警告......

您可以使用ClusterNode 类获取有关节点的信息。好吧,在本例中,TcpDiscoveryNodeClusterNode 的更具体版本。这是 Scala,但您应该了解要点:

scala> ignite.cluster.nodes.asScala.flatMap { case x : TcpDiscoveryNode => Some(x.socketAddresses) case _ => None }
res5: Iterable[java.util.Collection[java.net.InetSocketAddress]] = ArrayBuffer([XX/192.168.1.89:47501, /0:0:0:0:0:0:0:1%lo0:47501, /127.0.0.1:47501], [XX/192.168.1.89:47500, /0:0:0:0:0:0:0:1%lo0:47500, /127.0.0.1:47500])

关于java - 如何在 Apache Ignite 中查找正在运行的服务器或客户端 IP 及其端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57902530/

相关文章:

Java - 如何在 File[] 中收集结果后填充字符串数组

java - 如何将空格替换为 nbsp?

java - 为什么有些标识符在java中是非法的?

java - 尽管将SQL数据库链接到我的JavaFx程序但仍尝试登录却抛出错误

点燃缓存重新连接问题(缓存已停止)

java - 在单例模式下使用 Apache Ignite

docker - 在Docker上点燃

java - 字符串数组中的错误 indexOf

centos - 任何 apache 点燃 deb/rpm 镜像?

java - 如何知道 JVM 因 Segfault 崩溃的原因?