如何在消息传递系统中创建检查点?

时间:2013-06-25 05:44:22

标签: messaging distributed-computing rollback

在消息传递/分布式系统中,我们根据同步时钟执行检查点,我们在其中存储进程的状态。

现在我想知道,我们怎么能这样做呢?

说,我的系统处理请求/响应客户端服务器系统。在一个地方,我想制作检查点,所以我可以做回滚,如果发生任何故障。

在这种情况下,我需要存储哪些信息? 我想知道实际考虑因素。我浏览了几篇关于回滚恢复的文章,现在尝试为PoC做一个实现。

任何在系统中尝试过检查点机制的人都能给我一些线索吗?

修改

我正在尝试为非确定性事件做回滚(例如:接收对Web服务的请求) 我脑子里有两种方法,一种是基于检查点,另一种是基于日志。 我选择Apache Axis2平台作为我的webservice平台。它已经具有日志记录功能。因此,在这种情况下,日志记录会更容易。

因此,当我们基于检查点/基于日志时,我们是否需要存储整个数据?

  • 两种情况下存储数据有什么不同吗?

  • 在这种类型的恢复中,我们需要回滚客户端和服务器,客户端可以根据我们存储的信息进行回滚。在这种情况下我们如何回滚服务器? 这有必要吗?或者我理解协议不正确

1 个答案:

答案 0 :(得分:1)

您需要保存的数据在很大程度上取决于您的系统,所以如果不了解更多信息,我们将无法告诉您具体存储的内容。

但是,通常,您需要存储对您的应用程序至关重要的任何数据。对于某些应用程序,您可以存储整个内存内容并在此时重新加载。这有点沉重,但可能是必要的。一般来说,这是非常昂贵的,通常不是必需的。通常,您可以存储任何内部状态数据(可能是您连接的客户端或这些连接的状态)以及在故障后重新启动应用程序时,您可以重新加载所有数据并重新连接到你的客户。

在另一个实现中,您可能不关心与客户端的连接,您只需要保存一些小的内部状态,让客户端自己重新连接并重新启动它们在建立连接时所做的事情。这一切都取决于你愿意丢失多少执行,以及通过创建这些检查点你想要引入多少开销。