本文转载自【何以解耦】:https://codedecoupled.com/php…
在接触事件溯源之初,其截然不同的设计模式常会让初学者望而生畏。这篇文章概括了几种导致初学者放弃持续学习事件溯源的误会。
查问速度太慢
既然利用的以后状态须要通过事件流来获取的话,事件溯源无奈实现对查问速度要求高的搜寻性能。
当咱们须要实现相似搜寻这种对速度要求比拟高的性能时,事件溯源提供了相应的解决方案 Projector。Projector 通过监听事件,生成独立的视图保留利用的以后状态。咱们能够将其设想成数据库中的物化视图,或者是一种缓存。
聚合性能问题
随着事件数量的线性增长,塑造聚合的工夫也会线性增长至有限长。
聚合需读取事件流来重塑其以后状态,塑造的工夫的确会随事件数量的增长而呈线性增长,为了解决这个问题,事件溯源提供了一种叫做 Snapshot 的解决方案。
Snapshot 的中文意思是快照,顾名思义,Snapshot 的原理是将聚合的最新状态长久化。这样的话,在重塑时聚合便不须要读取所有的事件,这将大大提高其性能。
平缓的学习曲线
与 CRUD 这种存储以后状态的模式相比,事件溯源的学习曲线太平缓了,不值一顾。
学习事件溯源,咱们必须改变传统的 CRUD 思维,学会应用事件驱动的形式解决问题。这种新的编程形式能够解决很多应用 CRUD 比拟辣手的问题。
当然,咱们也须要辩证地对待事件溯源。切不可任何我的项目都应用事件溯源,肯定要剖析业务场景,抉择最现实的解决方案。
总结
放弃很简略,但保持下来,肯定很酷。
本文转载自【何以解耦】:https://codedecoupled.com/php…,如果你也对 TDD,DDD 以及简洁代码感兴趣,欢送关注公众号【何以解耦】,一起摸索软件开发之道。