3.映射根据事件存储中存储的事件转换和更新读模型的过程 。

文章插图
事件溯源与CQRS
在此设置中 , 事件被填充以记录由业务流程引起的聚合的每个状态,并存储在事件存储中 。随后,投影从事件存储中检索这些事件 , 并开始将它们转换为各种读表 。这些表可以以不同的视图呈现,为业务用户提供不同的可视化效果 。需要强调的是 , 尽管拉取事件是一种选择,但投影还可以通过使用消息代理利用发布/订阅模式 , 订阅新事件 。
这种设置通过捕获事件的时间顺序序列增强了系统的韧性,为全面的审计跟踪提供了全面的记录 。因此 , 该方法允许进行有效的时间查询,使应用程序在任何给定时间点都可以重建状态 。此外,它通过将数据模型变更与历史事件日志分开,为业务需求的变化提供了灵活性 。
结合CQRS,该机制促进了命令和查询职责之间的松耦合,提供了韧性和灵活性 。
将事件驱动架构和事件溯源结合如上所述,EDA和ES都为可扩展性和协作提供了非常强大的方式 。EDA强调通过事件松耦合通信的组件,而ES捕获并持久化状态变更的历史记录 。因此,如果我们使用ES生成的事件并将其用于EDA , 那将是一个自然的组合 。
生成的事件不仅可以包含变更的状态,还可以包含变更的详细信息 。然后,这些事件可以通过消息代理传输到另一个服务/组件,并在EDA中被消费 。

文章插图
事件溯源和事件驱动设计的结合
上图显示了如何以一种非常直接的方式将ES和EDA结合起来 。来自事件存储的事件可以通过消息代理发布和被不同的服务和组件消费 。
结合EDA和ES的优势将事件驱动架构(EDA)与事件溯源(ES)结合带来了显著的优势 。其中一个主要优势是系统的响应能力提升 。这种设置允许系统快速适应实时变化,在动态环境中效率极高 。
另一个关键优势是对状态变更的全面历史记录 , 有助于详细的历史分析,并确保符合规范的强大审计跟踪 。此外,其不可变和可重播的特性使得实时分析、可扩展性和适应不断变化的分析需求变得更加容易 。事件还可以流式传输到数据分析流水线或复制到数据湖进行进一步处理 。
此外,这种组合固有的灵活性和可扩展性也值得注意 。系统可以轻松演变以满足不断增长的业务需求,确保长期的可持续性和适应性 。
最后,系统的韧性也是一个值得关注的优点 。这种设置提供了强大的机制来恢复中断,确保即使在具有挑战性的情况下也能保持连续性和可靠性 。
应对挑战将事件溯源(Event Sourcing)和事件驱动架构(EDA)相结合引入了一系列挑战,包括协调分布式系统、确保可扩展和高性能的事件存储,以及管理模式演进 。
- 首先,在分布式环境中协调多个微服务的交互引入了一些复杂性,维护正确的事件顺序和系统一致性变得复杂 。需要精心设计事件流和协调机制,以防止出现事件重复或跨服务的乱序处理等问题 。
- 其次 , 事件存储的可扩展性和性能是关键挑战 。事件溯源依赖于不可变事件,而事件驱动架构依赖于服务之间高效的事件通信 。确保事件存储基础设施的耐久性和可靠性变得至关重要,特别是在事件在网络中产生和消费的分布式环境中,这对于维持系统的响应能力尤为重要 。
- 第三,解决模式演进和版本控制至关重要 。随着系统的演变,与事件相关的数据模式可能会发生变化 。在保持历史事件完整性的同时平衡向后和向前兼容性是一项挑战 。实施有效的版本控制策略对于避免事件消费者可能根据不同模式版本处理事件的问题至关重要 。要克服这些挑战,需要深思熟虑的设计和技术选择,创建基于事件溯源和事件驱动架构的弹性和可扩展的架构 。
- 最后 , 但同样重要的是,操作这种架构并不容易 。监控和管理结合了EDA和ES的系统需要新的运营实践 。确保在生产环境中系统的可用性、可靠性和性能可能具有挑战性 。操作消息代理也需要特定的专业知识 。我们需要了解所使用的消息代理的优缺点和最佳实践 。
推荐阅读
- win10系统怎么给c盘增加空间
- 华为手机怎么卸载垃圾程序,华为手机用什么软件清理垃圾
- 作为一名黑客/安全专家,应该掌握什么技能?熟悉哪些软件/工具?
- 从MySQL看主从架构高可用性实现
- 聊聊分布式数据库TDSQL的技术架构
- 利用Apache Kafka、Flink和Druid构建实时数据架构
- 如何查看手机运行内存大小,如何查看手机软件占用的内存
- 什么软件可以剪表情包,哪个软件可以制作动态的表情包
- Ai应该咋得才可以取消轮廓,在AI软件里怎么轮廓变预览
- CAD怎么移动图到任意位置,电脑中如何移动软件储存位置
