Apache Ignite поддерживает PartitionAwareness в масштабируемом кластере? - PullRequest
1 голос
/ 10 июля 2020

Я тестирую Apache Ignite cluster с помощью тонкого клиента. NET. Я запустил 3 экземпляра ignite на локальном компьютере, используя программу запуска do tnet («платформы \ dotnet \ bin \ Apache .Ignite.exe»). Экземпляры нашли друг друга и автоматически заняли 10800, 10801, 10802 порта. В моем тестовом приложении я создаю 100 кешей с 1000 записями в каждом кеше, а затем пытаюсь последовательно получать элементы из кешей. Проблема в том, что клиент делает запросы к разным узлам, только если я укажу 3 адреса вручную "127.0.0.1:10800..10801 ".

        var configuration = new Core.Client.IgniteClientConfiguration
        {
            Endpoints = new List<string> { "127.0.0.1:10800..10802" },
            EnablePartitionAwareness = true
        };

Если я укажу" 127.0.0.1 "или" 127.0.0.1 " : 10800 "запрос, который я отправил только одному узлу.

            var configuration = new Core.Client.IgniteClientConfiguration
        {
            Endpoints = new List<string> { "127.0.0.1:10801" },
            EnablePartitionAwareness = true
        };

Я проверил клиентские запросы с помощью WireShark:

введите описание изображения здесь

Могу ли я указать только один узел, если я хочу использовать функцию PartitionAwareness?

Может ли тонкий клиент автоматически обнаруживать другие узлы?

Мы планируем автоматическое масштабирование приложения в зависимости от используемой памяти, поэтому все адреса узлов и порты не будут известны при запуске клиента.

Ответы [ 2 ]

3 голосов
/ 10 июля 2020

Дополнение к ответу Александра: вы можете попробовать функцию обнаружения тонких клиентов в предварительной сборке: https://www.nuget.org/packages/Apache.Ignite/2.9.0-alpha20200710

Функция включена, если IgniteClientConfiguration.EnablePartitionAwareness равно true. Первоначально вы можете указать только один адрес сервера, Ignite обнаружит другие серверы и подключится к ним, а затем будет обновлять информацию о кластере при присоединении или выходе узлов.

Помните, что процесс асинхронный и ленивый - когда вы используете Ignite API, он получает обновления кластера. Когда вы ничего не делаете, Ignite тоже простаивает.

Полная документация поставляется с официальным выпуском.

3 голосов
/ 10 июля 2020

Прямо сейчас необходимо указать все адреса для вашей строки подключения.

В ближайшее время появится функция обнаружения тонких клиентов, которая будет отслеживать изменения топологии и сохранять снимок на стороне клиента. Детали реализации: https://cwiki.apache.org/confluence/display/IGNITE/IEP-44%3A+Thin+client+cluster+discovery

Согласно заявке целевой выпуск - 2.9. Думаю, намеченная дата где-то в сентябре.

...