問題タブ [consistent-hashing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - python-memcachedはコンシステントハッシュ法とバイナリプロトコルをサポートしていますか?
Python-memcachedは、Djangoでサポートされている公式のmemcachedドライバーです。
サポートしていますか
- コンシステントハッシュ
- バイナリプロトコル
もしそうなら、Django内でこれらの機能をどのように使用しますか?ドキュメントが見つかりませんでした。
java - MessageDigest のハッシュはマシンによって異なります
異なるコンピューターで異なるハッシュ値を返す MessageDigest に問題があります。
1 台のコンピュータは Windows Vista で 32 ビット Java を実行しており、もう 1 台は Mac OS で 64 ビット Java を実行しています。MessageDigest がマシンに依存しているためなのか、それともどこかで文字エンコーディングを明示的に指定する必要があるのか 、それともおそらく何か他のものなのかはわかりません。コードは次のとおりです。
このコードは、これら 2 つの異なるマシンで異なる方法で実行する必要がありますか? 私が書いたようにマシンに依存している場合、これらのパスワードをより移植性の高い方法でハッシュする別の方法はありますか? ありがとう!
編集:::::
これは、ソルトを生成するために使用しているコードです。
解決:::
受け入れられた解決策のおかげで、コードを修正できました。
php - シャーディング/配布する機能(コンシステントハッシュ)?
アップロードされたファイルを異なるサーバー間でシャーディングするために、やや軽量のコンシステントハッシュのようなPHP関数を作成することについて少し考えました。
明らかに、rand()はサーバー間でファイルをある程度均等に分散するように機能しますが、ファイルを要求するとき、どのファイルがどのサーバーにあるかは誰にもわかりません...
コンシステントハッシュを作成するための広範なライブラリがいくつかあることは知っていますが、これらがどのように機能し、独自の非常に軽量なライブラリを展開するためにどのようにできるのでしょうか。
注:サーバーが削除されることは考慮していませんが、代わりにさらに多くのサーバーがプールに追加されます。
アップデート:
擬似コードの簡単な行は次のとおりです。
rabbitmq - プロデューサは、メッセージ キューを介して一貫してコンシューマにハッシュしますか?
コンシステント ハッシュによってコンシューマー間で一貫して作業を分散したいプロデューサーがいます。たとえば、コンシューマ ノード X と Y では、タスク A、B、C は常にコンシューマ X に、D、E、F はコンシューマ Y に移動する必要があります。ただし、Z がコンシューマのプールに参加すると、少しシフトする可能性があります。
コンシューマー ノードに接続するための独自のロジックを記述したくありませんでした。特に、ノードのプールへの参加と退出を管理する必要はありませんでした。そのため、RabbitMQ と、コンシューマー ノードごとの専用キューを使用する道をたどりました。 .
私が直面している問題の 1 つは、これらのキューを一覧表示することです。プロデューサーは、作業が分散される前に、使用可能なすべてのキューを知る必要があるためです。AMQP はキューの一覧表示さえサポートしていないため、私のアプローチ全体が不確かになります。ただし、 RabbitMQ と Alice (現時点では壊れています) はその機能を追加しています: RabbitMQ でキューと交換を一覧表示するための API はありますか?
これはRabbitの賢い使い方ですか?メッセージキューを使用する必要がありますか? キューが自分の作業をコンシューマ間で一貫して分割できるようにするためのより良い設計はありますか?
java - コンシステントハッシュはどのように機能しますか?
コンシステントハッシュがどのように機能するかを理解しようとしています。これは私がフォローしようとしているがフォローできない記事です。私の質問から始めましょう。
サーバーはハッシュコードの範囲にマッピングされ、データの分散がより固定され、見た目が簡単になることを理解しています。しかし、これは新しいノードがクラスターに追加される問題にどのように対処しますか?
サンプルのJavaコードは機能していません。単純なJavaベースのコンシステントハッシュの提案です。
アップデート
- コンシステントハッシュに代わるものはありますか?
zeromq - ZeroMQ & コンシステント ハッシュ
0MQ に慣れるための演習として、簡単な Memcached のような分散インメモリ キー値ストアをコーディングしてみます。私が理解できる最も単純なアーキテクチャは、リクエストをバックエンドに分散する OMQ デバイスです。バックエンドは、キーと値のペアを格納するデータ構造を管理する単純なプロセスです。問題は、コンシステント ハッシュを使用してバックエンド間の負荷を分散したいのですが、0MQ XREQ ソケットがラウンド ロビンを使用してエンドを処理していることです。では、XREQ ソケットでラウンドロビンの代わりにコンシステント ハッシュを使用する簡単な方法はありますか?
distributed - Consistent Hashing: 再ハッシュについてはどうですか?
ご存知かもしれませんが、コンシステント ハッシュは、DHT を扱う場合に優れたアイデアです。主なアイデアは、新しいノードが追加または削除されたときにあまり影響を受けないようにすることです。
元の論文から:
マシンが一連のキャッシュに追加または削除された場合、新しいキャッシュに移動する必要があると予想されるオブジェクトの割合は、キャッシュ間でバランスの取れた負荷を維持するために必要な最小値です。
解決策は素晴らしいですが、鍵の配布がうまくいかないという現象があります。これを解決するために、元のノードのレプリカがランダムに配布されます。そのソリューションは非常にうまく機能します。確認したい場合は、このチャートを見てください。
わかりました、うまくいくようです。しかし、誰も言及していないことを私は考えていました。
1 つのノードが追加 (または削除) されるとどうなりますか? さて、配置されたノードの「前」にあるすべてのキーを再ハッシュする必要があります。これらのキーは「すべて」のキーではないため、それは良いようです。しかし、たとえば 20 個のレプリカを配置することにした場合、20 個のノードで再ハッシュの手間がかかります。
レプリカが少ないと分散が悪化しますが、レプリカが多いと再ハッシュが必要な場合の負担が大きくなります。
この状況に適した解決策は何ですか? 何か不足していますか?
hash - 書き込みをスケーリングする方法としてのコンシステント ハッシュ
私は正しい軌道に乗っているかどうかを理解しようとしています。私は (リアルタイム) 統計/分析サービスを構築しており、redis を使用していくつかのセットとハッシュを保存しています。
ここで、ある程度の成功があり、スケールアウトする必要があると仮定しましょう。ハッシュ リング手法は良さそうに見えますが、キャッシング シナリオにのみ適しているという印象があります。
ノードがダウンした場合はどうなりますか? 理論的には、その鍵は現在、他のノードによって所有されています。実際には、彼らはデータを持っていません。失われていますよね?ノードの追加/削除と同じです。
基本的なことが欠けていますか?これは貧乏人のクラスターでしょうか?
php - コンシステント ハッシュについて
ここ数日、PHP のコンシステント ハッシュ アルゴリズムについて調べてきました。コンシステント ハッシュが実際にどのように機能するかをよりよく理解し、今後のプロジェクトで利用できるようにしたいと考えています。私には、Flexihashが本当に理解しやすい唯一のピュア PHP 実装であるように思われるので、そこからいくつかのメモを取りました。
私は独自の小さなアルゴリズムを作成して、それがどのように機能するか、およびできるだけ速く機能させる方法を理解しようとしました。私のアルゴリズムが Flexihash と比較して非常に高速であることに驚きました。これにより、私の実装に何らかの欠陥があるのではないかと考えたり、概念全体の重要な部分を把握していない可能性があります。
100 万個のシーケンシャル キー (0 ~ 1,000,000) の反復における速度の違いを以下に示します。各ノードが表示され、その特定のノードに実際にハッシュされたキーの数が示されます。
これがハッシュアルゴリズムの現在の実装です。
私は何かを見逃していますか、それともアルゴリズムは Flexihash よりも本当に高速ですか? また、Flexihash が複数のノードの検索をサポートしていることは理解しているので、それが関係しているかどうかはわかりません。
コンシステント ハッシュがどのように機能するかを理解しているという安心感、または実際にそれをよく説明している記事へのリンクを希望します。
ありがとう!
algorithm - コンシステント ハッシュが効率的であるなら、どこでもそれを使用しないのはなぜですか?
一貫性のある hashのいくつかの欠点を尋ねられました。しかし、従来の hash%N ハッシュよりも少しコストがかかるだけだと思います。タイトルが述べたように、コンシステント ハッシュが非常に優れているのであれば、それを使用しないのはなぜでしょうか?
もっと知っていますか?誰が教えてくれる?