突然の障害が発生した場合に備えて、Azure ロールでデータを再処理する必要があります。次のオプションを検討します。
処理するデータのブロックごとに、データベース テーブルの行があり、「処理ノードからの最後の ping の時間」を意味する列を追加できます。したがって、ノードが処理のためにデータブロックを取得すると、「処理中」状態とその時間が「現在の時間」に設定され、その時間を1分ごとに更新するのはノードの責任です。次に、定期的に一部のノードが「処理状態と ping 時間が 10 分を超えるすべてのブロック」を要求し、それらのブロックを放棄されたと見なし、何らかの形で再処理のためにキューに入れます。
1 つ、非常に深刻な懸念事項があります。上記のアプローチでは、ノードが多かれ少なかれ同じ時間を持っている必要があります。すべての Azure ノードが妥当な精度 (数秒など) で同じ時間を持っていることに依存できますか?