問題タブ [distributed]
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.
distributed - 分散システム上のノード間の通信をどのレベルで実装する必要がありますか?
私は、初日から単一のサーバーが処理できる限界に達する Web アプリケーションを構築しています。そのため、いくつかの同一ノードを持つ分散アーキテクチャを採用することを検討しています。目標は、スケーラビリティ (より多くのユーザーに対応するためにサーバーを追加する) とフォールト トレランスを提供することです。ノードはノード間で何らかの状態を共有する必要があるため、ノード間の通信が必要です。この通信をJavaで実装するには、次の代替手段があると思います。
- ソケットとカスタム プロトコルを使用して実装します。
- RMI を使用する
- Web サービスを使用します (各ノードは HTTP 要求を送受信/解析できます)。
- JMS を使用する
- Terracottaやhazelcastなどの別の高レベル フレームワークを使用する
これらのテクノロジーが互いにどのように比較されるかを知りたいです。
- ノード数が増えると
- ノード間の通信量が増加した場合 (1 秒あたり数千のメッセージおよび/または最大 100KB のメッセージなど)
- 実用的なレベル (例: 実装の容易さ、利用可能なドキュメント、ライセンスの問題など)
- また、実験的または学術的なプロジェクトとは対照的に、実際の生産プロジェクトで人々がどのようなテクノロジーを使用しているかを知りたいと思っています。
java - Google App Engine(またはより一般的には分散サーバー環境)のシングルトンはどのように機能しますか?
Google App Engine(または任意の分散サーバー環境)でシングルトンがどのように機能するかについて興味があります。アプリケーションが一度に複数のプロセス(複数のマシン上)で実行され、リクエストがすべての場所からルーティングされる可能性がある場合、アプリが次のようなことを行うと、実際には内部で何が起こりますか?'CacheManager.getInstance()'?
例として(GAE)CacheManagerを使用していますが、私のポイントは、どこかにシングルトンの単一のグローバルアプリケーションインスタンスがあるということです。それはどこにありますか?RPCは呼び出されますか?実際、グローバルアプリケーションの状態(セッションなど)は実際にどのように一般的に処理されますか?
よろしく、シェーン
c++ - 卒業プロジェクト
エンジニアリングの卒業研究の最終年度の一環として、プロジェクトを行う必要があります。分散システムと人工知能を組み合わせたもので、プログラミングに python、c、または c++が必要なプロジェクトをいくつか提案できますか? 注: - 2 人の学生のグループで達成可能なプロジェクトを提案してください。
c++ - 小規模分散 C++ アプリの最適なアプローチ
スタンドアロンアプリの配布に取り組んでいます。アプリの各インスタンスは、クエリを送受信できる必要があります。
要件:
- 言語 - C++
- スケール - 小さい。一度に 5 つのインスタンスの場合があります
- プラットフォームに依存しない
- データ転送量が多いことが予想される(最悪の場合生画像)
レジストリ サービスを実行する必要があるため、RPC は使用したくありません。CORBA と SOAP はオーバーヘッドが大きすぎると思います。カスタムプロトコルを使用することにしましたが、もっと良いものがあるかどうか聞きたいだけです.
ありがとう。
svn - SVN リポジトリの変更
SVN サーバー A からプロジェクトをチェックアウトしましたが、変更をサーバー B にコミットする必要があります。両方のサーバーのリポジトリの構造は同じです。Tortoise SVNでこれを行うにはどうすればよいですか?
ありがとう、ドン
java - 分散システム、最高のフレームワーク?
次のシナリオに従うソフトウェア プログラムを構築しています。
多くのコンピューターがあり、それぞれをクラスターに追加します。クラスター内の各コンピューターは、分散テーブルにファイルを追加できます (辞書、ハッシュマップは十分に高速である必要があります)。
これで、グループ/クラスターに含まれるファイルを全員が確認できる場所ができました。ここで、グループ/クラスターのコンピューターがファイルを要求します。彼は、分散テーブルからファイルに関するすべての情報にアクセスできます(ファイルを見つけることができるコンピューターなど)。
何らかのメカニズムによって、ポイント B (ファイルを持っているコンピューター) からポイント A (ファイルを要求したコンピューター) にファイルを取得する必要があります。
基本的に、データの複製を行う必要があります。(ただし、非常に大きなファイルの場合)
ですから、おそらく、この質問は何を求めているのだろうと疑問に思うでしょう。
データの複製は、できるだけ高速にする必要があります。最善のアプローチは何ですか?フラックスネットワークのようなものを考えました。
シナリオに従うソフトウェアに使用するのに最適なフレームワークは何ですか?
Javaフレームワークを探しています:)。(クロスプラットフォームを実行する必要がありました)
ありがとうございました!
database - 共通の分散データを同期するためのベスト プラクティス
ユーザーがオンラインに戻ったときにサーバーと同期されるデータをユーザーが作成できるオフライン モードをサポートするインターネット アプリケーションがあります。このため、データベースのアイデンティティに UUID を使用しているため、切断されたクライアントは、別のクライアントが使用する ID を使用することを恐れずに新しいオブジェクトを生成できます。ただし、これは、このユーザーが所有するオブジェクトに対してはうまく機能します。複数のユーザーによって共有されるオブジェクトです。たとえば、ユーザーが使用するタグはグローバルである可能性があり、リモート データベースがユニバース内の可能なすべてのタグを保持できる方法はありません。
オフライン ユーザーがオブジェクトを作成し、いくつかのタグを追加した場合。これらのタグがユーザーのローカル データベースに存在しないため、ソフトウェアがタグの UUID を生成するとします。これらのタグが同期されると、重複を解決するための解決プロセスが必要になります。リモート データベース内の既存のタグをローカル バージョンと照合する何らかの方法。
1 つの方法は、グローバル オブジェクトが自然キー (タグの場合は名前) によって解決されるプロセスを使用することです。ローカル データベースは、既存のオブジェクトをグローバル データベースのオブジェクトに置き換える必要があります。他のオブジェクトへの接続が多数ある場合、これは面倒な場合があります。これを避けるように何かが私に言います。
これを処理する別の方法は、2 つの ID を使用することです。1 つのグローバル ID と 1 つのローカル ID。UUID を使用することでこれを回避できると期待していましたが、単一の UUID を使用する場合と 2 つの分割 ID を使用する場合を行き来しています。このオプションを使用すると、問題を手に負えなくなったのではないかと思います。
もう 1 つの方法は、非共有オブジェクトを通じてすべての変更を追跡することです。この例では、ユーザーがタグを割り当てたオブジェクトです。ユーザーがオフラインでの変更を同期すると、サーバーはユーザーのローカル タグをグローバル タグに置き換える場合があります。次にこのクライアントがサーバーと同期するときに、非共有オブジェクトの変更が検出されます。クライアントがそのオブジェクトをプルダウンすると、グローバル タグを受け取ります。ソフトウェアは、非共有オブジェクトをサーバーのタグに向けて再保存し、ローカル バージョンを孤立させます。これに関するいくつかの問題は、完全に同期するための余分なラウンド トリップと、孤立したばかりのローカル データベース内の余分なデータです。システムが同期状態の間にあるときに発生する可能性のある他の問題やバグはありますか? (つまり、サーバーと通信して、オブジェクトのローカル UUID を送信しようとするなど)。
もう 1 つの方法は、一般的なオブジェクトを避けることです。私のソフトウェアでは、それは受け入れられる答えになる可能性があります。私はユーザー間でオブジェクトを共有することはあまりしていませんが、それは将来もそうしないという意味ではありません。つまり、このオプションを選択すると、将来、これらのタイプの機能を追加する必要が生じた場合、ソフトウェアが麻痺する可能性があります. この選択には結果が伴いますが、それらを完全に調査したかどうかはわかりません。
だから私は、あらゆる種類のベストプラクティス、このタイプのシステムを処理するための既存のアルゴリズム、選択に関するガイダンスなどを探しています.
linux - Linuxディストリビューション全体にバイナリアプリケーションを配布する
まだオープンソースではないアプリケーションを作成しました。実行可能ファイルをさまざまなLinuxディストリビューションに配布したいと思います。これを行うための最良の方法は何ですか。.rpmと.debのパッケージを少し調べましたが、それがバイナリに使用できるかどうかはわかりません。理想的には、OS XのPackageMakerや、Windowsの通常のインストーラーのように/ usr/binに自動的にコピーするものが欲しいです。それは.rpmおよび.debパッケージの目的ですか、それとも自動的に実行するシェルスクリプトをバンドルする必要がありますか?
distributed - 同期の悪夢-IISなしで2つのSQLCEインスタンス間でマージレプリケーション(またはRDA)を使用することは可能ですか?
以下の同期を維持することを含む次の問題に直面しています。
- 1集中型サーバー(IIS / MSSQL 2005)
- ClickOnceによって配布される多くのデスクトップWPFクライアント
- 多くのモバイルクライアント-(Windows CE)
代替テキストhttp://img502.imageshack.us/img502/8246/deployment.png
これらの厄介な制約がある場合:
- すべての同期関係は双方向です
- デスクトップとモバイルノードにはオフラインモードが必要です
- モバイルノードは中央サーバーと同期できませんが、USB経由でデスクトップノードと同期します。デスクトップノードは、中央サーバーではなく、モバイルクライアントのサーバーとして機能します。次に、モバイルノードからの更新は、デスクトップと同期し、そのデスクトップを中央サーバーと同期することにより、中央サーバーに伝播する必要があります。 おい。
不快な。
デスクトップとサーバーを同期するには、Merge Replicationを使用できることがわかっています。サーバーはプロバイダーであり、デスクトップはサブスクライバーです。しかし、モバイルノードとデスクトップノードの同期についてはどうでしょうか。どうやらデスクトップはSQLサーバー+ISSなしではパブリッシャーにはなれませんよね?MSSQLCEはデスクトップにのみ展開できます。
この場合でも、ノードはサブスクライバーとパブリッシャーの両方になることができますか?この配置はMergeReplicationアーキテクチャではサポートされていないようです。サポートされているモデルはハブアンドスポークだけのようです。
考えられる解決策としてRDAまたはマージレプリケーションを排除できるかどうかを判断しようとしています。そうであれば、おそらくMSSyncFrameworkを追求するでしょう。
おそらく、私たちが検討できる他のテクノロジーはありますか?
皆さんありがとう、
アシュリー
更新:MS Sync Frameworkを使い始めたばかりで、すばらしいです。
data-modeling - 分散データモデル
私はフィールドロボティクスで働いており、中央サーバーが車両の状態、環境の状態、タスク、タスクのグループ化などに関係するデータのヒープ全体を追跡しています。このデータのさまざまな部分を処理するプロセスと、特定の部分が変更されたときに更新する必要があるユーザーインターフェイスがあります。
私が欲しいのは、システムが中央サーバーに接続し、データの一部をサブスクライブする方法です。彼らはすべてのデータを彼らにパイプダウンし、変更が発生すると送信されます。さらに、特定の更新を統合できることを指定できるようにしたいと思います。車両が3回移動したが、接続されたUIの帯域幅が、最新の位置だけが送信されるよりも少ない場合です。
現在、クライアントサブスクリプションクエリを追跡し、それらに送信するデルタを計算するインメモリデータベースを考えています。データモデルを配布するためのより良い方法または既存のソリューションはありますか?