事件消费者之 Projector - 事件溯源
本文转载自【何以解耦】:codedecoupled.com/php-es-projector...
在事件溯源架构中,通过事件流获取应用的当前状态可能造成性能问题,Projector(放映机)通过监听事件,生成独立的视图保存应用的当前状态。我们可以将其想象成数据库中的物化视图,或者是一种缓存。
以下是从我们的实战经验中总结出的几种 Projector 用例。
实战用例
查询模型
用户对页面的反应速度要求较高,我们可以使用 Projector 生成服务于用户的查询模型。
值得一提的是 Projector 可使用与事件流不同的数据持久化方式,比如事件流原本储存在 MySQL, Projector 可使用 ElastiSearch 持久化查询模型:
让我们看一个简单的案例,使用 Projector 生成订单查询模型:
支持业务实现
当其他客户需要及时获取应用的当前状态,但是无法通过简单的事件传送时,我们可以使用 Projector 生成类似于缓冲的 Repository。 此 Repository 将为实现业务逻辑提供及时的应用状态。
让我们看一个简单的案例,使用 Projector 生成车辆可预定 Repository:
值得注意的是,这种用例倾向于同步处理方案,因为其时效性一般比较大。
总结
Projector 是一个简单且强大的模式,Projector 的职责单一且专注,易于编写单元测试。
本文转载自【何以解耦】:codedecoupled.com/php-es-projector... ,如果你也对 TDD,DDD 以及简洁代码感兴趣,欢迎关注公众号【何以解耦】,一起探索软件开发之道。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: