コンテンツに移動
データベース

Memorystore for Redis リードレプリカで 6 倍の読み取りパフォーマンスを実現

2021年12月1日
https://storage.googleapis.com/gweb-cloudblog-publish/images/Memorystore_for_Redis.max-2000x2000.jpg
Google Cloud Japan Team

※この投稿は米国時間 2021 年 11 月 16 日に、Google Cloud blog に投稿されたものの抄訳です。

最新のアプリケーションはミリ秒のレイテンシで大規模なデータを処理し、さまざまなエクスペリエンスを提供する必要があります。たとえば、インスタント ゲームのリーダーボード、数百万の IoT センサーから得たストリーミング データの高速分析、不正なウェブサイトのリアルタイムの脅威検出などがそうです。インメモリ データストアは、こうした最新のアプリケーションに必要なスケール、パフォーマンス、可用性を実現するために不可欠な要素です。

Memorystore を使用すると、Google Cloud でアプリケーションを構築するデベロッパーが、最も人気の高いインメモリ ストアである Redis の速度と強力な機能を簡単に活用できます。Memorystore for Redis のスタンダード ティアのインスタンスは、高可用性の Redis インスタンスを必要とするアプリケーションによく使用されます。スタンダード ティアは、ゾーン間でのフェイルオーバー レプリカによる冗長性を提供し、99.9% の SLA で迅速なフェイルオーバーを確保します。ただし、アプリケーションでスタンダード ティアのインスタンスからの読み取りスループットがさらに必要になる場合があります。お客様が Redis で読み取りクエリのスケーリングに使用する一般的なパターンとして、リードレプリカの活用が挙げられます。

Memorystore for Redis リードレプリカのご紹介

そこで本日、Memorystore for Redis リードレプリカの公開プレビュー版を発表いたします。この機能により、ボタンをクリックするだけで、アプリケーションの読み取りリクエストを 6 倍にシームレスにスケーリングできます。

リードレプリカを使用すると、最大 5 つのレプリカを簡単に追加し、読み取りエンドポイントを活用して、利用可能なすべてのレプリカの間で読み取りクエリを自動的に負荷分散できます。これにより、レプリカを追加するたびに読み取りパフォーマンスを直線的に向上させることができます。また、Memorystore が Redis 6 に対応してマルチスレッド I/O が導入され、M3 以降の構成でパフォーマンスが大幅に向上しました。リードレプリカと Redis 6 を組み合わせると、1 秒あたり 100 万件を超える読み取りリクエストを達成できます。

この新機能には、次のようなメリットがあります。最大 5 つのリードレプリカを使用してオンデマンドでスケーリングし、Redis クライアントで読み取りエンドポイントを使用して、複数のレプリカの間で読み取りクエリを簡単に負荷分散できます。この新機能により、複数のゾーンにレプリカが自動的に分散されるため、可用性も向上します。リードレプリカでは、レプリケーション ラグを最小限に抑えてレプリカへの迅速なフェイルオーバーを行い、アプリケーションのダウンタイムを最小限に抑えることもできます。今後、Memorystore はスタンダード ティアの既存インスタンスでリードレプリカを簡単に有効にして、読み取りスループットも向上する予定です。

リードレプリカの構成方法と使用方法の詳細については、リードレプリカの概要をご覧ください。

リードレプリカと Redis 6 によるパフォーマンスの改善

リードレプリカのリリースにより、Memorystore インスタンスの読み取りスループットが簡単に向上します。リードレプリカとともに Redis バージョン 6 を活用すると、読み取りパフォーマンスをさらに強化できます。

リードレプリカと Redis 6 の組み合わせでアプリケーションの読み取りパフォーマンスが大幅に向上する理由を理解するために、お使いのアプリケーションで今すぐ使用できるさまざまな Memorystore 構成について見てみましょう。Memorystore のベーシック ティアとスタンダード ティアは、異なる容量階層を提供します。容量階層は、ベーシック ティアとスタンダード ティアのインスタンスについて単一ノードのパフォーマンスを決定します。

次の表は、さまざまな容量階層の構成の概要を示しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Memorystore_for_Redis.max-2000x2000.jpg

バージョン 5 までは、Redis は単一スレッドを使用してコマンドを処理していました。この処理には、リクエストの読み取り、リクエストの解析、リクエストの処理、ソケットへのレスポンスの書き込みが含まれていました。このアプローチでは、レスポンスの書き込みを含むすべての処理が、単一の vCPU によって順次処理され、インスタンスで利用可能な vCPU の数が考慮されていませんでした。

Redis 6 では I/O スレッドが導入され、並列スレッドを使用してレスポンスを書き込むことができます。この機能により、Redis 6 は利用可能な vCPU をより効率的に活用できるため、下位バージョンと比べて全体のスループットが向上します。Memorystore for Redis バージョン 6 は、I/O スレッドを利用し、最適な数の I/O スレッドを自動的に構成して、さまざまな容量階層に対して最善のパフォーマンスを実現できます。また、Google Cloud インフラストラクチャの改良を活用することで、すべての Redis バージョンの全体的なネットワーク スループットも向上しました。このような改良を組み合わせれば、パフォーマンスが大幅に向上し、追加費用は発生しません。

では、Redis 6 を使用して得られるメリットは何でしょうか。上記の表のとおり、Redis バージョン 5 以前では、単一スレッドを使用してすべてのティアの書き込みリクエストを処理します。一方、Redis 6 では、容量階層が高いと使用する I/O スレッドが増えるため、容量階層が高い場合にスループットが段階的に大幅に向上します。

たとえば、容量 101 GB(M5)で Redis 6 のスタンダード ティアのインスタンスを使用すると、バージョン 5 と比べて読み書きのパフォーマンスが最大 200% も向上することが確認されています。ただし、実際の数値はご利用のワークロードによって異なります。既存のインスタンスをアップグレードするか、新しいインスタンスをデプロイすることで、Redis 6 のメリットを利用できます。

Redis 6 を使用してインスタンスでリードレプリカを有効にすれば、読み取りパフォーマンスがさらに向上します。読み取りスループットはレプリカの数に比例して増減するため、5 つのリードレプリカを使用すると、インスタンスの読み取りクエリを最大 500% 増やすことができます。Redis 6 とリードレプリカを組み合わせると、リードレプリカを使用しないバージョン 5 のスタンダード ティアのインスタンスと比べて、読み取りパフォーマンスが 10 倍向上することを確認できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Memorystore_for_Redis.max-1200x1200.jpg

今回のリードレプリカのリリースは、必要なスケールを最高のコスト パフォーマンスで提供するための一歩にすぎません。リードレプリカの料金について詳しくは、Memorystore 料金のページをご覧ください。また、使用を開始するには、リードレプリカの概要をご覧ください。

- Memorystore プロダクト マネージャー Gopal Ashok


投稿先