事件溯源与持久化层技术解析
1. 事件溯源相关技术
1.1 实时比分系统中的事件溯源
在实时比分系统里,重建Match实例时,会在重放事件的过程中计算当前比分和当前时段。重建后的Match实例有两个主要用途:一是刷新计分页面的用户界面;二是将LiveMatch对象序列化到非规范化的 SQL Server 数据库中,该数据库专为实时比分客户端所需的信息而设计,涵盖球队全称、各时段比分、当前比分、当前时段、统计数据、叠加信息等。
1.2 带聚合快照的事件溯源
这种方法采用不同方式来恢复聚合实例。系统会维护一个事件日志,每个记录的事件都有一个唯一的 ID 指向聚合。聚合的 ID 也用于标识 saga。每当跟踪到与聚合实例相关的事件时,会将其引用添加到内部聚合集合中。这样,每个聚合实例都有自己的事件列表。在某个时刻,聚合及其当前状态会被持久化,下次请求时将从持久化层获取。这种方式无需重放事件来构建有效的聚合实例,只需从额外的持久化层实例化聚合。可以有一级快照,即现成聚合的普通实例。若这些快照无法满足展示需求,还可添加专为读取模型和展示层设计的二级快照。
1.3 迷你企业资源规划(ERP)系统
1.3.1 作业订单管理
该系统基于JobOrder实体,其具有客户 ID、名称、编号、价格、开始日期、截止日期和状态等属性。在项目进行中,作业订单的价格和截止日期可能会发生变化,且可能有多次变更请求。当新作业订单注册时,会记录包含订单所有详细信息的事件;当进行延期操作时,仅记录新的截止日期和价