sql >> データベース >  >> NoSQL >> Redis

書き込みをスケーリングする方法としてのコンシステントハッシュ

    クラスタで複数のノードを使用する理由は2つあります。

    • 各ノードに保存されるデータの量を制限するためのシャーディング
    • 読み取りの負荷を軽減し、データを失うことなくノードを削除できるようにするための複製。

    この2つは根本的に異なりますが、両方を実装できます。コンシステントハッシュを使用して、単一のノードではなく、標準のマスター/スレーブ設定でノードのセットをポイントします。

    クラスタがキャッシュではなくプライマリデータストアである場合は、データのコピーを含む別の再配布戦略が必要になります。

    私の実装は、クライアントにハッシュ用に64kバケットのいずれかを選択させ、そのバケットをノードにマップするテーブルを用意することに基づいています。最初は、すべてがノード#1にマップされます。

    ノード#1が大きくなりすぎると、そのスレーブはマスターノード#2になり、テーブルが更新されて、ノード#1のキーの半分がノード#2にマップされます。この時点で、すべての読み取りと書き込みは新しいマッピングで機能し、間違ったノードにあるキーをクリーンアップする必要があります。パフォーマンス要件に応じて、すべてのキーを一度にチェックすることも、有効期限システムのようにランダムに選択したキーをチェックすることもできます。




    1. セロリタスクからマルチプロセッシングプールを使用すると、例外が発生します

    2. マングース-メール構文を検証する

    3. node.js&express-アプリケーション構造のグローバルモジュールとベストプラクティス

    4. CDPの運用データベース