本文转载自【如何解耦】:https://codedecoupled.com/php...刚开始接触事件追踪,其截然不同的设计模式往往让初学者望而生畏。这篇文章概述了导致初学者放弃学习事件溯源的几个误解。查询速度太慢由于需要通过事件流获取应用的当前状态,事件追踪无法实现对查询速度要求高的搜索功能。当我们需要实现搜索等对速度要求较高的功能时,EventSourcing提供了相应的解决方案,Projector。Projector通过监听事件生成一个独立的视图来保存应用程序的当前状态。我们可以把它看成是数据库中的物化视图,或者说是一种缓存。聚合性能问题随着事件数量线性增长,形成聚合的时间线性增长到无穷大。聚合需要读取事件流以重塑其当前状态。整形时间确实随着事件的数量线性增长。为了解决这个问题,事件溯源提供了一种解决方案,叫做Snapshot。Snapshot的中文意思是快照。顾名思义,Snapshot的原理就是持久化聚合的最新状态。这样,聚合在重塑时不需要读取所有事件,从而大大提高了它的性能。陡峭的学习曲线与存储当前状态的CRUD相比,事件溯源的学习曲线过于陡峭,不值得考虑。学习事件溯源,必须改变传统的CRUD思维,学会使用事件驱动的方法来解决问题。这种新的编程方式可以使用CRUD解决许多难题。当然,我们也需要辩证地看待事件溯源。任何项目都不能使用事件溯源,必须分析业务场景,选择最理想的方案。总结放弃很容易,但坚持一定很爽。本文转载自【WhyDecoupled】:https://codedecoupled.com/php...,如果你也对TDD、DDD和简洁代码感兴趣,请关注公众号【WhyDecoupled】,一起探讨一起软件开发的方式。
