Microsoft Researchの新しいリモートキャッシュストレージ技術「Garnet」
(github.com/microsoft)-
Garnetの紹介
- Microsoft Researchが開発した新しいリモートキャッシュストレージであるGarnetは、いくつかの独自の利点を提供する。
- 一般的なRESPワイヤプロトコルをベースとしており、ほとんどのプログラミング言語で利用可能なRedisクライアントを修正なしで使用できる。
- 多数のクライアント接続や小さなバッチ処理で、より高いスループットとスケーラビリティを提供し、大規模なアプリやサービスのコスト削減に貢献する。
- 高速化TCPが有効なAzureクラウドVMを使用し、非常に低いクライアントレイテンシー(99.9%で300マイクロ秒未満)を実現する。
- 最新の.NET技術を基盤とするGarnetは、クロスプラットフォームで拡張性があり、モダンな設計を備えている。
- .NETの豊富なライブラリエコシステムを活用してAPIの範囲を広げ、最適化のためのオープンな機会を提供する。
-
機能の要約
- Garnetは、生文字列、分析、オブジェクト操作を含むさまざまなAPIを実装している。
- クライアント側のRESPトランザクションと、C#で書かれたサーバー側ストアドプロシージャを通じて、マルチキートランザクションを処理できる。
- ユーザーはC#の利便性と安全性を活用して、生文字列と新しいオブジェクト型に対するカスタム操作を定義できる。
-
性能プレビュー
- Garnetと主要なオープンソースのキャッシュストレージを比較したいくつかの主な結果が、Webサイトで提示されている。
-
設計上のハイライト
- Garnetの設計は、ネットワークでパケットを受信するところから、データベース操作の解析と処理、ストレージとの相互作用の実行まで、キャッシュストレージスタック全体を見直している。
- Garnetのネットワーク層は、以前の研究であるShadowFaxから着想を得た共有メモリ設計を継承している。
- Garnetのストレージ設計は、統合された操作ログによって規定される2つのTsavoriteキー・バリューストアで構成されている。
-
クラスターモード
- 単一ノードでの実行に加えて、Garnetはシャーディングおよびレプリケーションのデプロイメントを作成・管理できるクラスターモードをサポートしている。
- クラスターはまだ開発中の状態である。
-
次のステップ
- ドキュメントサイトに移動するか、Getting StartedセクションまたはReleaseセクションへ直接移動できる。
-
ライセンス
- このプロジェクトはMITライセンスの下で提供されており、LICENSEファイルを参照できる。
-
プライバシー
- プライバシーに関する情報は、MicrosoftのプライバシーWebサイトで確認できる。
-
コントリビュート
- このプロジェクトは貢献と提案を歓迎しており、ほとんどの貢献ではCLAへの同意が必要となる。
- Microsoft Open Source行動規範を採用しており、行動規範FAQを参照するか、追加の質問や意見がある場合はopencode@microsoft.comまで連絡できる。
-
商標
- このプロジェクトには、プロジェクト、製品、またはサービスに関する商標やロゴが含まれている場合があり、Microsoftの商標またはロゴの使用はMicrosoftの商標およびブランドガイドラインに従う必要がある。
GN⁺の意見
- Garnetは既存のRedisクライアントと互換性を保ちながら、より高い性能とスケーラビリティを提供する新しいキャッシュストレージであり、大規模なクラウドサービスを運用する企業にとって魅力的かもしれない。
- この技術が実環境でどれほど安定して動作するのか、また既存のキャッシュソリューションと比べてどのような実質的な利点を提供するのかについて、長期的なデータが必要である。
- Garnetのクラスターモードがまだ開発中である点は、大規模なデプロイを検討するユーザーにとって重要な考慮事項となり得る。
- Garnetはオープンソースとして提供されているため、コミュニティの貢献を通じてさらに多くの機能や改善が行われる可能性があり、これは技術の成熟度を高めることに寄与しうる。
- Garnetを導入する前に、既存システムとの互換性、性能向上に対するコスト、そして潜在的な移行コストを考慮する必要がある。
1件のコメント
Hacker Newsの意見
ベンチマークの性能チャートによると、GarnetのGETコマンドのスループットはDragonflyより10倍以上高い。50%レイテンシはDragonflyよりやや高いが、99パーセンタイルのレイテンシはDragonflyよりやや低い。GarnetとDragonflyのスループットとレイテンシはRedisよりはるかに優れており、Redisにはかなりの性能最適化が必要であることを示唆している。
Microsoft Windows ServerでWSL2に依存せず、直接Redis(または互換性のあるもの)を実行する必要がある人にとって素晴らしいニュースである。以前はメモリ使用量の問題(主にメモリマップドファイルが原因と推定される)があり、現在はサポートされていないRedisポートが存在していた。
実際の非Azureスタックで運用されたときの性能が印象的なRedis代替である。実運用ではどうなのか気になる。
Microsoftと.NETチームが非常に印象的なインフラプロジェクトを構築しているのを見るのは興味深い。Yarpはリバースプロキシ/APIゲートウェイなどを担い、今度はメモリキャッシュ向けのGarnetがある。
Garnetはマルチスレッドであるため、
MSETはアトミックではない。アトミックなMSETバージョンが必要なら、トランザクション(ストアドプロシージャ)として表現する必要がある。ここでのコメントを見ると、もう誰もmemcachedを使っていないように見える?
Microsoft Researchは時々印象的なプロジェクトを出してくる。R&Dをして給料をもらえるのは楽しそうだ。大企業が業界の役に立つこの種のR&Dスタイルのプロジェクトをもっとやってくれればいいのにと思う。Hashicorpが売りに出るなら、良い会社に買収されてほしい。
このプロジェクトは本当に良さそうだ。最終的には「Azure Cache for Redis」リソースを置き換えてほしい。現状では遅く、Windowsで動くように作られたRedisのフォークであり、インスタンスの作成にほぼ1時間かかる。
このシステムがどこで性能を発揮できないのか気になる。もっと小さいインスタンスタイプでのベンチマークも見てみたい。72vCPUはかなり大きなインスタンスだ。