头图

事件消费者之 Projector - 事件溯源

XuDing

本文转载自【何以解耦】:https://codedecoupled.com/php...

introduction to DDD

在事件溯源架构中,通过事件流获取应用的当前状态可能造成性能问题,Projector(放映机)通过监听事件,生成独立的视图保存应用的当前状态。我们可以将其想象成数据库中的物化视图,或者是一种缓存。

img

以下是从我们的实战经验中总结出的几种 Projector 用例。

实战用例

查询模型

用户对页面的反应速度要求较高,我们可以使用 Projector 生成服务于用户的查询模型。

值得一提的是 Projector 可使用与事件流不同的数据持久化方式,比如事件流原本储存在 MySQL, Projector 可使用 ElastiSearch 持久化查询模型:

让我们看一个简单的案例,使用 Projector 生成订单查询模型:

img

支持业务实现

当其他客户需要及时获取应用的当前状态,但是无法通过简单的事件传送时,我们可以使用 Projector 生成类似于缓冲的 Repository。 此 Repository 将为实现业务逻辑提供及时的应用状态。

让我们看一个简单的案例,使用 Projector 生成车辆可预定 Repository:

img

值得注意的是,这种用例倾向于同步处理方案,因为其时效性一般比较大。

总结

Projector 是一个简单且强大的模式,Projector 的职责单一且专注,易于编写单元测试。

本文转载自【何以解耦】:https://codedecoupled.com/php...,如果你也对 TDD,DDD以及简洁代码感兴趣,欢迎关注公众号【何以解耦】,一起探索软件开发之道。

阅读 236

全职编程,兼职跑步,临时健身。

7 声望
0 粉丝
0 条评论

全职编程,兼职跑步,临时健身。

7 声望
0 粉丝
文章目录
宣传栏