Ignite ClusterGroup.forAttribute 适用于客户端节点?
Ignite ClusterGroup.forAttribute works for client nodes?
我刚刚在另一个问题中了解到我可以 运行 在客户端节点上计算任务,这很棒。
但是,我不想在所有客户端上执行任务,只希望在选定的客户端节点上执行任务。我通过配置中的属性来识别节点:
<property name="userAttributes">
<map>
<entry key="Role" value="FOR_COMPUTE" />
</map>
</property>
然后我使用:
ignite.cluster().forClients().forAttribute("Role", "FOR_COMPUTE");
这似乎无法让我与那些具有属性集的客户端建立一个集群。这不适用于客户端节点吗?
用户属性确实有效。
仔细检查您的设置。确保您使用正确的配置启动客户端。
运行以下测试:
IgniteConfiguration serverConfig = new IgniteConfiguration();
serverConfig.setIgniteInstanceName("server");
Ignition.start(serverConfig);
IgniteConfiguration clientConfig = new IgniteConfiguration();
clientConfig.setClientMode(true);
clientConfig.setIgniteInstanceName("client");
Map<String, String> userAttributes = new HashMap<>();
userAttributes.put("Role", "FOR_COMPUTE");
clientConfig.setUserAttributes(userAttributes);
Ignite ignite = Ignition.start(clientConfig);
System.out.println("Role user attribute value: " + ignite.cluster().localNode().attribute("Role"));
ClusterGroup filteredNodes = ignite.cluster().forClients().forAttribute("Role", "FOR_COMPUTE");
for (ClusterNode node: filteredNodes.nodes()) {
System.out.println("filtered id: "+ node.id());
}
您应该会看到正确的结果。
我刚刚在另一个问题中了解到我可以 运行 在客户端节点上计算任务,这很棒。 但是,我不想在所有客户端上执行任务,只希望在选定的客户端节点上执行任务。我通过配置中的属性来识别节点:
<property name="userAttributes">
<map>
<entry key="Role" value="FOR_COMPUTE" />
</map>
</property>
然后我使用:
ignite.cluster().forClients().forAttribute("Role", "FOR_COMPUTE");
这似乎无法让我与那些具有属性集的客户端建立一个集群。这不适用于客户端节点吗?
用户属性确实有效。 仔细检查您的设置。确保您使用正确的配置启动客户端。
运行以下测试:
IgniteConfiguration serverConfig = new IgniteConfiguration();
serverConfig.setIgniteInstanceName("server");
Ignition.start(serverConfig);
IgniteConfiguration clientConfig = new IgniteConfiguration();
clientConfig.setClientMode(true);
clientConfig.setIgniteInstanceName("client");
Map<String, String> userAttributes = new HashMap<>();
userAttributes.put("Role", "FOR_COMPUTE");
clientConfig.setUserAttributes(userAttributes);
Ignite ignite = Ignition.start(clientConfig);
System.out.println("Role user attribute value: " + ignite.cluster().localNode().attribute("Role"));
ClusterGroup filteredNodes = ignite.cluster().forClients().forAttribute("Role", "FOR_COMPUTE");
for (ClusterNode node: filteredNodes.nodes()) {
System.out.println("filtered id: "+ node.id());
}
您应该会看到正确的结果。