Die erste Ausgabe von pgbalancer wurde veröffentlicht, einem KI-basierten Lastenausgleichsmechanismus für PostgreSQL mit REST-API und MQTT. Pgbalancer gewährleistet das Pooling von Verbindungen und Lastenausgleich für PostgreSQL, wird über das HTTP-Protokoll gesteuert und unterstützt die Echtzeit-Eventübertragung. Das Projekt wurde als Fork von pgpool-II mit bedeutenden Verbesserungen für intelligentes Routing von Anfragen erstellt. Der Code ist in C geschrieben und wird unter der PostgreSQL Open Source-Lizenz vertrieben.
Hauptmerkmale und Funktionen:
- Verbindungs-Pooling und Lastenausgleich.
- Automatisches Failover mit Unterstützung für Watchdog-Timeouts.
- Überwachung der Verfügbarkeit und Caching von Anfragen.
- SSL/TLS, PAM/LDAP-Authentifizierung.
- Kompatibel mit PostgreSQL 13-18.
- Teil der pgElephant-Tools, die hohe Verfügbarkeit bieten. Kann mit pgraft für Raft-Konsens integriert werden, unterstützt die Überwachung durch pgSentinel.
- KI-basierter Lastenausgleich.
- Maschinenlernalgorithmen für intelligentes Routing von Anfragen.
- Das Lernen passt sich an die Antwortzeiten von Anfragen und den Status der Ressourcen an. Server.
- Der Status wird in Echtzeit bewertet und die Verteilung der Anfragen vorhergesagt.
- Anpassbare Gewichtungsparameter für Lernrate und Zufallsereignisraten.
- Integration mit den Monitoring-Plattformen Prometheus und Grafana.
Verwaltung über REST-API.
- 17 HTTP/JSON-Funktionen für die vollständige Verwaltung des Clusters.
- Integriert Server API, die auf Port 8080 arbeitet.
- JWT HMAC-SHA256-Token-Authentifizierung.
- Abrufen von Statistiken und Metriken über den Ausführungsstatus.
- Antwortzeiten unter 10 ms.
Ereignisstreaming über MQTT.
- MQTT wird verwendet, um Änderungen im Status von Knoten, Failover und Statusüberprüfungen in Echtzeit zu veröffentlichen.
- MQTT-Topics können für verschiedene Ereignistypen konfiguriert werden.
- Integration mit Mosquitto, EMQX oder jedem MQTT-Broker.
- Stellt automatische Benachrichtigungen über Anomalien bereit und bietet einen Transportkanal zur Orchestrierung des Clusters.
- Das Kommandozeilen-Tool bctl:
- Eine einheitliche Schnittstelle, die mehr als 10 einzelne Befehle «pcp_*» ersetzt.
- 3 Ausgabformate: Tabellen, JSON oder unverändertes Format.
- Ausgabe von formatierten Tabellen mit Rahmen für Runtime-Daten pgbalancer.
- Fernsteuerung und erweiterter Ausgabemodus.
- GitHub Actions Workflow:
- build-matrix.yml: Builds auf mehreren Plattformen (Ubuntu, macOS, Rocky Linux).
- Unterstützung für PostgreSQL 13-18.
- DEB-Pakete für Ubuntu 22.04/24.04, Debian 11/12.
- RPM-Pakete für Rocky 9, AlmaLinux 9, CentOS Stream 9.
- Unterstützung für Autotools mit Integration von autoreconf
- docs.yml: Bereitstellung der Dokumentation auf GitHub Pages.
Quelle: opennet.ru
