多线程环境中的系统恢复

时间:2014-03-14 21:26:30

标签: java multithreading recovery

如何在多线程环境中添加系统恢复?例如:如果你有一个系统,其中多个线程拾取文件并处理它们并将它们保存在数据库中,如果数据库出现故障,系统将如何恢复 不想再次处理交易?

1 个答案:

答案 0 :(得分:2)

根据您的系统设置,有许多不同的方法可以回答这个问题。多一点解释会有所帮助。我仍然提供了一个可能对你有用的例子。

我可能会想一种将文件标记为正在处理的方法(即数据库记录或移动到另一个目录来处理文件)。然后我会在处理文件时将其标记为已完成(移动它或以其他方式执行)。

完成处理并将文件标记为已完成后,仍有可能出现故障。但是,这会限制您需要查看以进行恢复的文件数量。

如果您可以跟踪在同一数据库中读取的文件,则可以批量处理所有数据库更改以及标记以将文件标记为已读。在完成更改并标记文件之前,您可以避免提交连接。

这也存在一个问题,即数据库是否在中间提交时崩溃,但同时您可能必须在此实例中恢复备份并重新运行所有文件。