你有一系列问题:保存状态(包括当前执行点)
检测到关机/重启
关机后重新启动。在
我建议您最好忽略中间的问题,并确保应用程序保持最少的内部状态,即将所有数据存储在外部数据库中等
编辑:确保可以将状态保存在小的原子块中。我编写的一个应用程序使用基于事务的关系数据库,并将状态保存在一组由三个表组成的集合中——我还有一个可以事后检测错误的系统。数据库的优点是在发生故障时它有自己的恢复机制。在
如果您考虑需要重新启动什么,那么您可以确保当应用程序重新启动时,它的状态几乎完全相同。你唯一不能做的事情就是在完全相同的代码行重新开始执行,但实际上这可能不是问题所在,问题是保持功能的连续性(即除了时间戳之外,你无法检测到中断)。在
编辑:例如,我的应用程序每次启动时都会读取数据库,查找未标记为完整的记录,这样它就可以在几乎任何时候恢复功能。在
重新启动非常简单,编写代码以便它可以作为服务运行。在
编辑:
最糟糕的情况实际上不是重新启动/重新启动——在这些情况下,所有正在运行的进程都被要求很好地关闭——你可以捕捉到这个信号并至少做些什么(只要它很快)。最坏的情况是断电/崩溃(例如,由于过热),那么您不会收到任何警告,并且完全关闭的可能性为零。在设计应用程序时,您需要考虑可能发生的最糟糕的事情是什么。在