Dragonfly プロジェクトは、Redis と Memcached のより高速な代替を開発しています。

Dragonfly インメモリ キャッシュ システムの最初のリリースが利用可能になり、Memcached プロトコルと Redis プロトコルのサポートが提供されますが、より高いパフォーマンスと少ないメモリ消費でクエリを実行できるようになります。 このシステムはキー/値形式でデータを操作し、DBMS への遅いクエリと RAM の中間データをキャッシュして、高負荷サイトの作業を高速化する軽量ソリューションとして使用できます。 Dragonfly コードは C/C++ で書かれており、BSL (ビジネス ソース ライセンス) に基づいて配布されます。

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

開発者と実証済みのテストによると、Dragonfly は最速のメモリ ストレージ システムであると主張しています。 Redis と比較して、Dragonfly は一般的なワークロードでパフォーマンスが 25 倍向上し、メモリ消費量が 2 倍削減されました。 6 つの Dragonfly サーバーは 16 秒あたり数百万のリクエストを処理できます。たとえば、Amazon EC3.8 cXNUMXgn.XNUMXxlarge 環境では、XNUMX 秒あたり XNUMX 万リクエストのパフォーマンスを達成することができました。

Dragonfly プロジェクトは、Redis と Memcached のより高速な代替を開発しています。

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

Dragonfly プロジェクトは、Redis と Memcached のより高速な代替を開発しています。

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

最初のリリースで利用可能な機能の中で、RESP2 プロトコルと 130 の Redis コマンドのサポートが注目されています。これは、Redis 2.8 リリースの機能にほぼ対応します。 さらに、Dragonfly は、CAS (チェック アンド セット) を除くすべての memcached コマンドをサポートし、スナップショット作成のための非同期操作のサポートを提供し、予測可能なメモリ消費を提供し、組み込みの Lua 5.4 インタープリタを提供し、ハッシュなどの複雑なデータ型をサポートします。セットおよびリスト (ZSET、HSET、LIST、SETS、および STRING)。

空きメモリがなくなった後、古いデータを新しいデータに自動的に置き換えるキャッシュ モードも別途利用できます。 データに関連性があるとみなされる期間をデータに付加することができます。 ストレージ状態はバックグラウンドでディスクにフラッシュされ、再起動後に回復できます。 システムを管理するために、HTTP コンソール (TCP ポート 6379 にバインド) と、Prometheus と互換性のあるメトリクスを返すための API が提供されます。 将来のバージョンでは、Redis コマンドのサポートを拡張し、ストレージを複製してフォールト トレランスと負荷分散を提供する機能を実装する予定です。

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

コメントを追加します