当前位置: 首页 > 知识库问答 >
问题:

如何向现有Apache Ignite实例添加新主机?

夏侯宏旷
2023-03-14

我试了一些Apache Ignite的例子。我正在以以下格式提供我的Ignite节点的地址

ipFinderTcpIp.setAddresses(memberStrings); // ipFinderTcpIp is of TcpDiscoveryVmIpFinder class
spi.setIpFinder(ipFinderTcpIp); //spi is of TcpDiscoverySpi class 
config.setDiscoverySpi(spi); //config is of IgniteConfiguration class
//memberStrings contains the ipv4 addresses in String format. It is a collection. 

Ignite ignite = Ignition.start(config);

memberStrings的值取自一个输入文件,我想将一个地址动态添加到ignite节点。为了简单起见,假设ignite已经在地址A和B中运行,这两个地址都存在于MemberStrings中。拓扑快照类似于

Topology snapshot [ver=1, servers=2, clients=0, CPUs=8, offheap=4.5GB, heap=3.6GB]

假设我在输入文件中添加一个新地址'C'。我有一个正在运行的线程,它检测这个更改并在MemberStrings中进行更改。我如何确保C也存在于拓扑中,而不停止并重新启动ignite实例以再次运行上面的代码片段??

共有1个答案

汪晨
2023-03-14

基本上,您不需要将这个地址'c'添加到第一个节点的配置中。在开始时,节点C将尝试连接到其列表中的所有地址,并且它不需要将其地址设置在节点'A'的配置中。因此,节点将毫无问题地加入集群。

在某些情况下,使用'shared'标志在所有节点之间共享所有IP地址可能是有用的:https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/spi/discovery/TCP/ipfinder/vm/TCPdiscoveryVMIPfinder.html#setshared-boolean-即,该标志可用于客户端-在重新连接时,它将尝试重新连接到集群中的所有节点。

此外,如果在开始之前不知道所有地址,可以使用IPFinder的其他实现:https://apacheignite.readme.io/docs/tcpip-discovery

 类似资料:
  • 我需要从Spring应用程序向MongoDB实例抛出文档,在那里我可以利用其数据包中的MongoTemplate。 但是Spring将那些instances字段作为MongoDB文档id,导致数据库中的id重复,从而防止了重复的实例。 null 通过阅读这个问题,我发现字段对于Spring是必需的,我需要添加一个字段。 这就是我将文档插入集合的方式: 我对ByteBuddy完全陌生(我认为这可能是

  • 我正在表任务中添加新列名标题。但我得到一个错误,该表中不存在此列。谁能帮我解决那个错误。这是我的密码: 然后添加此代码 到创建的新表文件

  • 问题内容: 我已经读到,可以在Python中添加一个方法到现有对象(即,不是在类定义中)。 我知道这样做并不总是好的。但我们怎么做呢? 问题答案: 在Python中,函数和绑定方法之间存在差异。 绑定方法已“绑定”(描述性)到一个实例,并且无论何时调用该方法,该实例都将作为第一个参数传递。 但是,作为类(而不是实例)的属性的可调用对象仍未绑定,因此你可以在需要时随时修改类定义: 先前定义的实例也会

  • 我有一个熊猫数据帧,它被定义为空,然后我想在做一些计算后添加一些行。 我试图做到以下几点: 如果我试着打印并附加到测试显示中 因此,很明显,该行没有被添加到数据帧中。 我希望输出是

  • 问题内容: 我想在Route和Router类型上添加一个便捷的util方法: 但是编译器告诉我 无法在非本地类型mux.Router上定义新方法 那么我将如何实现呢?是否创建具有匿名mux.Route和mux.Router字段的新结构类型?或者是其他东西? 问题答案: 正如编译器所提到的,您不能在另一个包中扩展现有类型。您可以定义自己的别名或子包,如下所示: 或嵌入原始路由器: