SQLite ベースの分散型フォールトトレラント DBMS、rqlite 7.0 のリリース

分散 DBMS rqlite 7.0 のリリースが行われました。これにより、SQLite をストレージ エンジンとして使用し、相互に同期されたストレージからクラスターの作業を編成できるようになります。 rqlite の特徴の XNUMX つは、分散型フォールトトレラント ストレージのインストール、デプロイ、メンテナンスが容易であることです。etcd や Consul に似ていますが、キー/値形式の代わりにリレーショナル データ モデルを使用します。 プロジェクト コードは Go で記述され、MIT ライセンスに基づいて配布されます。

すべてのノードを同期状態に保つために、Raft コンセンサス アルゴリズムが使用されます。 Rqlite はオリジナルの SQLite ライブラリと go-sqlite3 ドライバーを使用し、その上でクライアント要求を処理し、他のノードへのレプリケーションを実行し、主要ノードの選択に関するコンセンサスの達成を監視するレイヤーが起動されます。

データベースへの変更は、リーダーとして選択されたノードによってのみ行うことができますが、書き込み操作を伴う接続はクラスター内の他のノードに送信することもでき、リーダーのアドレスを返してリクエストを繰り返します (次のバージョンでは、リーダーへのリクエストの自動転送を追加することを約束します)。 主にフォールト トレランスに重点が置かれているため、DBMS は読み取り操作のみで拡張され、書き込み操作がボトルネックとなります。 単一ノードから rqlite クラスターを実行することが可能であり、このソリューションを使用すると、フォールト トレランスを提供せずに HTTP 経由で SQLite へのアクセスを提供できます。

各ノードの SQLite データはファイルではなくメモリに保存されます。 Raft プロトコルの実装のレイヤー レベルでは、データベースの変更につながるすべての SQLite コマンドのログが保存されます。 このログは、レプリケーション中 (他のノードでリクエストを再現するレベルでのレプリケーション)、新しいノードの起動時、または接続喪失からの回復時に使用されます。 ログのサイズを削減するために、自動パッキングが使用されます。これは、指定された数の変更後に開始され、スナップショットの固定につながり、それに関連して新しいログの維持が開始されます (メモリ内のデータベースの状態はスナップショット + 蓄積された変更ログと同一)。

rqlite の特徴:

  • 別途 SQLite をインストールする必要がなく、クラスターを簡単にデプロイできます。
  • レプリケートされた SQL ストレージを迅速に取得する機能。
  • 実稼働プロジェクト (実稼働グレード) ですぐに使用できます。
  • バッチ モードでデータを更新し、クラスターの先頭ノードを決定できる HTTP(S) API の存在。 さまざまなプログラミング言語用のコマンド ライン インターフェイスとクライアント ライブラリも提供されます。
  • 他のノードを識別するサービスを利用できるため、クラスターを動的に作成できます。
  • ノード間の暗号化データ交換のサポート。
  • 読み取り時にデータの関連性と一貫性をチェックするレベルを構成する機能。
  • ノードを読み取り専用モードで接続するオプションの機能。これはコンセンサスの決定には関与せず、読み取り操作のクラスターのスケーラビリティを向上させるために使用されます。
  • XNUMX つのリクエストでコマンドを組み合わせることに基づく、独自の形式のトランザクションのサポート (BEGIN、COMMIT、ROLLBACK、SAVEPOINT、および RELEASE に基づくトランザクションはサポートされていません)。
  • ホット バックアップの作成のサポート。

新しいリリースでは:

  • Consul および etcd 分散ストレージに基づいて動作できる新しいノード検出サービスを使用した自動 rqlite クラスタリングのサポートが追加されました。 このサービスを使用すると、rqlite ノードが自動的に相互に検索されます。管理者は、共通の Consul または etcd クラスター アドレス (たとえば、「example.com:8500」) を指定して、異なるサーバー上で複数のノードを起動するだけで済み、ノードは自動的にクラスターに結合されます。 リーディング ノードは、Consul または etcd ストレージ内のアドレスに関する情報を定期的に更新します。これにより、他のノードを再構成することなくリーダーを後で変更したり、リーダーを変更した後でも新しいノードを追加したりできます。 AWS Lambda で実行されている従来の Discovery モード サービスは廃止されました。
  • CLI インターフェイスでは、一度に複数のホストを指定できます。最初のノードが使用できない場合は、次のホストに接続されます。
  • rqlited コマンドライン引数を解析するコードが作り直されました。
  • 非推奨の protobuf パッケージは廃止されました。
  • Raft プロトコルの実装で使用される BoltDB ストレージは、etcd プロジェクトからのフォークである bbolt に置き換えられました。

出所: オープンネット.ru

コメントを追加します