2016-09-16 5 views
0

キュー(pub-sub)分散システムに置かれたジョブがあって、それらの間に依存関係がある場合に問題に近づく方法。依存関係を持つキュー(pub-sub)分散システムのジョブ?

キューの現在の状態:

j3 -> j2 -> j1 
rear  front 

j3は、j1の完了によって異なります。

キュープロセッサはこれらのジョブを消費しており、分散環境で処理を開始しました。

いくつかの依存性解決メカニズムに基づいて、j1j3の間の依存関係が見つかりました。

は今、何を私は知らないが、状況に対処するための最良の方法です:

  • 私はキューにj3バックを入れて、再びj1よう 後の段階でそれを拾う必要がありますその時までに完了したでしょうか?
  • 私は、 j3の依存関係がすべて満たされてから、j3が処理されるかどうかを確認するために、他のメカニズムデータベースを用意する必要がありますか?

助けていただければ幸いです。

ありがとうございます!

答えて

0

これらのジョブがキューの前にあり、いくつかの依存関係を待っていることを認識しているジョブスケジューラを持つことが最善の方法です。こうすることで、依存関係が終了するのを待っている間に他のジョブを完了させることができますが、可能な限り順番に処理します。

キューの長さが比較的短く、依存関係がほとんどない場合は、アイテムをキューの先頭に戻しておくとよいでしょう。あなたが背中に押し込むアイテムが他のタスクの依存性でもある場合は、それらが正面に到着したとき(または一度に、しかし不必要に難しい場合)にもキューの後ろにプッシュする必要があります。キューの長さが長い場合、予期しない遅延が発生する可能性があります。たとえば、待ち行列が1日である場合、タスクが終了するのを待つ日がくる可能性があります。そのタスクが依存関係のチェーンの一部である場合、問題は拡大します。

いずれにしても、タスクがキューに入れられているか/実行中であるかを知る必要があります。この情報をお気に入りのデータベースに保存したり、ゴシッププロトコルなどを使用したりできます。同じジョブが2回実行された場合に正しい問題ではない場合は、APシステムを使用することができます(CAPの意味では、ゴシッププロトコルなどの最終的な一貫性があります)。同じタスクを2回実行しているとひどく混乱する場合は、お気に入りのSQLデータベースやcouchbaseなど、真実の単一のソースのような、合意の仕組みが必要です。

+0

CAP定理を指摘してくれてありがとう! – AKK

+0

@AKK CAP定理で許されるものよりも多くの整合性モデルがあります:) –

+0

整合性モデルの詳細については、いくつかの良いリソースを教えてください。ありがとう! – AKK

関連する問題