問題タブ [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 - リモートプロセス管理のプロトコル
要するに:リモート プロセス管理用の既知のプロトコルはありますか?
いくつかのアプリケーションを含むシステムがあり、それぞれがローカル ネットワークに独自のコンピューターを持っています。アプリケーションが起動して実行されている場合、それらは問題なく通信します。
私が興味を持っているのは、リモート アプリケーションの起動、シャットダウン、および監視を管理するためのプロトコルです。監視とは、何か問題が発生したときにエラー コード (定義済み) を取得することを意味します。理想的には、1 つの管理アプリケーションからシステム全体を制御し、何が起こっているかについてのステータスを取得します。
私はかつて、これを行う社内プロトコルを作成した場所で働いていました。ただし、誰かがすでにこれを理解している場合は、もう一度書くことは避けたいと思います。
編集:いくつかの詳細:
- 使用されているプラットフォームは Windows と Linux で、どちらも x86 です。
- Windows では、C/C++ と .NET が使用されます。Linux では、C/C++。
java - 分散プロジェクトの負荷分散
接続しているユーザー、CPU 負荷、ネットワーク負荷、およびメモリ使用量を関連付ける単純な負荷分散アルゴリズム (数式) を知っている人はいますか? これは、さまざまなサーバーを比較し、現時点で最適なユーザーを新しいユーザーに割り当てるために使用されます。ありがとうございました。
agile - 分散開発チーム - 必要なツール
私は、さまざまなタイム ゾーンにグローバルに分散している開発者のチームを持っています。
そのようなチームで最大の生産性を達成するための最良のツールは何ですか?
を探しています:
- ソース管理
- バグ追跡
- ビルド管理
- 他に役立つ可能性のあるもの
ありがとう
erlang - 学習目的で Erlang で解決する興味深いプロジェクトは何ですか?
私は最近 Erlang を発見し、現在いくつかのチュートリアルに取り組んでいます。今では、趣味のプロジェクトとして実際に何かを実装することを楽しみにしています。私は別のチャット サーバーにはあまり興味がありません。もっと面白いものをコーディングしたいと思います (はい、これはかなりあいまいな用語であることは承知しています)。
助言がありますか?
編集: プロジェクトは、できれば Erlang の強み (同時実行性、分散) を強調する必要があります。
java - JBoss よりも簡単な方法で、コンテナ セッション管理を使用して Java で POJO RPC を実行
現在、私は Java で POJO の RPC を実行する方法しか知らず、非常に複雑な EJB/JBoss ソリューションを使用しています。
RMIまたは本格的なオブジェクトをシリアル化してネットワーク経由で送信できるものを使用して、同様の機能をより薄いレイヤー(Java EEコンテナーの内外)で提供するより良い方法はありますか?
私は現在、HTTP/JSON シリアライゼーションには興味がありません。
編集: 明確にするために: 古い EJB 2.1/JBoss 4 ソリューションを、コンテナー レベルで管理しやすいものに置き換えようとしています。データベースを完全に制御する必要があります (かなり複雑な SQL を非常に簡単に使用できる iBATIS を使用する予定です)。
- ルックアップ/データ変更メソッドの呼び出し (自動魔法のシリアライゼーションがここに入る)。
- 透過的なセッション制御 (認証/承認)。私はまだこれを達成する方法を見なければなりません。
もちろん、両方のアイテムが全体として機能する必要があります。資格情報を持たないユーザーにはアクセスを許可しないでください。
私は Web アプリケーションを作成するのがあまり好きではないので、POJO のみを管理し、いくつかのレポートを作成し、コンテナからメソッドを呼び出す GUI (Swing または SWT) を作成する予定です。シリアル化をできるだけ簡単にしたい。
makefile - Linux 用の無料の安全な分散 make システム
安全で無料の Linux 用の、言語にとらわれない優れた分散 make システムはありますか?
背景情報:
私は科学実験 (コンピューター サイエンスの実験) を実行します。この実験では、時には大きな依存関係ツリーがあり、時には数千または数万のツリー ノードが含まれることもあります。この依存関係ツリーは、データ ファイル、データ処理実行可能ファイル、および結果ファイルを対象としています。
私は何年にもわたって、次のようなさまざまな手法を試してきました。
- データベースを使用して独自の依存関係トラッカーを展開し、各ワーカー マシンでスクリプトを実行します。これは、特に非スクリプト言語で作業しようとすると、少し面倒になる可能性があります。
- すべての処理コマンドを単一の makefile に入れ、さまざまなワーカー マシンで手動で「構築」できる疑似ターゲットを使用します。これには特別なツールは必要ありませんが、手動で作業を均等なサイズの疑似ターゲット チャンクに分割し、各ワーカー ボックスで「make」を正しく呼び出すのは面倒です。
- distmake : 単一のメイクファイルからコマンドの実行を自動的に分散します...
私は基本的に distmake のようなものを探していますが、より安全です。私が知る限り、distmake は本質的に、各ワーカー ノードに大きく開いたバックドアを残します。
また、代替品が distmake よりも堅牢であるとよいでしょう。メインの distmake 呼び出しを中断すると、バックドア サーバーをシャットダウンできますが、ワーカー ノードで実行中のプロセスを適切に強制終了することはできません。
説明:
gccでコンパイルしてリンクするのではなく、メイクファイルでデータを処理しています。ドキュメントを読んだところによると、distcc は gcc を配布するための専用ツールです。ソースファイルの gcc ではなく、共有ファイルシステムでホストされている非常に大きなデータファイルで独自の実行可能ファイルを実行するので、distcc は役に立ちません。
ワーカー ノードは外部から見えるマシンなので、すべてのワーカー デーモンを少なくとも ssh と同じくらい安全にする必要があります。ソースを読まなくてもわかることですが、distmake ワーカー デーモンはポートを開き、それに接続するすべてのユーザーからのコマンドを受け入れます。デーモンを起動したユーザーとしてコマンドを実行します。
dns - クロスコロ フェールオーバー設計、DNS レベルのフェールオーバー?
メイン サイトに障害が発生した場合に、ユーザーが別のコロのフェイルオーバー サイトにシームレスに到達するような、Web アプリケーションのクロスコロ フェイルオーバー戦略に興味があります。
物事のアプリケーション側は、回復して途中で拾うことができるように設計されたコロとサービスの間のマスタースレーブデータベースセットアップでほとんど理解されるようです. メイン サイトからフェールオーバー サイトにトラフィックを移動するための戦略を見つけようとしています。DNS フェイルオーバーは、TTL が低い場合でも、かなりの遅延が発生するようです。
メインコロのサーバーに到達できないと仮定して、コロ間でトラフィックをすばやく移動するためにどのような戦略をお勧めしますか?
クロスコロ フェールオーバーについて他に興味深い経験や知恵の言葉があれば、ぜひ聞かせてください。
distributed - 複数のサーバー間でタスクを調整する
複数のサーバー間のタスクの調整を容易にするユーティリティ/ライブラリはありますか?私の場合、スケジュールされたタスクを実行し、サーバー間で大量のデータをコピーし、プロセスを再起動する必要があります(クラスター内の異なるマシンで発生する一連の依存操作)。
cronジョブとバッチスクリプトを使用することはできますが、これを実行するためのより堅牢でエレガントな方法があると考えざるを得ません。
java - JMX 経由で C++ アプリケーションを管理することは可能ですか?
CORBA を介して対話する C++ および Java モジュールを含む分散アプリケーションがあります。
「変数」と「メソッド」を JMX ツールに公開する (統合管理を作成する) ための C++ ライブラリ/ツールはありますか?
time - 分散時刻同期と Web アプリケーション
私は現在、サーバーとすべてのクライアント間で適切な時刻同期を本質的に必要とするアプリケーションを構築しようとしています。この同期の必要性をなくすことができる私のアプリケーション用の代替設計がありますが、私のアプリケーションは同期が存在しないとすぐに機能しなくなります。
何か不足している場合に備えて、私の基本的な問題は次のとおりです。複数の場所でまったく同時にイベントを発生させます。私が知る限り、これを行う唯一の方法はある種の時刻同期を必要としますが、私は間違っているかもしれません。問題を別の方法でモデル化しようとしましたが、すべて a) つまらないアプリ、または b) 時刻同期が必要です。
同期された時間が本当に本当に必要だと仮定しましょう。
私のアプリケーションは Google AppEngine で構築されています。AppEngine はサーバー間での時刻同期の状態について保証しませんが、通常は数秒程度 (つまり NTP よりも優れている) で非常に良好ですが、10 秒程度遅れる場合もあります。同期の。私のアプリケーションは 2 ~ 3 秒の同期のずれを処理できますが、ユーザー エクスペリエンスに関しては 10 秒は問題外です。基本的に、私が選択したサーバー プラットフォームは、信頼できる時間の概念を提供しません。
私のアプリケーションのクライアント部分は JavaScript で書かれています。ここでもまた、クライアントが信頼できる時間の概念を持っていない状況があります。私は測定を行っていませんが、私の最終的なユーザーの何人かは、1901 年、1970 年、2024 年などに設定されたコンピューターの時計を持っていることを完全に期待しています。基本的に、私のクライアント プラットフォームは信頼できる時間の概念を提供しません。
この問題は私を少し怒らせ始めています。これまでのところ、HTTP の上に NTP のようなものを実装するのが最善だと思います (これは思ったほどクレイジーではありません)。これは、インターネットのさまざまな場所に 2 つまたは 3 つのサーバーを設置し、従来の手段 (PTP、NTP) を使用して同期が少なくとも数百ミリ秒のオーダーであることを確認することで機能します。
次に、これらの HTTP 時刻ソース (および XMLHTTPRequest から入手できる関連するラウンドトリップ情報) を使用して、NTP 交差アルゴリズムを実装する JavaScript クラスを作成します。
お分かりのように、このソリューションも非常に時間がかかります。それは恐ろしく複雑であるだけでなく、問題の半分を解決するだけです。つまり、クライアントに現在の時間の適切な概念を与えることです。次に、サーバーで妥協する必要があります。クライアントが要求を行うときに、クライアントがサーバーに応じて現在の時刻を伝えることができるようにする必要があります (大きなセキュリティではありませんが、これのより明白な乱用のいくつかを軽減できます)。または、サーバーが魔法の HTTP-over-NTP サーバーの 1 つに単一の要求を作成し、その要求が十分に迅速に完了することを期待します。
これらの解決策はすべて最悪で、私は道に迷っています。
注意: Web ブラウザーの束 (できれば 100 以上) が、まったく同時にイベントを発生できるようにしたいと考えています。