Microsoft Research、Redis互換のリモートキャッシュストアシステム「Garnet」をオープンソース化:WindowsやAzureサービスでも活用
Microsoft Researchは、Windows、Azure Resource Managerなどのユースケースで活用しているリモートキャッシュストアシステム「Garnet」をオープンソース化した。
Microsoft Researchは2024年3月18日(米国時間)、リモートキャッシュストアシステム「Garnet」をオープンソースで公開した。
Microsoft Researchによると、Garnetは、Windowsをはじめ、Webエクスペリエンスプラットフォーム、「Azure Resource Manager」「Azure Resource Graph」など、Microsoftのさまざまなユースケースに活用しているという。
従来のキャッシュストアの課題とは
Microsoft Researchは「クラウドやエッジコンピューティングの成長により、より高効率、低レイテンシ、低コストでデータへのアクセスや更新、変換が必要なアプリケーションやサービスが増加している。ストレージとのやりとりが運用コストの多くを占める中で、キャッシュストアレイヤーは運用コストの削減やアプリケーションのパフォーマンス向上のカギとなる。『Redis』『Memcached』『KeyDB』『Dragonfly』など多くのオープンソースシステムを含むキャッシュストア業界の成長にもつながった」との認識を示す。
最近のキャッシュストアは豊富なAPI群と機能を提供している。だが、「最新のハードウェア機能(複数コア、階層型ストレージ、高速ネットワーク)を最大限に活用することはできていない。また現代のキャッシュストアの多くはクロスプラットフォームで機能するように設計されていない問題がある」と述べている。
Microsoft Researchは2016年から、キーバリューストアアーキテクチャの研究、調査を進めてきた。2018年に、埋め込みキーバリューストアライブラリの「FASTER」を公開した。
2021年には、Microsoftにおけるユースケースの要件に基づき、より広範なネットワーク環境でのパフォーマンスメリットの維持、向上を目指し、既存のキャッシュストアに代わる新しいリモートキャッシュストアの開発を開始した。こうして生まれたのが、Gartnetだ。
Garnetの特徴、メリット
Microsoftは、Garnetの特徴やメリットを次のように解説している。
- RESP(REdis Serialization Protocol)をベースとして構築されているため、ほとんどのプログラミング言語で利用可能なRedisクライアントから、Garnetを利用できる
- 多くのクライアント接続と小規模バッチでのスケーラビリティとスループットが向上しており、大規模アプリやサービスのコスト削減につながる
- 現実に基づいたシナリオで99%タイルおよび99.9%タイルの両方で優れたクライアントレイテンシを提供する
- 最新の.NETに基づいており、クロスプラットフォームで拡張可能だ。パフォーマンスを犠牲にすることなく、開発が容易で進化しやすいように設計されている。.NETの豊富なライブラリエコシステムを活用して、最適化に取り組むこともできる。.NETにより、GarnetはLinuxとWindows双方で高性能な動作を実現する
APIの機能
Garnetは、文字列操作、分析操作、オブジェクト操作など、幅広いAPIをサポートしている。シャーディング、レプリケーション、ダイナミックキーマイグレーションを備えたクラスタモードも実装している。
クライアントサイドのRESPトランザクションとC#による独自のサーバサイドストアドプロシージャを提供する。これにより、ユーザーは未加工の文字列と新しいオブジェクトタイプの両方に対してカスタム操作を定義できる。
ネットワーク、ストレージ
Garnetは、高速、プラグイン可能なネットワークレイヤーの採用や、カーネルバイパススタックの活用など、将来的な拡張性を確保している。基本的なアクセス制御だけでなく、TLS通信もサポートしている。
Garnetのストレージレイヤーである「Tsavorite」は、FASTERから分岐したもので、スレッドスケーラビリティ、階層型ストレージのサポート(メモリ、SSD、クラウドストレージ)、高速なノンブロッキングチェックポイント、リカバリー、耐久性のための操作ログ記録、マルチキートランザクションのサポート、より優れたメモリ管理と再利用など、強力なデータベース機能を備えている。
クラスタモード機能
Garnetはシングルノードでの実行に加え、クラスタモードもサポートしている。ユーザーはシャーディングおよびレプリケートされたデプロイメントを作成、管理できる。
Garnetは、シャードのバランスを再調整するための効率的かつ動的なキーマイグレーションスキームもサポートしている。標準のRedisクラスタコマンドを使用し、Garnetクラスタを作成、管理できる。ノードはゴシッププロトコルを通じて、クラスタの状態を共有、更新させることもできる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Microsoft、コンテナやAIなどの開発者体験を向上させる「.NET 8」をリリース
Microsoftは開発プラットフォーム「.NET」のバージョン8をリリースした。多くの機能が改善され、開発者体験を向上させるという。 - Netflix、モノリシックな動画処理パイプラインをマイクロサービスプラットフォームで再構築した事例を紹介
Netflixは公式エンジニアブログで、動画処理パイプラインをマイクロサービスで再構築した事例を紹介する記事を公開した。なぜ、動画処理パイプラインをマイクロサービスベースの新たなプラットフォームで再構築することに決めたのか、どのようにサービスを切り分けたのか、Netflixのビジネスに与えた影響などを紹介している。 - LinkedInは「最大毎秒480万リクエスト」をどうさばいているのか
ピーク時には毎秒480万人以上の会員プロフィールを提供するLinkedIn。年々負荷が高まるストレージインフラを改善するため「Couchbase」を採用した。採用にいたったいきさつや導入後の問題にどう対処したか、公式エンジニアリングブログで解説した。