




Открываем в Open Source библиотеку для автоматического обнаружения узлов Tarantool
Выпустили в open source go-discovery — Go-библиотеку для автоматического обнаружения узлов кластера Tarantool 3.0. Фильтрация по ролям и тегам, подписка на изменения топологии, пул соединений с балансировкой — все это теперь доступно на GitHub под лицензией BSD-2.
Если у вас кластер Tarantool из 5 узлов — можно захардкодить адреса и не думать. Но когда узлов 50+, начинаются проблемы:
Узлы падают и поднимаются
Реплики становятся мастерами (и наоборот)
Добавляются новые инстансы
Меняется конфигурация ролей и тегов
В Tarantool 3.0 вся конфигурация кластера может храниться в централизованном хранилище: etcd или Tarantool Config Storage. Но как клиентскому приложению узнать, куда отправлять запросы? И как реагировать на изменения?
go-discovery автоматизирует эту работу: получает топологию из централизованного хранилища, фильтрует узлы по нужным критериям, следит за изменениями и управляет пулом соединений.
Библиотека читает конфигурацию кластера из централизованного хранилища и возвращает актуальный список узлов с их характеристиками: имя, группа, репликасет, роли, теги, режим работы (RW/RO), адреса для подключения.
Редко нужны все узлы кластера. Чаще — подмножество по определенным критериям. Библиотека предоставляет набор фильтров, которые можно комбинировать:
По группам — выбрать узлы из конкретных групп
По репликасетам — ограничить выборку определенными репликасетами
По именам — указать конкретные узлы
По режиму RW/RO — только мастера или только реплики
По ролям — узлы с определенными ролями (storage, api, router и т.д.)
По тегам ролей — фильтрация по roles_cfg.tags
По тегам приложения — фильтрация по app.cfg.tags
Фильтры применяются последовательно, сужая выборку.
Однократный запрос списка узлов — это хорошо, но недостаточно. Конфигурация
Читать на habr.com