我希望我的 Azure 角色在发生突然故障时重新处理数据。我考虑以下选项。
对于要处理的每个数据块,我都有一个数据库表行,我可以添加一个表示“来自处理节点的最后一次 ping 的时间”的列。因此,当一个节点抓取一个数据块进行处理时,它会将“处理”状态和那个时间设置为“当前时间”,然后节点负责更新那个时间,比如每分钟更新一次。然后定期某个节点会询问“所有处理状态和 ping 时间大于 10 分钟的块”,并认为这些块已被废弃,并以某种方式将它们排队等待重新处理。
我有一个非常严重的担忧。上述方法要求节点具有或多或少相同的时间。我可以依靠所有 Azure 节点以某种合理的精度(比如几秒钟)具有相同的时间吗?