問題タブ [service-discovery]
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.
load-balancing - Zookeeper v/s ハードウェア ロードバランサー
最近、Zookeeper を調べていて、次のユースケースでハードウェア ロードバランサーと比べてどうなのか疑問に思いました。
- サービス発見
- ZooKeeper を使用すると、サーバーは、登録済みサーバーのリストを取得するためにクライアントが参照できる共通の znode に自身を登録します。
- H/W ロードバランサを使用すると、VIP 名の背後にいくつかのサーバー IP を持つことができ、クライアントは VIP アドレスのみを認識します。
- 負荷分散
- ZooKeeper を使用すると、クライアント側で負荷分散が行われます。
- H/W LB を使用すると、ロード バランサー側で負荷分散が行われます。
上記の 2 つのユースケースの場合、H/W ロードバランサーよりも ZooKeeper を使用することに特定の利点はありますか?
c# - WCFクライアント関数の呼び出しはIISでは機能しません
WCFディスカバリーを使用してサービスを作成しました。(VS2010デバッグを使用して)特定のポートに展開するとすべて正常に機能しますが、IISに展開しようとすると、サービスは検出されますが、どのメソッドも実行できません。
これはコードです:
メソッドを実行client.getMsg()
しようとすると、次のエラーが発生します。
EndpointNotFoundException:メッセージを受け入れることができるhttp://computerName.domain/services/Service.svc
で リッスンしているエンドポイントがありませんでし た。これは多くの場合、誤ったアドレスまたはSOAPアクションが原因で発生します。詳細については、InnerException(存在する場合)を参照してください。
しかし、私はアドレスを取得しました。つまり、それが見つかりました。そして、(iisではなく)debug deployerを使用するhttp://localhost:port/services/Service.svc
と、それが見つかり、完全に正常に実行されます。どうすれば問題なくIISにデプロイできますか?
OS:win764ビット
設定ファイル:
udp - 分散サーバーのインスタンス間のデータ ブロードキャスト
特定のアプリケーションでのサービス「名簿」の推奨事項に関するフィードバックを得ようとしています。クライアントとの永続的なソケット接続を維持するサーバー アプリがあります。分散インスタンスをサポートするサーバーをさらに開発したいと考えています。サーバー "A" は、他のオンライン サーバー インスタンスにデータをブロードキャストできる必要があります。他のすべてのアクティブなインスタンスについても同様です。
私が調査しようとしているオプション:
- Redis / Zookeeper / Doozer - 各サーバー インスタンスはそれ自体を構成サーバーに登録し、接続されているすべてのサーバーは構成の変更に応じて構成の更新を受け取ります。じゃあ何?
- 各サーバー インスタンスとのエンド ツー エンド接続を維持し、送信データごとにリストを反復処理しますか?
- 一部のカスタム UDP マルチキャストですが、その上に独自の信頼性を追加する必要があります。
- カスタム メッセージ ブローカー - 各サーバーが接続して通知するときにレジストリを実行および維持するサービス。各サーバーとの接続を維持してデータを受け入れ、それを他のサーバーに再ブロードキャストします。
- 各サーバー インスタンスが直接ブロードキャストするだけで、名簿が維持されない、信頼性の高い UDP マルチキャスト トランスポート。
ここに私の懸念があります:
- Zookeeper や doozer などの外部アプリに依存することは避けたいと思っていますが、それが最善の解決策である場合は明らかにそれらを使用します
- カスタム メッセージ ブローカーでは、スループットがボトルネックになることは望ましくありません。つまり、複数のメッセージ ブローカーを実行し、スケーリング時にロード バランサーを使用することも必要になる可能性があるということですか?
- マルチキャストは、自分でロールすることができれば外部プロセスを必要としませんが、それ以外の場合は、おそらく ZMQ を使用する必要があり、これも依存の状況に陥ります。
メッセージ配信についても話していることは理解していますが、それは私が使用するソリューションと密接に関連しています。ところで、私のサーバーは Go で書かれています。スケーラビリティを維持するための最も推奨される方法に関するアイデアはありますか?
* 目標の編集 *
私が本当に求めているのは、次の条件を考慮して、分散サーバーのインスタンス間でブロードキャスト データを実装する最良の方法は何かということです。
- 各サーバー インスタンスは、リモート クライアントとの永続的な TCP ソケット接続を維持し、それらの間でメッセージを渡します。
- メッセージは、関連するクライアント接続に配信できるように、実行中の他のインスタンスにブロードキャストできる必要があります。
- メッセージングは高速になる可能性があるため、低レイテンシーは重要です。
- 順序と信頼性が重要です。
*質問の要約を更新*
複数のサーバー/複数のエンドポイントがあり、相互にパブリッシュ/サブスクライブする必要がある場合、それらの間の推奨される通信モードは何ですか? 検出されたサーバーの名簿にメッセージを再発行するための 1 つ以上のメッセージ ブローカー? 各サーバーから直接、信頼できるマルチキャスト? 分散システムで複数のエンドポイントを接続し、遅延を低く、高速で、配信の信頼性を維持するにはどうすればよいでしょうか?
minecraft - 動的サーバー検出リスト
アプリケーション サーバーが接続して、アプリケーションを実装するサーバーのリストに自分自身を追加できる Web サービスを作成したいと考えています。その後、クライアントはサービスに接続して、サーバーのリストを取得できます。サーバーをメインサーバーリストに追加するためにMinecraftのハートビートがどのように機能するかに似ています。
私はそれを自分で簡単に実装できましたが、誰かがすでにこのようなものを作成していることを願っています.
高度な機能が役立ちます。次のようなもの:
- サーバーに現在接続しているユーザー数など、アプリケーション固有のプロパティに対してクライアントがクエリを実行できるようにする
- サーバー リストを複数のマシンに分散する
- 一定時間内にハートビートを送信しなかった場合に、リスト内のサーバーのエントリをタイムアウトにする
このようなサービスを知っている人はいますか?ローカル LAN サービスの検出を行うためのオープン プロトコルとサーバーがあることは知っていますが、これは WAN サービスになります。
java - クライアントサーバーでの JmDNS サービス検出
JmDNS を使用して、クライアント サーバー アプリケーションでサービス検出を有効にしようとしています。次のようなコードを使用して、サーバー側のサービス レジストリを完全に理解しています。
しかし、登録されたサービスからクライアントにポート番号と IP アドレスを取得させ、このデータを使用して TCP 接続を開く方法がわかりません。JmDNS の使用方法の例を検索しましたが、役に立ちませんでした。ここで誰かが私にいくつかの基本的な例を教えてもらえますか? または、誰かが JmDNS の優れたリソース/チュートリアルへのリンクを持っている場合は、それらを提供してもらえますか?
注:ここではJmDNSが必要なので、代替案を提供せずにJmDNSのみに関連する回答をいただければ幸いです。また、私は JmDNS API を広範囲に調べましたが、まだ理解できないので、ドキュメントへのリンクをリソースとして投稿しないでください。
ありがとう。
wcf - WP7 からローカルで実行されている WCF を検出する
Windows サービス内で実行されている WCF サービスがあり、ローカル ネットワーク上にあります。私が望むのは、WP7 (同じネットワーク上) の Silverlight アプリから WCF を検出できるようにすることです。
WCF に Discovery 機能があることは知っていますが、UDP が必要で、WP7 ではサポートされていません。ローカル WCF を検出する他の方法はありますか?
また、WCF を起動する前に、WCF サービスの IP アドレスもわかりません。
.net - Windows での IP 検出
クライアントがサービスを発見するための戦略にはどのようなものがありますか?
たとえば、サービスに接続したいクライアントがいるとします (同じネットワークの同じサブネット上にあると仮定します)。サービスが実行されていることを検出するための良い方法は何ですか?
クライアントに頻繁にブロードキャストして、サービスが応答するのを待つ必要がありますか? それとも、サービスを頻繁にブロードキャストして、クライアントに聞いてもらうでしょうか?
サービス自体をブロードキャストし、クライアントにリッスンしてもらいたいと思います。
これの標準的な慣行は何ですか?
たとえば、このサービスは、クライアントが wifi/ネットワーク経由でリモート コントロールすると音楽を再生するミュージック プレーヤーのようなものになります。PC/MAC 上の iTunes プレーヤーを制御する iPhone 用の iTunes Remote を考えてみてください。
bluetooth - BlueCoveクライアントがPyBlueZサービスを認識しない
PyBlueZを使用して作成されたUbuntuデスクトップでBluetoothサーバーを実行しています。そのサーバーは、UUIDを介して特定のサービスをアドバタイズしています。PyBlueZで作成したクライアントを使用して、このサーバーを徹底的にテストしました。
現在、BlueCoveを使用してJavaクライアントを実装しようとしています。BlueCoveクライアントはデスクトップを正常に見つけることができます(「ユーザーフレンドリーな名前」を印刷して確認しました)。ただし、デスクトップでアドバタイズされたUUIDのサービス検索を実行すると、サービスが見つかりません。エラーなどは発生しません。検出されたサービスのコールバックは発生しません。
これら2つのシステムを接続するときに起こっている可能性のある異常なことはありますか?UUIDは同じですが、PyBlueZ形式ではUUIDにダッシュ「-」が必要ですが、BlueCoveでは16進数の連続した1つの文字列が必要です。これは純粋にプレゼンテーションの問題だと思います。
最後に、無関係な問題として、BlueCoveコミュニティはありますか?BlueCoveの質問に対する答えを見つけるためのリソースが極端に不足しています...
android - Android Bluetooth: サービスの検出に失敗しました。デスクトップ/ラップトップへの接続
数か月前に作業していた Android アプリを使用して、Droid X2 を Bluetooth 経由で ASUS Transformer タブレットに接続することができました。その接続はうまくいきました。
いくつかの Ubuntu マシンで PyBlueZ を使用してクライアント/サーバーのペアをコーディングし、Windows マシンで BlueCove を使用して同様のクライアント/サーバーのペアをコーディングしました。
これら 3 つの動作するテスト済みのシステムを簡単に接続できると思いました。残念ながら、現在 Droid X2 を他のマシンに接続することも、他のマシンを Droid X2 に接続することもできません (ASUS Transformer はもうありません)。ただし、PyBlueZ クライアント/サーバー ペアを BlueCove クライアント/サーバー ペアに問題なく接続できます。
Android デバイスをデスクトップ/ラップトップに接続する際に、既知の複雑さはありますか? 提供する必要がある追加情報、またはコミュニケーションの異なる形式はありますか? 安全でない rfcomm チャネルを使用してサービス リストに接続しようとしています。両側で同じ UUID を使用しています。繰り返しになりますが、Droid X2 と ASUS Transformer の間で、これとまったく同じ安全でない rfcomm サービス接続が機能していました。
興味深い点の 1 つは、すべてのシステムが UUID を使用しているにもかかわらず、私の PyBlueZ と BlueCove の実装にもサービス名がありますが、Android はサービスに接続するためにサービス名を要求せず、UUID のみを要求することです。それは問題になるでしょうか?
ありがとう。
python - Python での Service Location Protocol (SLP) バインディング
Python でService Location Protocol (SLP) クライアントを実装するためのライブラリはありますか?