- PostgreSQLクラスターの状態をリアルタイムで検知するために設計されたサイドカー型マイクロサービス
- ホストの生存可否、マスター/レプリカの判別、レプリカ遅延時間を即座に確認可能
- 軽量・高性能な構造: メモリ使用量は約9MiB、リクエストあたり低いCPU負荷で毎秒最大9000リクエストを処理
- すべてのデータはメモリベースのレスポンスとして提供され、リクエスト遅延を最小化
- バックグラウンドで定期的にPostgreSQLホストの状態をポーリングし、その結果をHTTP APIとして公開(Plain/JSONレスポンス)
- 主なAPIエンドポイント
/master: 現在のマスターホストを返す
/replica: ラウンドロビンアルゴリズムで選択されたレプリカを返す
/sync_by_time, /sync_by_bytes: 時間またはバイト単位の同期状態を基準にしたレプリカを返す
/hosts: すべてのホストの状態一覧(JSON)
/status: 特定ホストの詳細な状態を照会
- 環境変数ベースの設定: 接続タイムアウト、許容遅延上限、ポーリング周期などを細かく制御可能
- 単一writerと多数のreaderで構成されたロックフリー(lock-free)設計により、高速な読み取りレスポンスと最新データの維持を実現
- 一時的なデータ不整合の可能性を許容しつつ、応答速度を最適化
- サービスの開始・終了および状態変更イベントをstdout/stderrに記録し、フェイルオーバー、復旧、同期状態の変化をリアルタイムで表示
- マスター-レプリカ切り替えシナリオをプロキシベースでシミュレーション可能
まだコメントはありません。