DZone.com Feed 日本語
フォロー
ローリングデプロイメント中の長時間タスクのための冪等出力キーイング
単一の出力ファイルを生成するのに90秒から180秒かかるスケジュールされたジョブは、実行中に新しいビルドをデプロイする日まで無害に見えます。デプロイメントコントローラーは古いタスクをドレインし、新しいタスクを開始します。2〜3分の間、両方のレプリカがアクティブになり、両方が同じ入力スナップショットを読み取り、両方が同じ論理的な出力を書き込もうとします。冪等な出力キーイングがない場合、それらは2回書き込み、2回目の書き込みは最初の書き込みと一致する義務がありません。そのウィンドウ中に読み取るコンシューマーは、2つの異なる実行から組み立てられた状態を取得する可能性があります。これは理論的なレースではありません。これは、長時間実行されるタスクが出力に共有ストレージを発行し、オーケストレーターがローリングデプロイメントを使用するシステム、つまりほとんどの本番バッチパイプラインで発生します。障害は静かです。何もクラッシュしません。ログには2つのタスク完了が成功したと表示されます。破損は出力にのみ存在し、後で、一貫したスナップショットとして存在しなかったデータに基づいて行われたダウンストリームの決定として表面化します。