这是一个非常常见的情景:一些进程想每隔30分钟在服务器上放置一个文件。 很简单,对吧? 嗯,我可以想到很多这可能会出错的方式。
例如,处理一个文件可能需要超过或少于30分钟,因此在我完成前一个文件之前,新文件可能会到达。我不希望源系统覆盖我仍在处理的文件。
另一方面,这些文件很大,因此需要几分钟才能完成上传。我不想开始处理部分文件。这些文件只是通过FTP或sftp(我个人偏好)传输,因此不能使用操作系统级别的锁定。
最后,我确实需要保存这些文件一段时间,以防需要手动检查其中的文件(用于调试)或重新处理其中的一个文件。
我看到了许多临时方法来处理上传文件的洗牌,交换文件名,使用日期戳,触摸“指示器”文件以帮助同步等等。但我还没有看到一个全面的“算法”来处理文件,解决并发、一致性和完整性问题。
所以,我想要借助众人的智慧。有人看到过一种真正强大的方法来处理批量数据文件,使其永远不会被提前处理,在处理完成前永远不会被覆盖,并且在处理完成后得到安全保存吗?