問題タブ [distributed-system]
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.
architecture - ドメインは別のシステムのアプリケーション サービスにアクセスする必要がありますか?
具体的には、2 つのシステム間で: システム A のドメインは、システム B のアプリケーション サービス/リモート ファサードを呼び出すことができますか?
たとえば、注文システムのドメインに Order エンティティがある場合、その Order エンティティの検証メソッドは Stock Keeping Service のアプリケーション サービスを呼び出して、注文を満たすのに十分な製品の在庫があることを確認する必要がありますか?
私の本能は、これは正しいやり方ではないということです。
これは以前のやや複雑な質問の簡略化されたバージョンです: さまざまなドメイン駆動設計システム間の統合 この以前の質問を参照する必要はありません。
database - SQLデータベースのレプリケーションによるフォールトトレランス
中間層サーバーが3方向に複製され、バックエンドデータベース(MySQL、PostgreSQLなど)が3方向に複製されるとします。ユーザーリクエストにより、中間層サーバーにいくつかのユーザーデータが作成されることになります。これを、障害に強い方法でバックエンドデータベースにコミットしたいと思います。
たとえば、1つのSQLデータベースにデータを送信し、他のデータベースにデータを複製する場合、1つのSQLデータベースでデータを複製する前にハードドライブがクラッシュすると、データが失われます。
実際の現実の世界で使用されているフォールトトレランスのベストプラクティスソリューションは何ですか。
c# - 分散システム トポロジ
大学のプロジェクトとして電子投票システムを実装しようとしていて、私の目的に向けた最も重要なステップに直面しました<システムアーキテクチャ>
Multi-Server/Multi-Client , MUST really be reliable to the point of about 80 million clients are online , It also MUST permit new server joining to support the voting process , Its output will be statistics & reports so that it MUST allow me gathering information at any time , Supporting encryption , hashing , digest acks , .. etc
My aim is just to support lots of clients without central point of failure then make client fount the suitable server(s) to authenticate & vote
Suitable server(s) depends on 2 criteria :
- Server distance priority
- Server load priority
First criteria used Initially only , Both are used during voting process
After searching samples around my project found 6 solutions :
- Dynamic DNS server in between servers & clients
- Web Farm Load Balancing Dispatcher in between clients & servers
- サーバーのサーバーレス p2p クラウド、クライアントは PNRP を使用して p2p のサーバーとして参加し、サーバーのリストを取得します
- Serverless/State-Server p2p サーバーのクラウド、クライアントは状態サーバーに接続してサーバーのリストを取得します
- サーバーツリーはメインサーバーから下へ
- DHT ネットワーク & データベース システム
私の観点からは、ボトルネック障害点がないため、最後のソリューションが適切でした。これにより、すぐに使用できる DHT ライブラリまたは完全な分散システムを検索して、アプリケーションに統合するか、車輪を再発明して実装することができます。すべてをゼロから!!
質問:
- 適切なソリューションを選択しましたか?
はいの場合、すぐに使用できる [.NET] ライブラリまたはシステムにつながる正しいルートを教えてください。
いいえの場合は、6 つのソリューションで言及していませんが、適切な [.NET] ソリューションを教えてください。
よろしく ,
database - HBaseは行レベルのアトミック性をどのように保証しますか?
HBaseが各列ファミリーを別々のHFileに格納するという事実と、行が多くの列ファミリーにまたがることができるという事実を考慮してください。HBaseは、複数の列ファミリーにまたがる行のput / delete操作が実際にアトミックであることをどのように保証しますか?
sorting - 分散システムでの挿入ソート
挿入ソートは、分散システムで配列の複数のコピーをどのように処理しますか?データを書くよりも読む方が簡単なのでお願いします。更新回数の観点から、分散システムのアルゴリズムのコストはどのくらいになりますか?
cassandra - Cassandraデータベースを使用してWebサービスノードに一意の番号を割り当てる
私の目標を最もよく説明するために、問題を要件の基本に単純化します。わかりやすくするために詳細が必要な場合はお知らせください。
割り当て可能な10個の一意の番号(0〜9)があるとします。どの番号が予約されているか、または無料であるかは、データベースに含まれています。実行中のフロントエンドWebサービスの目標は、割り当てのために番号を正常に要求することです。番号が特定のノードに割り当てられると、その番号は予約され、他のノードに割り当てることはできません。
これは、単一障害点のない分散システムであることに注意してください。
私に問題を与えている警告は、カサンドラの結果整合性の概念です。レイテンシーが高くなる代わりに、Cassandraを完全に一貫性のあるものに調整できることに注意してください。それが私の最善の(そしておそらく唯一の)オプションである場合、私はそれを行うことができますが、一貫性の調整の概念を維持したいと思います。
戦略についての私の考えは、ノードで次のことを行うことです。
1)Cassandraにクエリを実行して、空き番号のリストを取得します。
2)フリーナンバーの1つをランダムに選択します。
3)このノードがその番号を予約したことを示すPuttoCassandraを実行します。
4)Cassandraに継続的にクエリを実行して、どのノードが番号を正常に予約したかを確認します。(読み取りが割り当てをすぐに反映しない場合があるため、継続的に要求してください。)
5)返されたノード名が、このノードの予約が提出された名前である場合、予約は成功しました。
6)返されたノード名が別のノード名である場合は、別のノードがこの番号とほぼ同時に番号を要求し、割り当てが与えられたことを意味します。このノードはステップ1に戻って、再試行する必要があります。
上記の戦略を使用すると、特定の状況でエラー(二重割り当てなど)が発生するという奇妙な感覚があります。
他の誰かが私の提案された戦略についてコメントし、おそらく彼ら自身を提供することができますか?ありがとう。
distributed-system - ビデオ ストリームを保存するための分散型データ ストレージ インフラストラクチャ
マルチサイト クラスター ベースの分散データ ストレージ ミドルウェアのオプションを検討しています。Lustre、HDFS、そしておそらく OpenStack Swift などのソフトウェアが興味深いかもしれません。ただし、私が直面する主な問題は、データ ストレージ インフラストラクチャが Windows ベースのアプリケーション用であることです。
Windows ベースのアプリケーションは、ボリューム (データベース サーバーなど) に書き込みます。したがって、データ ストレージ サブシステムは、(Amazon EBS の方針に沿って) iSCSI ターゲットを作成できる必要があります。EMC や HP などの商用ベンダーには、独自のソリューションがあります。
分散インフラストラクチャ (またはオープン ソースの Amazon EBS クローン) の上にブロック ストレージを作成できるオープン ソース ソリューション (リベラル ライセンスを使用) を知っている人はいますか?
synchronization - 分散論理時計、ランポートアルゴリズムについて
こんにちは、分散システムの論理時計についてお聞きしたいと思います。ランポート アルゴリズムは、プロセス Pi でイベント a がメッセージを送信し、プロセス Pj でイベント b がそのメッセージを受信した場合、イベント a が b の前に発生したと定義できると定義します。プロセス Pj がイベント b でメッセージを受信する前に、イベント c が Pj で発生し (したがって c は b の前に発生)、プロセス Pi にメッセージを送信し、プロセス Pi がイベント a の後のイベント d でメッセージを受信したとします。 、および a は、d の前に発生しました。
私の質問は、イベント a (プロセス Pi で発生した最初のイベント) とイベント c (プロセス Pj で発生した最初のイベント) の関係を定義する方法です。プロセス Pi と Pj の両方がイベント a と c の順序で一致するようにするにはどうすればよいですか?
ランポート アルゴリズム: http://en.wikipedia.org/wiki/Lamport_timestamps
database - データベースの地理的冗長性: オプションは何ですか?
私たちのプロジェクトでは地理的冗長性を提供する必要があります。これには大規模な DB (特定の顧客の要件に応じて 2 ~ 20 TB) があります。ネットワークから継続的にデータが流入しています (例: 1 時間あたり 1 ~ 20 GB)。
現在、RHEL (Linux) クラスター上に J2EE AppServer を備えた Oracle (RAC なし) と、ストレージ用の SAN ディスク、要するに 1 つの DB、複数の AppServs があります。
必要なのは地理的冗長性です。要件は次のように要約できます。問題がなければ、製品の 2 つの個別のインストールが 2 つの異なるネットワークにサービスを提供します (それぞれが 1 つのネットワークにサービスを提供します)。それらの 1 つがダウンした場合、他の 1 つが両方にサービスを提供する必要があります。
その他の注意事項:
- 倉庫管理は基本的なニーズの 1 つであるため、SQL をサポートするリレーショナル DB が必要です。
- http://aws.amazon.com/vpc/のようなホスト型/クラウド サービスは使用しないことをお勧めします (ホスト型/クラウド サービスがそれらを提供している場合でも) お客様はセキュリティ/プライバシーに非常にうるさい可能性があるためです。
アプリケーション ロジックを割り引いて、データをレプリケートするためのオプションは何ですか? STFW の結果は次のとおりです (私は DBA の専門家ではないため、解釈が間違っている可能性があります)。
- 驚いたことに、地理的冗長性のための Oracle の製品を見つけることができませんでした。Oracle RAC はローカル クラスタ向けです (冗長性よりも水平方向のスケーラビリティ向け)。
- 分散されている場合、 MySQLはアクティブ/スタンバイのみをサポートしているようです。アクティブアクティブが必要です。
- Guidentは、一部の Oracle 製品に基づいたサービスを提供しているようですが、製品は提供していません。
ありがとう -- カシャップ