Публикуван е първият брой на pgbalancer, балансьор на натоварването на PostgreSQL, базиран на изкуствен интелект с REST API и MQTT. Pgbalancer осигурява обработка на пул от връзки и баланс на натоварването за PostgreSQL, управляван чрез HTTP протокол и поддържа стрийминг на събития в реално време. Проектът е създаден като форк на pgpool-II с съществени подобрения за интелигентно маршрутизиране на заявки. Кодът е написан на C и се разпространява под отворена лицензия PostgreSQL.
Основни функции и особености:
- Пул от връзки и баланс на натоварването.
- Автоматично прехвърляне при повреда с поддръжка на watchdog таймер.
- Наблюдение на работоспособността и кеширане на заявки.
- SSL/TLS, PAM/LDAP автентикация.
- Съвместимост с PostgreSQL 13-18.
- Част от утилитите pgElephant, осигуряващи висока наличност. Може да се интегрира с pgraft за Raft консенсус, поддържа се наблюдение с pgSentinel.
- Баланс на натоварването на базата на изкуствен интелект.
- Алгоритми за машинно обучение за интелигентно маршрутизиране на заявки.
- Обучението се адаптира в зависимост от времето за отговор на заявките и състоянието на ресурсите. сървър.
- Оценява се състоянието в реално време и се предсказва балансът на заявките.
- Конфигурируеми параметри на теглата за скорост на обучение и скорост на предположения за случайни събития.
- Възможност за интеграция с платформите за наблюдение Prometheus и Grafana.
Управление чрез REST API.
- 17 функции HTTP/JSON за пълно управление на клъстера.
- Интегриран сървър API, работещ на порт 8080.
- Автентикация с токени JWT HMAC-SHA256.
- Получаване на статистики и метрики за състоянието на изпълнението.
- Време за отговор под 10 мс.
Стрийминг на събития MQTT.
- MQTT се използва за публикуване на промени в състоянието на възлите, прехвърляне при повреда и проверки на състоянието на ресурсите в реално време.
- Могат да се конфигурират MQTT теми за различни типове събития.
- Интеграция с Mosquitto, EMQX или всеки MQTT брокер.
- Осигурява автоматично уведомление за нестандартни събития и предоставя транспортен канал за оркестрация на клъстера.
- Команден инструмент bctl:
- Единен интерфейс, заменящ повече от 10 отделни команди „pcp_*“.
- 3 формата на изход: таблици, JSON или формат без промяна.
- Изход на форматизирани таблици с обрамчване за runtime данни на pgbalancer.
- Дистанционно управление и разширен режим на изхода.
- GitHub Actions Работен поток:
- build-matrix.yml: Събиране на множество платформи (Ubuntu, macOS, Rocky Linux).
- Поддръжка на PostgreSQL 13-18.
- DEB пакети за Ubuntu 22.04/24.04, Debian 11/12.
- RPM пакети за Rocky 9, AlmaLinux 9, CentOS Stream 9.
- Поддръжка на Autotools с интеграция на autoreconf
- docs.yml: Разгръщане на документация GitHub Pages.
Източник: opennet.ru
