問題タブ [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.
sql-server - 2 つの関連しているが別々のシステムを互いに同期させるにはどうすればよいでしょうか?
私の現在の開発プロジェクトには 2 つの側面があります。まず、外部ユーザーがさまざまな目的で情報を送信および更新できる公開 Web サイトがあります。この情報は、コロ施設のローカル SQL Server に保存されます。
2 番目の側面は、従業員が同じレコードを (概念的に) 管理し、ステータスの更新、承認などを提供するために使用する内部アプリケーションです。このアプリケーションは、独自のローカル SQL Server データベースを使用して、企業のファイアウォール内でホストされます。
2 つのネットワークはハードウェア VPN ソリューションによって接続されています。これはまともですが、明らかに世界で最も高速なものではありません.
2 つのデータベースは類似しており、同じテーブルの多くを共有していますが、100% 同じではありません。両側のテーブルの多くは、内部または外部アプリケーションに非常に固有のものです。
問題は、ユーザーが自分の情報を更新したり、公開 Web サイトで記録を送信したりするとき、そのデータを内部アプリケーションのデータベースに転送して、内部スタッフが管理できるようにするにはどうすればよいかということです。またその逆も同様です... スタッフが行った更新を Web サイトに戻すにはどうすればよいですか?
これらの更新がより「リアルタイム」に行われるほど、より良いことに言及する価値があります。すぐに実行する必要はありませんが、適度に高速です。
これまでのところ、次のタイプのアプローチを使用することを考えてきました。
- 双方向レプリケーション
- 変更が行われたときに (リアルタイムで) 同期するためのコードを含む、両側の Web サービス インターフェイス。
- 変更を非同期的に同期するためのコードを含む両側の Web サービス インターフェイス (キューイング メカニズムを使用)。
何かアドバイス?以前にこの問題に遭遇した人はいますか? あなたにとってうまくいく解決策を思いつきましたか?
performance - Hadoop の使用経験はありますか?
Hadoop を試した人はいますか? 共有なしのアーキテクチャで、分散ファイルシステムなしで使用できますか? それは理にかなっていますか?
また、あなたのパフォーマンス結果にも興味があります...
java - Project Darkstarは現実的ですか?
Project Darkstarは、昨夜ニューヨークのGoogleオフィスで開催された毎月のJavaSIGミーティングのトピックでした。知らない人(おそらく全員)にとって、Project Darkstarは、すべての「難しいこと」を処理しようとする大規模なマルチプレイヤーオンラインゲームのフレームワークです。基本的な考え方は、すべての操作が小さなタスクに分割されるようにゲームサーバーロジックを作成することです。これらのタスクをProjectDarkstarフレームワークに渡します。このフレームワークは、クラスター内の特定のノードへのタスクの分散、同時実行の問題、そして最終的にデータの永続化を処理します。
どうやら、この種のことを行うことは、ビデオゲームにとってはエンタープライズアプリケーションの場合とは大きく異なる問題です。講演を行ったJimWaldoは、MMOゲームのDB読み取り/書き込み比率は50/50であるのに対し、エンタープライズアプリは90%が読み取り、10%が書き込みに近いと主張しています。彼はまた、ほとんどの既存のMMOはすべてを排他的にメモリに保持し、その6時間ごとにのみDBにダンプすると主張しています。これは、サーバーがダウンした場合、最後のDBダンプ以降のすべての作業が失われることを意味します。
さて、プロジェクト自体は本当にクールに聞こえますが、業界がそれを受け入れるとは思いません。まず、Javaでサーバーコードを作成する必要があります。クライアントコードは何でも書くことができますが(JimはActionScript 3が最も人気があり、C ++がそれに続くと主張しています)、サーバーのものはJavaでなければなりません。私には良さそうに聞こえますが、ゲーム業界の誰もがJavaを嫌っているという印象を受けます。
第二に、開発者が既存のフレームワークとライブラリを使用することを好む他の業界とは異なり、ゲーム業界の人々はすべてを自分で書くことを好むようです。それだけでなく、彼らは彼らが作り出すすべての新しいゲームのためにすべてを書き直すのが好きです。開発者が物理学にHavokを使用しているところ、プラットフォームとしてUnreal Engine 3を使用しているところなど、状況は変わり始めていますが、ほとんどの場合、すべてがまだ独占的であるように見えます。
それで、Project Darkstarの人たちはただ時間を無駄にしているのでしょうか?このような一般的なフレームワークは、必要なパフォーマンスを備えた複雑なゲームで実際に機能しますか?たとえそれが機能したとしても、ゲーム会社はそれを喜んで使用しますか?
http - Windows および iis (http) ベースの分散型バージョン管理システムとはどのようなものでしょうか。
私の仕事では、ウェブサイトの制作と販売を行っています。通常、.NET C# ベースのサイトをお客様のサーバーにインストールし、リモートで維持およびサポートします。ただし、時折、大規模な開発作業のために、そして物事を単純化 (および高速化) するために、サイトをローカル サーバーにコピーします。
これは素晴らしいことですが、サイトを顧客に戻すという 1 つの問題があります。さて、顧客のコピーに何も変更がなければ、問題ありません。しかし、悲しいことに、いつか (私が望んでいるよりも頻繁に読んでいます)、いくつかの修正を実稼働サーバーに適用する必要がありました。お客様が今すぐ必要としていたか、単に重大なバグだったからです。
これらのバグ修正をローカル コピーにも簡単に適用できることはわかっていますが、これはエラーが発生しやすいプロセスです。そのため、2 つのコピーを同期させるために、分散バージョン管理に期待を寄せています。
必要なものは次のとおりです。
- インストールが簡単 - インストーラーと管理者権限以外は何も必要ありません。
- 仮想ディレクトリとして既存の Web サイトに統合でき、ポート 80 で動作します。新しい DNS は必要ありません。
- 優れたソフトウェア
それでおしまい。何か案は?
回答に対するいくつかのコメント
まず、ありがとう!とても有難い。
Mercurial と Bazaar を見てきましたが、どちらも非常に良さそうです。唯一の注意点は、IIS の仮想ディレクトリとしてインストールすることです。私の知る限り、Mercurial は特別なプロトコル (ワイヤー) を使用し、Bazaar のニーズと Python 拡張機能の追加を使用します。IIS と統合しやすい別のシステムはありますか? 私はそのためにパフォーマンスヒットを喜んで受けます。
api - スプレッド vs MPI vs zeromq?
TCP の信頼性を備えたブロードキャストのような UDPに対する回答の 1 つで、あるユーザーがSpreadメッセージング APIについて言及しています。ØMQと呼ばれるものにも出くわしました。MPIにもある程度精通しています。
ですから、私の主な質問は、なぜ一方を他方よりも選択するのでしょうか? より具体的には、MPI の成熟した実装があるのに、なぜ Spread または ØMQ を使用することを選択するのでしょうか?
distributed - 分散アプリケーションでの意思決定
多数のクライアントと 1 つのメイン サーバーがある分散アプリケーションでは、次のことを行う必要があります。
- クライアントを愚かに、サーバーをスマートにします。クライアントは高速で非侵襲的です。ビジネス ルールは 1 か所だけでよい
- クライアントを賢くし、サーバーを馬鹿にする: サーバーからできるだけ多くの負荷を取り除く
追加情報:
- クライアントは、使用しているコンピューターに関する大量のデータを収集します。サーバーはこれらの情報をすべて分析して、これらのコンピューターの正常性を判断する必要があります
- クライアント コンピューターの所有者は気まぐれで、クライアントがリソースを大量に消費し始めるとクライアントをシャットダウンします (したがって、問題の診断に役立つ分散アプリの目的を無効にします)。
language-agnostic - ピアツーピア システム全体でアイテムを確実に、しかし最小限に配布する方法
クエリ可能なピア ツー ピア システムがある場合は、
- ネットワーク全体のクエリの総数を減らす (「人気のある」アイテムを広く配布し、「類似の」アイテムをまとめて配布することにより)
- 各ノードで余分なストレージを避ける
- クライアントのダウンタイム、ハードウェア障害、およびユーザーの離脱に直面して、中程度に希少なアイテムであっても良好な可用性を保証します (おそらく、アーキビスト/歴史家にとって希少なアイテムを検出します)
- ネットワーク パーティションが発生した場合にクエリが一致を見つけられないことを回避する
これらの要件を考えると:
- 標準的なアプローチはありますか?そうでない場合、尊敬されているが実験的な研究はありますか? 私は分散スキームに精通している人もいますが、ロバスト性の学習に実際に取り組んでいるものは見たことがありません。
- 明らかな基準がありませんか?
- この問題に取り組んだり、解決したりすることに興味のある人はいますか? (もしそうなら、私が今週末に一緒に投げた非常に不十分なシミュレーターの一部をオープンソースにして喜んで、一般的に役に立たないアドバイスを提供します)。
@cdv: 今ビデオを見ましたが、とても良いです。プラグイン可能な配布戦略に完全に到達しているとは思えませんが、90% は確実に達成されています。ただし、質問は、このアプローチとの有用な違いを強調しており、私のさらなる懸念のいくつかに対処し、フォローアップするための参考文献をいくつか提供してくれます。したがって、質問は未解決であると考えていますが、暫定的にあなたの回答を受け入れています。
c++ - デスクトップとブラウザーで実行されるアプリを開発するための最適なテクノロジは?
マイクロソフトWPF? アドビ エアー/フレックス? アドビフラッシュ?カールプログラミング言語?
AJAX はどのように適合しますか?
C++ .NET で記述されたサーバーがあるとします。
logging - 複数のサーバーから複数のログ ファイルを集約する最良の方法
多数の HP-UX サーバーに分散された複数のテキスト ログ ファイルを簡単に監視する方法が必要です。これらは、いくつかの分散型レガシー システムからのテキストおよび XML ログ ファイルの混合です。現在、サーバーに ssh してtail -fとgrepを使用するだけですが、追跡するログが多数ある場合はスケーリングしません。
ログはさまざまな形式であり、フォルダー内のファイル (特定のサイズに達すると自動的にローテーションされる) であるため、リモートで収集し、それぞれを個別に解析する必要があります。
私が最初に考えたのは、ファイルの種類ごとにカスタム ファイル リーダーを使用して各サーバーで実行できる単純なデーモン プロセスを作成し、ソケットを介してネットワーク経由でエクスポートできる共通の形式に解析することでした。ローカルで実行されている別のビューアー プログラムは、これらのソケットに接続し、解析されたログを単純なタブ付き GUI に表示するか、コンソールに集約して表示します。
この方法で実装する場合、どのログ形式に変換する必要がありますか?
他の簡単な方法はありますか?Chainsawで使用するためにログ ファイルを log4j 形式に変換する必要がありますか?それとも、リモート ソケットに接続できるより優れたログ ビューアーがありますか? 別のログの質問で提案されているように、BareTailを使用できますか? これは大規模な分散システムではなく、すべてのアプリケーションの現在のロギング実装を変更して、UDP ブロードキャストを使用したり、メッセージを JMS キューに入れたりすることはできません。
python - 分散パイソン
分散アプリケーションを作成するのに最適な Python フレームワークは何ですか? たとえば、P2P アプリを構築します。