Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

サーバーレスとエッジのグローバルデータベース

近年、サーバーレスアーキテクチャとエッジコンピューティングは、アプリケーションの展開で非常に人気が高まっています。ただし、アプリケーションの状態とデータをサーバーレス関数やエッジ関数内に保存することは別の話です。データベースへの接続の管理、複数の場所からの高速アクセスにデータを利用できるようにするなど、多くの問題があります。サーバーレスアクセスをサポートするデータベースサービスはごくわずかであり、エッジ機能にも適しているものはごくわずかです。(ここで詳細な分析を読むことができます。

Upstashでは、初日から、低レイテンシでリクエストごとの価格設定モデルを備えたサーバーレスRedis互換データベースを提供しています。さらに、データベース上に直接構築されたファーストクラスのRESTAPIを公開しています。 REST APIは、特にサーバーレス機能で使用される場合に接続管理の煩わしさを取り除きますが、エッジロケーションやWebブラウザーなどの制限された環境からもアクセスできます。

本日、グローバルデータベースを発表できることをうれしく思います。これは、データベースをグローバルに利用できるようにするための一歩であり、低遅延の読み取りのためにクライアントとエッジの場所の近くにあります。 グローバルデータベースは無料枠で利用できます。無料で試すことができます

いつ使用しますか?

グローバルデータベースは、異なる大陸の複数のリージョンに展開され、クライアントリクエストは最も近いリージョンにルーティングされ、ユーザーが世界中に分散している場合の遅延を最小限に抑えます。 Upstashグローバルデータベースは次の目的で使用できます;

  • エッジ機能(Cloudflareワーカー、Fastly Compute):組み込みのREST APIと、すべてのエッジロケーションからの低レイテンシーアクセスにより、完璧なソリューションになります。

  • マルチリージョンのサーバーレスデプロイ:AWS Lambda、Vercel、Netlifyの機能を複数のリージョンにデプロイできます。グローバルデータベースは、サーバーレス機能がどこにあっても、低遅延のデータを提供します。

  • Web /モバイルプラットフォーム:読み取り専用のREST APIを使用して、RedisデータベースにWeb/モバイルアプリケーションに直接アクセスできます。グローバルデータベースは、どこからでもユーザーを期待できるため、より良いレイテンシーを提供します。

グローバルデータベースの背後にあるもう1つの目標は、データベースをリージョン全体の障害に対して回復力のあるものにすることです。リージョンが利用できない場合、リクエストは最も近い利用可能なリージョンにルーティングされます。したがって、データベースは引き続き利用可能です。

どのように機能しますか?

サーバーレスとエッジのグローバルデータベース

グローバルデータベースモデルでは、同じデータベースの複数のレプリカがあり、それらが一緒にクラスターを形成します。各レプリカは他のクラスターメンバーに接続され、障害検出器を使用して各レプリカの活性を追跡します。クラスタメンバーシップと障害検出の両方が、ゴシップベースの通信プロトコルを使用して管理されます(SWIM:スケーラブルで一貫性のない感染スタイルのプロセスグループメンバーシッププロトコルを参照してください)。

データを複製する(より具体的には、個々の書き込み/更新/削除)には、シングルリーダー複製モデルが使用されます。キーのグループはリーダーレプリカに割り当てられます。リーダーレプリカは、メンバーシップの変更後にリーダー選出メカニズムを使用して選出されます。残りのレプリカは、そのキーのグループのそのリーダーのバックアップになります。リーダーレプリカが障害検出器によって失敗として検出されると、残りのレプリカは新しいリーダーの選出ラウンドを開始し、新しいリーダーを選出します。選出プロセス中に、データベースは使用できなくなります。短期間で、選挙が完了するまですべてのリクエストがブロックされます。

リーダーレプリカのみが書き込み要求を受け入れて処理し、バックアップレプリカはクライアントに通知せずに内部でリーダーに書き込みを転送します。したがって、レプリカのタイプ、リーダー、またはバックアップに関係なく、クライアントは書き込み要求を送信できます。書き込み要求を処理した後、リーダーレプリカはそれをバックアップレプリカに伝播します。

一貫性の詳細

現在、グローバルデータベースは一貫性が低く、まだ強力な一貫性をサポートしていません。リーダーレプリカが操作を処理した後、バックアップの大部分からのACKを待たずに、書き込み要求の応答がクライアントに返されます。書き込みの結果は、並行して非同期的にバックアップレプリカに複製されます。

読み取り要求は任意のレプリカによって処理されます。これにより、読み取りのスケーラビリティが向上しますが、同じキーの書き込み操作の結果がバックアップレプリカに到達するまで、読み取り要求が古い値を返す可能性もあります。

競合がなければ簡単になります!

ネットワークパーティションなどのクラスター全体の障害の場合、同じキーに対して複数のリーダーを選択できます。つまり、複数のレプリカが書き込みとデータを受け入れて、異なるレプリカで分岐することを意味します。 CalvinやSpanner(またはPaxos、Raft)などのプロトコルを使用することで、より強力なモデルで最初に発生する競合を防ぐことは可能ですが、それは現時点では採用したくない別の方法です。

代わりに、グローバルデータベースは競合の発生を許可し、LWW( last-write-wins )を使用して競合を解決します。 )アルゴリズムを実行し、レプリカを最終的に同じ状態に収束します。Upstashデータベースへの各書き込みには、一意の単調なシーケンス番号があります。レプリカがリーダーになるたびに、最初の書き込みプロセスのシーケンスをマークします。 2人のリーダーのレプリカがお互いを発見すると、リーダーになった後、書き込みを共有し、競合を解決します。

すべてのレプリカが等しいわけではありません

一部のレプリカは他のレプリカよりも同等です。リーダーとして選出できるのはそのうちの一部だけだからです。グローバルデータベースクラスターでは、レプリカを学習者としてマークできます。 、これはリーダー選挙には不適切です。学習者のレプリカは常に読み取り専用のままであり、リーダーシップの候補になることはできません。

学習者レプリカを追加しても、クラスターの安定性には影響せず、分割されたときに書き込みの競合が発生することはありません。リーダーから分割された場合でも、分割が修復された後も、読み取り要求を許可し、残りの書き込みを同期し続けます。したがって、学習者のレプリカは、より多くのエッジの場所を拡張するための非常に優れたユーティリティです。

より多くのリージョン、より多くのレプリカ?

最初のリリースでは、5つのレプリカと5つのリージョンでグローバルデータベースを提供しています。また、米国とEU以外のレプリカは、学習者としてマークされています。 s、したがって、米国およびEU地域のレプリカのみがリーダーとして選出されます。これにより、ネットワークパーティション中の書き込みの競合の可能性が絞り込まれますが、ネットワークパーティションを気にすることなく、学習者のレプリカとしてリージョンを追加することもできます。

まだ道のり

現在、グローバルデータベースは、読み取り操作のレイテンシを最適化/最小化するためにのみ設計されています。これらは書き込みの多い負荷には適していません。より良い設計で書き込み操作のレイテンシーの改善にも取り組んでいます。

最初の5つのリージョンの設定に加えて、ユーザーからの需要とフィードバックのために、将来的にさらに多くのリージョンや異なるリージョングループを開くことを検討しています。

TwitterとDiscordで私たちに連絡して、考えやアイデアを共有したり、質問をしたりすることができます。


  1. エッジキャッシングを使用した5ミリ秒のグローバルRedisレイテンシ

    データベースとクライアントが同じリージョンにある場合、Redisを使用すると1ミリ秒のレイテンシーが簡単になります。ただし、クライアントをグローバルに分散させたい場合は、遅延が100ミリ秒を超えて増加します。これを克服するためにEdgeCachingを構築しました。 エッジキャッシング エッジキャッシングを使用すると、REST応答は、CDNと同様に、世界中のエッジロケーションにキャッシュされます。エッジキャッシングが有効になっている場合、平均で5msのグローバルレイテンシが見られます。 10の異なるリージョンにあるクライアントからのレイテンシー数を記録するベンチマークアプリケーションを参照し

  2. Microsoft Edge の拡張機能をインストールして管理する方法

    Microsoft Edge には、Web をさらに活用できるいくつかの強力な機能が既定で含まれています。 Microsoft は、Web ノートで Web ページに注釈を付けたり、Cortana で情報を検索したり、閲覧モードで記事を楽しんだりすることを容易にしていますが、拡張機能をインストールすることで、Edge のエクスペリエンスをさらに向上させることができます。 Microsoft は、昨年の夏に Windows 10 Anniversary Update で Edge の拡張機能ストアを立ち上げました。 2015 年 11 月の更新プログラムまたは元のバージョンの Windows