0

データ ストアとしての DB と y (>5) 個の他のマシンがあります。x 分ごとにデータ (更新) を持つマシン A があります。y 台のマシンは x 分ごとにマシン A からデータを取得し、データベース内のデータを更新します。同じことを行うすべてのマシンは、ある程度の耐障害性を備えています。フォールト トレランスを使用した作業をモデル化するクリーンな方法はありますか?

任意のポインタをいただければ幸いです。

4

1 に答える 1

0

これは非常に大きな範囲の問題です。データはどのように構造化されていますか? 「dbローダー」は「データ生成」マシンからどのようにデータを取得しますか? 更新が失敗した場合はどうなりますか? データは失われますか?

いくつかの仮定を立てて、解決策を提案します。 1. データは分割できます。2. 中央永続バッファにアクセスできます。たとえば、MSMQ または WebSphere MQ です。

データを生成するマシンは、チャンクを中央のキューに入れます。各チャンクは、一連のレコード ID と関連するプロパティの新しい値で構成されます)。粒度はユーザーが決定します。「dbローダー」はキューをリッスンし、それぞれがチャンクをデキューし(競合はデキュー段階でのみ発生し、非常に最適化されています)、独自のIDセットを更新します。このように、挿入作業はマシン間で分散され、それぞれが独自の部分を処理し、1 つがクラッシュした場合でも、他のマシンはもう少しハードに動作します。

更新に失敗した場合は、チャンクをキューに戻し、後で再試行できます (トランザクション読み取り)。

于 2012-08-02T11:09:53.893 に答える