これは非常に一般的なシナリオです。一部のプロセスが 30 分ごとにサーバーにファイルをドロップしたいとします。シンプルですね。まあ、これがうまくいかない方法はたくさん考えられます。
たとえば、ファイルの処理には 30 分前後かかる場合があるため、前のファイルの処理が完了する前に新しいファイルが到着する可能性があります。まだ処理中のファイルをソース システムで上書きしたくありません。
一方で、ファイルが大きいため、アップロードが完了するまでに数分かかります。部分ファイルの処理を開始したくありません。ファイルは FTP または sftp (私の好み) で転送されるだけなので、OS レベルのロックはオプションではありません。
最後に、ファイルの 1 つを (デバッグのために) 手動で検査したり、再処理したりする必要がある場合に備えて、ファイルをしばらく保持する必要があります。
私は、アップロード ファイルをシャッフルしたり、ファイル名を交換したり、日付スタンプを使用したり、「インジケーター」ファイルに触れて同期を支援したりするためのアドホックなアプローチを数多く見てきました。私がまだ見ていないのは、並行性、一貫性、および完全性に対処する、ファイルを処理するための包括的な「アルゴリズム」です。
そこで、ここで群衆の知恵を活用したいと思います。バッチ データ ファイルをジャグリングする本当に防弾の方法を見た人はいますか?