問題タブ [jgroups]
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.
java - 新しいサービス リーダーの設置とリーダーへの通知
分散システム設計の問題があります。問題集は、
私たちはサービスに多くのクライアントを持っています。サービスはフォールト トレラントである必要があるため、多くのレプリカが必要になります。クライアントがサービスにアクセスできなくなると、レプリカに切り替わり、他のすべてのクライアントが同じレプリカに切り替わることを通知します。(レプリカのデータ値は完全に同じではなく、すべてのクライアントが常に同じデータ値を返さなければならないため、レプリカ間で負荷を分散することはできません。)
私の現在の設計は、クライアントがサービスに到達できなかった場合に、新しいサービス リーダーを依頼することです。新しいサービス リーダーが確立されると、それを使用するようにすべてのクライアントに通知します。
多くの分散調整設計と同様に、分散グループ マネージャーが必要です。ソリューションで JGroups や Apache Zookeeper を使用することを検討しています。
この問題を解決するために調べるべき既存のレシピやレシピはありますか?
infinispan - Infinispan クラスターと hotrod クライアントが通信しない
いくつかのノードを持つレプリケーション クラスターがあります。それらは相互に自由に通信できます。クラスターに参加している Hotrod サーバーもあります (他のノードによって認識されていることがわかります)。しかし、Hotrod クライアントをサーバーに接続し、キャッシュに何かを入れようとすると、次の例外が発生します。
ホットロッド クライアント:
org.infinispan.client.hotrod.exceptions.HotRodClientException:Request for message id[4] returned server error (status=0x85): org.infinispan.CacheException: Problems invoking command.
ホットロッド サーバー:
Caused by: org.infinispan.CacheException: Type of data read is unknown. Id=-2147482548 is not amongst known reader indexes.
キャッシュストアを持つノード:
WARN: Problems unmarshalling remote command from byte buffer org.infinispan.CacheException: Type of data read is unknown. Id=-2147482548 is not amongst known reader indexes.
また、Hotrod クライアントは、他のノードによって提供された変更を認識しません。クラスター内に hotrod サーバー以外のノードがない場合 - すべてが機能します。他のノード (たとえば、CacheListener が登録されているノード) が使用可能な場合、前述の例外が発生します。
どこでも Infinispan 5.1.5.Final と JGroups 3.0.10.Final を使用しています。Win7 64 ビット、Java 6_0_32 32 ビット。すべてのノードが 1 台のマシンで動作し、クラスターは TCP トランスポート スタック上に構築されます。すべてのノードは Java SE アプリケーションです。infinispan フォーラム (https://community.jboss.org/thread/199539) にも同様の投稿がありましたが、それは古いバージョンのものです (この場合、更新が役に立ちました)。
誰かが同様の問題を抱えていましたか、または問題の原因をどこで探すべきか考えていますか?
java - jgroupはチェックサムを使用してUDPで信頼できるようにしていますか?
jgroup が信頼できるマルチキャストをどのように実現したかを理解しようとしています。マニュアルを読んで、彼らが否定的な ack を使用していることを知りました。しかし、クラスター メンバーが破損したメッセージを受信するとどうなるでしょうか? 公式マニュアルでそれについて何も見つけることができません。( http://www.jgroups.org/manual/html_single/index.html#d0e5392 )
UDP ヘッダーとデータのチェックサムを使用しているかどうかを誰かが知っていますか? その場合、受信者は再送信を要求しますか?
jgroups - JGroups での TCP のプログラムによる設定
次のようなフィールドを設定するにはどうすればよいですか
JavaコードのTCPプロトコル用? 一般的なメソッド setValue(...) は、これらの文字列を有効なプロパティ名として受け入れませんが、提供された tcp.xml にはこれらの文字列が含まれています。JGroups API には、これらに対する直接のセッターもありません。
ありがとう!カタリン
jboss - EhCache レプリケーション中の OOM
EhCache レプリケーションの使用中に OOM の問題に直面しました。メモリ ダンプは、jgroup 関連のオブジェクトが一番上にあることを示しています。
また、ログに次の警告が表示されます。
環境:
私たちが使用するライブラリのバージョン:
EhCache (ehcache.xml) の構成:
host_x の 7800 ポートが host_y から利用可能であり、その逆も可能であることを確認しました (telnet 経由)。
ここで OOM の問題が発生した場合、ルートを検出するのを手伝っていただけませんか? レプリケーションの不適切な構成についていくつかの仮定がありますが、現在、ここでエラーがどこにあるのかを定義できません。
アドバイスや提案をありがとう!
jms - 低遅延メッセージ キュー
基本的に、ワーカー ノード間でタスクを分散する 1 つのマスター ノードがあります。ワーカーの数は変更される可能性があります。つまり、サーバー側でワーカーをハードコーディングできませんでした。マスターはタスクをキューに送信し、ワーカーの 1 つがこのタスクを取得して処理し、結果を返します。最も重要な側面は、低レイテンシです。ワーカー ノードでの通常の処理時間は約 100 ~ 300 ミリ秒です。これは、メッセージング システムが処理時間に大幅な遅延を追加しないことを意味します。
現在、リクエストとレスポンスの JMS パターンを調べています。これは、マスターがタスクを共有キューに送信し、ワーカーがキューからタスクを取得して、マスター ノードがリッスンする別のキューに結果を送信することを意味します。マスターは応答を要求と関連付けます。
残念ながら、JMS はシステムに遅延をもたらす可能性がありますが、これは受け入れられません。おそらく、他のソリューションを検討する必要がありますか?RabbitMQ、JGroups、ZooKeeper などですか?
ここで JMS が適している場合、最速の JMS ブローカーをお勧めできますか? 現在、私はActiveMQを見ています
ソリューションのもう 1 つの要件は、クラウドで動作できることです。
cluster-computing - Jgroups で tcp で FD_PING を使用する方法
jgroups で FD_PING を使用しようとしていますが、失敗しています。jg-protocol-id.xml のプロトコル リストに FD_PING を追加した後、FD_PING を認識し始めましたが、FD_PING でコマンドを呼び出すと、検証する IP/ホスト名の代わりにノードの名前が送信されます。以下が構成です。また、障害検出を安定させる方法があれば教えてください。現在、多くの誤報が発生しています (そのため、FD_PING を使用しようとしています)。
java - EC2 JGroups ディスカバリー
現在のプロジェクトでは、アプリケーションをいくつかの Linux ボックスで Amazon の Elastic Computing Cloud にデプロイすることにしました。私たちはグループ通信に JGroups を使用しており、各アプリケーションを他のクラスターメンバーのアドレスで事前構成する必要のない信頼できる検出メカニズムが必要でした (TCPPING では必要であり、TCPGOSSIP では「ソート」が必要です)。UDP マルチキャストを使用できないため、マルチキャスト検出はオプションから除外されます。
S3 Ping プロトコルの使用を検討しましたが、いくつかの信頼性の問題があることを読んだ後、この発見を達成するために独自のプロトコルを展開することにしました。
私たちが作成したシンプルなプロトコルと、S3 Ping との比較についてフィードバックをいただければ幸いです。現在の 1 つの制限は、AWS SDK for Java に依存することです。
必要に応じてプロトコル スタック構成を含めることができますが、UDP と非常に似ていますが、マルチキャスト検出の代わりに EC2Ping プロトコルを使用する点が異なります。
私の主な質問は次のとおりです。
- これは、S3 Ping よりも信頼性の高いソリューションを提供しますか?
- AWS Java SDK への依存は、このソリューションの有用性を無効にしますか? (JGroups への貢献に関して)
どんなコメントでも大歓迎です。ありがとう
java - EC2上のJGroupsノードは、お互いを見ているのに話をしていません
Hibernate Searchを使用して、jgroupsSlaveノードからLuceneインデックスへのすべての書き込みがjgroupsMasterノードに送信され、LuceneインデックスがInfinispanでスレーブに共有されるようにしようとしています。すべてがローカルで機能しますが、ノードはEC2でお互いを検出しますが、通信していないようです。
彼らは両方ともお互いに生きているメッセージを送っています。
セキュリティグループ
マスター用とスレーブ用の2つのjarがあり、それぞれのEC2インスタンスで実行しています。各インスタンスに他のインスタンスからpingを実行できます。これらは両方とも同じセキュリティグループに属しており、グループ内の任意のマシン間の通信に関する次のルールを定義しています。
ICMPのすべてのポート0-65535(TCPの場合)0-65535(UDPの場合)
したがって、セキュリティグループの構成の問題ではないと思います。
hibernate.properties
infinispan.xml
jgroups-ec2.xml
これを最新のinfinispan-coreディストリビューション(5.2.0.Beta3ですが、5.1.4も試してみました)から直接コピーしました。私が変更したのは、s3_pingを私のものに置き換えただけですが、ノードがs3に書き込んでいるのがわかり、ノードがお互いを見つけているので、それは問題ではないと思います。また、jgroups.tcp.addressの環境変数をプライベートIPアドレスに設定してマスター/スレーブを起動しています。また、大幅に簡略化されたいくつかの構成を試しましたが、成功しませんでした。
問題が何であるかについてのアイデアはありますか?私はそれで遊んで数日を過ごしました、そしてそれは私を夢中にさせています。ローカルで動作し、EC2で通信できないため、jgroups設定を使用したものである必要があると思います。
あなたたちがこれを理解するのを手伝いたい他の情報はありますか?
sockets - jgroup の構成
udp.xmlJChannel channel=new JChannel();
という jgroups-all.jar のデフォルトの XML 構成ファイルを使用して、単一のマシンで 2 つの jgroup プロセスを開始しました。
次に、netstat コマンドを実行してポートの使用状況を確認しました。結果は次のとおりです。
番号 9304 と 2492 は JVM プロセス ID で、45588 はポート ID です。
私が知りたいのは、2 つのプロセスが 1 つのホストで同じポート 45588 を使用できる理由と、IP 0.0.0.0が何を表しているかです。
どうもありがとう。