Введение#
В этом разделе описана информация о способах, с помощью которых узлы могут обнаруживать друг друга для формирования кластера.
При запуске узлу присваивается роль: серверный или клиентский. На серверные узлы приходится основная нагрузка кластера — кеширование данных, выполнение вычислительных задач и так далее. Клиентские узлы присоединяются к топологии как серверные, но не хранят данные. Они используются для выполнения запросов пользователя и передачи данных в кластер.
Для формирования кластера у каждого узла должна быть возможность подключиться ко всем другим узлам. Для этого нужно правильно настроить механизм обнаружения узлов Discovery (подробнее о нем написано в разделе ниже).
Клиентские узлы обычно избыточны: для пользовательских запросов к DataGrid достаточно использовать тонкие клиенты — подробнее о них написано в разделе «Обзор тонких клиентов». Они доступны для языков Java, .NET, C++, Node.JS, Python и PHP.
В отличие от обычных клиентских узлов, тонкие клиенты не входят в топологию кластера. Вместо этого они устанавливают сетевое соединение с одним из узлов и выполняют все операции с помощью бинарного протокола — подробнее о нем написано в разделе «Обзор бинарного протокола клиента».

Механизмы обнаружения (Discovery)#
Узлы DataGrid могут автоматически находить друг друга и формировать кластер. Это позволяет при необходимости масштабировать его без перезапуска.
В DataGrid есть две реализации механизма обнаружения:
TCP/IP Discovery (подробнее о нем написано в разделе TCP/IP Discovery) — реализация механизма
DiscoverySpiпо умолчанию, которая организует узлы кластера в топологию «кольцо».ZooKeeper Discovery (подробнее о нем написано в разделе ZooKeeper Discovery) — альтернативная реализация механизма
DiscoverySpi, которая организует узлы в топологию «звезда», позволяет масштабировать кластеры DataGrid и сохранять производительность и линейную масштабируемость.