等到以后才不是让事情变得可靠的策略。事实上,你必须走完全相反的方向。一旦你知道应该持久化的东西,你就需要采取行动来持久化它。事实上,如果您想让它变得可靠,您需要首先将从尝试提交更改时可能发生的故障中恢复所需的步骤写入磁盘。伪蟒:
class A:
def __init__(self, filename, sources):
self.recover()
# gather info from file
# info is updated during lifetime of the object
def update_info(self, info):
# append 'info' to recovery_log
# recovery_log.flush()
# write 'info' to file
# file.flush()
# append 'info-SUCCESS' to recover_log
# recovery_log.flush()
def recover(self):
# open recovery_log
# skip to last 'info-SUCCESS'
# read 'info' from recover_log
# write 'info' to file
# file.flush()
# append 'info-SUCCESS' to recover_log
# recovery_log.flush()
重要的是recover()
每次都会发生这种情况,并且每个步骤后面都有 aflush()
以确保数据在下一步发生之前将其输出到磁盘。另一个重要的事情是,恢复日志本身只会发生附加。不会以任何方式覆盖日志中的数据,以免损坏日志中的数据。