0

現在の状況:現在、HTML フォーム データをコレクション サーバーに送信するサイトが多数あります。この収集サーバーは、後でデータを処理サーバーに再送信します。処理サーバーがダウンすることは大したことではありませんが、フォーム データが失われるということは、仕事を失うことを意味します。

目標: HTML フォーム データの収集を停止する単一障害点がないようにしたいと考えています。

考えられる解決策:私の考えでは、3 つのサーバーを用意し、Web サイトからそれぞれのサーバーに html フォーム データを送信しました。リードのコピーが 1 つだけ収集サーバーから処理サーバーに渡されるようにする何らかの方法が必要です。

#Users fill Form Data  It is Captured Redundantly  And processed here
website01    ->        collectionServer01    ->    processingServer
website06              collectionServer02
website24              collectionServer03
website#N

これは分散キューと呼ばれると思いますか??

質問:これが私が説明している分散キューであると仮定すると、それは私の目標を達成するための良い方法ですか? 人々が使用した他の方法はありますか?collectionServers から processingServer にコピーが 1 つだけ送信されるようにするには、どのようにすればよいでしょうか?

4

1 に答える 1

2

あなたの質問を正しく理解していれば、次のようなものがあります

Some Website

Another Website                Intake Server               Processing Server
                                (reliable)                    (unreliable)
Yet Another Website

(顧客?) 見込み客は、さまざまな Web サイトから Intake サーバーに流れ、その後、処理サーバーに転送されます。Intake サーバーがダウンすることを心配しています。

この問題に対する従来の解決策は、ロード バランサーの背後に 2 つ以上の Intake Server を配置し、マスター データベースと少なくとも 1 つのスレーブ データベースを配置することです。

データセンターを失った場合 (日本の津波を覚えていますか?) サービスを失うリスクを回避するには、複数のデータセンターでセットアップを実行し、地理的負荷分散を使用して最も近いデータセンターにトラフィックを送信します。 、他のデータセンターのいずれかに。

その場合、さまざまなデータ センター間ですべてのデータを複製する必要があります (たとえば、冗長性のためにローカル スレーブを使用するマスター/マスター データベース、またはデータ センター A のマスターとデータ センター A のスレーブ、データ センター B のマスター A のスレーブ)。など)。

私はその配置を何度かうまく利用しました。非常に信頼性の高い方法で geo ロード バランシングを管理するサービスがあります (ただし、厳密には安価ではありません)。

Intake Server がダウンすると、ロード バランサーがこの状態を検出し、残りの Intake Server にトラフィックをルーティングします。マスター データベースがダウンした場合は、スレーブ データベースに切り替えてマスターを復旧します。

負荷分散については、一般的な情報を次に示します。ロードバランサーとして NGinXと HAProxy の両方を使用して素晴らしい経験をしました。

すべてのデータをすべてのデータ センターに送信する場合、1 つまたは複数のデータ センターを失う可能性があることを考えると、どのデータ センターが送信したどのリードが処理サーバーにつながるかを調整するタスクは非常に簡単ではありません (送信したリードをどのように知ることができますか)。どのデータセンターがどのリードを送信する必要があるかをどのように決定しますか?)。1 つの「マスター」データ センターと 1 つの「ホット スタンバイ」データ センターがある場合でも、「マスター」がダウンした場合に「ホット スタンバイ」がどこで作業を行う必要があるかを知ることは簡単ではありません。レプリケートされたデータベース ソリューションなどの場合のように、常に状態を同期しないでください。

コメンターの 1 人が (数回)、分散キューを使用してこの問題を解決できると述べました。これも実行可能なルートですが、私が説明したソリューションよりも経験が少ないものです.

于 2012-06-09T01:23:38.210 に答える