インメモリ データ キャッシュ システムである Dragonfly 1.0 のリリース

Dragonfly のメモリ内キャッシュおよびストレージ システムがリリースされました。これは、キー/値形式でデータを操作し、高負荷のサイトの作業を高速化し、DBMS への遅いクエリや中間データを RAM にキャッシュするための軽量ソリューションとして使用できます。 Dragonfly は Memcached プロトコルと Redis プロトコルをサポートしているため、コードを再加工することなく、既存のクライアント ライブラリを使用し、Memcached と Redis を使用するプロジェクトを Dragonfly に転送できます。

Redis と比較して、Dragonfly は、Amazon EC2 c6gn.16xlarge 環境の一般的なワークロードで 25 倍のパフォーマンス向上 (3.8 秒あたり 6 万リクエスト) を達成しました。 AWS c16gn.4.7xlarge 環境の Memcached と比較して、Dragonfly は 3.8 秒あたり 806 倍の書き込みリクエスト (1.77 万対 3.7)、2.1 秒あたり XNUMX 倍の読み取りリクエスト (XNUMX 万対 XNUMX 万) を実行できました。

インメモリ データ キャッシュ システムである Dragonfly 1.0 のリリース

5 GB のデータを保存するテストでは、Dragonfly は Redis よりも 30% 少ないメモリを必要としました。 「bgsave」コマンドでスナップショットを作成すると、メモリ消費量が増加しますが、ピーク時のメモリ消費量は Redis のほぼ 30 分の 42 にとどまり、スナップショットの記録操作自体ははるかに高速です (テストでは、Dragonfly のスナップショットは XNUMX 秒で書き込まれました)秒、一方 Redis は XNUMX 秒)。

インメモリ データ キャッシュ システムである Dragonfly 1.0 のリリース

リソースを共有しない (シェアードナッシング) マルチスレッド アーキテクチャのおかげで高いパフォーマンスが実現されます。つまり、各スレッドには、データの独自の部分を持つ個別のプロセッサが割り当てられ、ミューテックスやスピン ロックなしで動作します。 複数のキーを操作する際の原子性を確保するために、軽量の VLL ロックが使用されます。 情報をメモリに効率的に保存するには、パーティション化されたハッシュ テーブルの一種を実装するダッシュテーブル構造が使用されます。

Dragonfly のいくつかの機能:

  • キャッシュ モード。空きメモリがなくなった後、古いデータを新しいデータに自動的に置き換えます。
  • データが関連しているとみなされる存続期間中のデータへのバインドのサポート。
  • 再起動後の回復のために、バックグラウンドでストレージ状態をディスクにフラッシュする機能のサポート。
  • システム管理用の HTTP コンソール (TCP ポート 6379 にバインド) と、Prometheus と互換性のあるメトリクスを返す API の存在。
  • 185 個の Redis コマンドのサポート。これは、Redis 5 リリースの機能とほぼ同等です。
  • CAS (チェックアンドセット) を除くすべての Memcached コマンドをサポートします。
  • スナップショットを作成するための非同期操作のサポート。
  • 予測可能なメモリ消費量。
  • 組み込みの Lua 5.4 インタープリター。
  • ハッシュ、セット、リスト (ZSET、HSET、LIST、SETS、STRING) および JSON データなどの複雑なデータ型をサポートします。
  • フォールト トレランスと負荷分散のためのストレージ レプリケーションをサポートします。

Dragonfly コードは C/C++ で書かれており、BSL (ビジネス ソース ライセンス) に基づいて配布されます。 BSL ライセンスは、オープン コア モデルの代替として MySQL の共同創設者によって提案されました。 BSL の本質は、高度な機能のコードが最初は変更可能であることですが、追加の条件が満たされた場合に限り、しばらくの間は無料で使用できます。この条件を回避するには商用ライセンスの購入が必要です。 Dragonfly プロジェクトの追加ライセンス条項では、2.0 年 15 月 2028 日にコードを Apache XNUMX ライセンスに転送する必要があります。 現時点では、このライセンスではサービスと製品の動作を保証する目的でのみコードの使用が許可されていますが、Dragonfly のアドオンとして機能する有料クラウド サービスの作成への使用は禁止されています。

バージョン Dragonfly 1.0 は、プライマリ サーバーからセカンダリ サーバーへのデータ レプリケーションのサポートを実装していることで注目に値します。 ただし、Dragonfly は、Dragonfly ベースまたは Redis ベースのプライマリ サーバーからデータを受信するセカンダリ ストレージとして使用するように構成できます。 レプリケーション管理 API は Redis と互換性があり、ROLE および REPLICAOF (SLAVEOF) コマンドの使用に基づいています。

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

コメントを追加します