上下文
我们有一个分配系统。我们从其中一个系统发出事件,这些系统从另一个系统读取以生成报告。
逻辑顺序由以下事实确保:即使发射器系统具有N个节点,也存在下划线的有限状态机,这使得不可能同时发射一个聚合的事件。 这些事件标有时间戳。 N个节点不能总是在时间上同步。
我们非常关心时间戳,因为生成报告的下游系统总是需要时间戳,因为"报告人员"关心这种数据以检查事情是否正确。
问题
事实上2个节点可能会有一点差异,这让我们思考。让我们想象下一个例子。
事件的逻辑顺序是:
事件1 =>事件2 =>活动3
但是在数据库中我们可能会遇到这种情况:
-------------------------------------------
| Name | TimeStamp | Logical Order |
-------------------------------------------
| Event 1 | 2 | 1 |
| Event 2 | 1 | 2 |
| Event 3 | 3 | 3 |
-------------------------------------------
您是否可以看到事件2 在事件1 之后逻辑上发生但是他们的时间戳无法同步。
好的,这不会每2秒发生一次,但可能会发生,因为时间戳来自不同的节点。从报告的角度来看,这是一个异常现象。
可能的解决方案
你有关于这个主题的经验吗?
答案 0 :(得分:2)
如果您可以确保因果关系并且具有部分订单,那么在使用修改后的时间戳呈现“有用的业务表示”时我不会发现很多问题。我认为底层分布式架构已经脱离了业务领域的背景。
他们可能从整体上理解这个系统,强迫他们的心理模型转变可能会引起一些摩擦。
另一方面,我不会对日志中的时间戳进行标准化,您可以使用它来跟踪子系统之间的时钟漂移。
答案 1 :(得分:1)