問題タブ [gossip]

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.

0 投票する
3 に答える
528 参照

distributed-computing - ゴシップベースのプロトコルですべてのノードが感染することを保証するには?

ゴシップベースのプロトコルでは、すべてのノードがメッセージに感染することをどのように保証しますか?

ランダムな数のノードを選択してこれらのノードにメッセージを送信し、これらのノードが同じことを行った場合、一部のノードがメッセージを受信しない可能性があります。

計算はできませんでしたが、小さいようです。ただし、システムが長時間稼働していると、ある時点で 1 つのノードが運悪く残ります。

0 投票する
1 に答える
710 参照

erlang - Erlang クラスタ管理でのゴシップ プロトコルの使用

私はErlangと分散コンピューティングの初心者です。私たちは小さなメッセージング サーバーを構築しようとしている小さなチームです。クラスターの状態をどのように管理するかについて、私たちが検討していることの 1 つ - Riak、rabbitMq、ejabbered、Vernemq など、Erlang オープン ソース プロジェクトでいくつかのカスタム実装に出くわしました。

Erlang コミュニティはクラスター管理にゴシップ プロトコルを使用するように移行しているようです jvQQy30kLTI/hIDFw94SddQJ

私の質問は - ゴシップ プロトコル以外にクラスタ管理を行う方法はありますか? また、ゴシップ プロトコルのオープン ソース erlang 実装とは何ですか。erlang ノードの管理を検討する際に必要な考慮事項は何ですか?

ご協力いただきありがとうございます。

0 投票する
1 に答える
776 参照

cassandra - Cassandra クラスターのセットアップ - シードを使用してゴシップを行うことができません

3 ノードの Cassandra VM クラスターをセットアップしようとしています。

個々の VM に datastax パッケージから cassandra をインストールし、以下を変更しました。

  1. シード - vm1 (すべての vm 構成で IP アドレスを設定)

  2. ホスト IP として listen_address を使用して構成を更新し、rpc_broadcast_address を追加しました

  3. VM 間の通信を可能にするために、ファイアウォール ルールに cassandra ポートを追加しました。

  4. また、SSHを使用してvmsに接続しようとしました

これらすべてを試した後、cassandra シード ノードを開始しました。正常に起動し、nodetool を使用してステータスを確認すると、ノードのステータスが UN (Up/Normal) であることがわかります。次に、他のクラスター ノードで cassandra を起動します。シードエラーでうわさ話ができず、起動に失敗します。どんな助けでも大歓迎です!

スタックトレース:

ありがとう!

0 投票する
2 に答える
7228 参照

cassandra - Cassandra の 2 つのノードが互いにゴシップしていない

Node0:
configuration.yaml ファイル:
cluster_name: 'ServerCluster'
num_tokens: 256
Seeds: ""
listen_address: 10.104.0.15
rpc_address: 10.104.0.15
auto_bootstrap: false
endpoint_snitch: GossipingPropertyFileSnitch

cassandra-env.sh ファイル: JVM_OPTS="$JVM_OPTS -java. rmi.server.hostname=10.104.0.15"
cassandra-rackdc ファイル: dc=DC1rack=RAC1

Node1:
configuration.yaml ファイル:
cluster_name: 'ServerCluster'
num_tokens: 256
Seeds: "10.104.0.15"
listen_address: 10.104.0.20
rpc_address: 10.104 .0.20
auto_bootstrap: true
endpoint_snitch: GossipingPropertyFileSnitch

cassandra-env.sh ファイル: JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=10.104.0.20" cassandra-rackdc ファイル :
dc=DC1rack=

RAC1

tdown INFO 00:04:16 メッセージング サービスが静止するのを待っています INFO 00:04:16 MessagingService が accept() スレッドを終了しました



次に、Node0 のシードを変更しました (stackoverflow で解決策を見たため)
:シード: " 10.104.0.15,10.104.0.20
"
Node1:
シード: "10.104.0.20

"

では、このニワトリが先か卵が先かという問題を解決するのを手伝ってくれませんか? よろしくお願いします

私も datastax リンクをたどりましたhttps://academy.datastax.com/courses/ds210-datastax-enterprise-operations-and-performance-tuning/multiple-data-centers-multiple-0
ここで、彼はクラスター名、listen_address、 rpc_address とシードと、彼が nodetool status と入力すると、両方を見ることができましたが、同じことをたどると、それぞれのサーバーでそのステータスのみが表示されます

0 投票する
0 に答える
1784 参照

java - Java のゴシップ アルゴリズム、はじめに

Gossip Algorithm の簡単な実装を Java で書きたいのですが、どこから始めればよいかわかりません。私はこの種のネットワーク プログラミングに非常に慣れていないため、どこから始めればよいかわかりません。コンセプトは、ケルビンで熱を収集する建物内の温度センサーをシミュレートするコードを作成したいということです。ゴシップ アルゴリズムを使用して、このアルゴリズムを使用して建物内の温度の平均を収集するプッシュサム プロトコルを使用します。si は最初の合計で、wi は最初の重量です。

1: {(Sr, Wr)} をラウンド t – 1 (前のラウンド) で i に送信されたすべてのペアとする

2: st, i := ∑〖Sr, Wt,i〗 = ∑Wr (受信したすべてのペアの合計)

3: ターゲット ft(i) を一様ランダムに選ぶ

4: ペア (1/2st,I , 1/2wt,I ) を ft(i) と i (自分) に送信します。

5: (St,i)/(Wt,i) は、ステップ t の平均の推定値です。

アルゴリズムは、コードを変更せずに新しいセンサーを追加できるようにする必要があります

私は多くの調査を行ってきましたが、センサー間のこの基本的な通信をどのようにセットアップできるかはよくわかりません (センサーはすべて同じコードを実行する必要があります)。可能であれば、これを適切に設定する方法、良い出発点について正しい方向へのポイントをいただければ幸いです。残りの部分は自分で行うことができるはずです。ありがとう!

0 投票する
1 に答える
756 参照

scala - Akka クラスター全体でデータを同期する簡単な方法は?

Akka クラスター内のすべてのノードの指定されたアクターに存在させたいランタイム データがいくつかあります。これは、単一ノードへの内部イベントまたは API 呼び出しを介して更新できます。このデータを共有データベースに保存して永続的にすることもできますが、永続化する必要がないため、速度を上げるためにメモリに保存することをお勧めします。Akka Cluster Singleton、Distributed Pub Sub、および場合によってはその他の組み込みモジュールは、ゴシップ プロトコルを使用して分散状態を同期させます。

クラスター全体で自分のアクターのデータ同期を採用する既製の方法はありますか?

変更を Distributed Pub Sub に公開することだけを考えましたが、これはドロップされたメッセージに対して回復力がないようです。クラスターのシングルトンに保存すると、そのノードがダウンした場合に存続できなくなります。クラスター全体がダウンした場合は持続性は必要ありませんが、個々のノードがダウンした場合の回復力は必要です。

0 投票する
1 に答える
61 参照

consul - 複数の consul スタックを安全にリモート コントロールする概念

序章

私は複数を実行しています。私はそれらを領事スタックと呼んでいます。- 1 つの領事サーバー - 9 つの領事ノード

各ノードはいくつかのサービスを提供します - 従来の Web スタックなどです (この質問には興味がありません)。ゴシップは、サーバーが任意のノードによって照会されるのを防ぎ、データを公開するために使用されます。複数の consul-template/tiller の「ウォッチャー」が、KV の変更時にノード/サービスを動的に構成するために待機しています

ゴール

これらのスタックが 10 個あり (数値は動的です)、特定のロジックを使用して各スタックの consul-KV を制御する Web アプリを構築したいとします。

私が今持っているもの

特定の KV エントリを作成するために必要なロジックをラップする thor+diplomat ツールを作成しました。スタック内の「コントローラー」コンテナーで実行しながら実装し、localhost:8500 と通信しました。これにより、ゴシップで認証され、サーバーに書き込まれます。

質問

このツールをリモート (consul-stack の一部ではない) サーバーに移動し、各 consul-stacks KV に書き込むことができるようにするために、どのような概念を使用しますか。

確かに、diplomat を使用して stack1.tld:8500 に接続できますが、これは HTTP ポートを開き、何らかの方法でセキュリティを確保する必要があることを意味します (ゴシップによって保護されていませんか? どうにかして、RPC のみですか?) および /ui も保護します。

  • これらの各スタックに接続するためのより良い方法はありますか?
  • アクセスを保護するために、8500 の前に基本認証を持つ nginx プロキシ サーバーを使用しますか?
  • また、このポートでssl-interceptionを使用し、引き続き8500を使用するか、構成されたhttpsポートを使用します(consul HTTPS APIで)
  • ACL を使用してアクセスを保護しますか? (スタックメンバーのアクセスを許可するための多くのセットアップ - TLS が必要ですか?)

一般に、TLS (クライアントがセットアップするために多くの作業が必要です) を使用しない場合、スタックサーバーと通信して KV に安全に書き込む必要があるこの必要性に適合する概念は何ですか。

私が何かを逃した場合は、あなたが求めるものを追加してください

0 投票する
1 に答える
1331 参照

java - ゴシップ プロトコルを理解する

私は akka クラスターのドキュメントを読んでいて、今はゴシップセクションにいます。次の文がわかりませんでした。

クラスターのメンバーシップは、ゴシップ プロトコルを使用して伝達されます。このプロトコルでは、クラスターの現在の状態がクラスター全体でランダムにゴシップされ、最新バージョンを確認していないメンバーが優先されます。

想像するのはかなり難しいです。次の質問があります。

質問: 最新の変更がまだゴシップされている場合、ノードはどのメンバーが最新の変更を見ていないかをどのように知るのですか?

つまり、ノードが通知を受信した場合、それをどこに送信するかをどのように決定するのでしょうか? 明らかに、送信者は最新の変更を確認しているため、それを返送すべきではありません。しかし、他のメンバーはどうですか?それらの一部はすでに状態を確認している可能性があり、これらすべてのメンバーを照会する以外に状態を把握する方法はありません。しかし、あるノードにクエリを実行すると、クエリ中に「いいえ、まだ見ていません」と応答し、誰かがそのノードに状態を送信する可能性があります...