Ignite ClusterGroup.forAttribute работает для клиентских узлов?

#java #ignite

#java #ignite

Вопрос:

Я только что узнал в другом вопросе, что я могу запускать вычислительные задачи на клиентских узлах, и это здорово. Однако я не хочу выполнять задачи на всех клиентах, только на выбранных клиентских узлах. Я идентифицирую узлы по атрибутам в их конфигурации:

 <property name="userAttributes">
    <map>
        <entry key="Role" value="FOR_COMPUTE" />
    </map>
</property>
  

Затем я использую:

 ignite.cluster().forClients().forAttribute("Role", "FOR_COMPUTE");
  

Похоже, это не дает мне clusergroup с теми клиентами, у которых установлен атрибут. Разве это не работает для клиентских узлов?

Ответ №1:

Пользовательские атрибуты действительно работают. Дважды проверьте свои настройки. Убедитесь, что вы запускаете свой клиент с правильной конфигурацией.

Запустите следующий тест:

         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());
        }
  

Вы должны увидеть правильные результаты.

Комментарии:

1. Ваш тестовый код действительно работает. Я читаю свою конфигурацию из XML, но сейчас я перепроверю это.

2. Я обнаружил проблему на своей стороне. Где-то у меня был .forServers() в цепочке. Спасибо за вашу большую помощь!