- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开始阅读结合 CQRS 的 Event-Sourcing 模式。
据我了解,CQRS 模式是一种我们将写入和读取操作分开的模式。
事件溯源是一种模式,其中系统中的一切都由触发事件的命令启动。事件溯源模式需要一个事件总线。
有几件事我没能理解。
事件存储包含发生在某个实体上的所有事件。如果我想查询这个实体的当前状态,我需要查询这个实体发生的所有事件,并重新创建它的当前状态。
所有事件历史记录都存在于事件存储中。
为什么我不能有一个负责将每个事件保存到事件数据库的微服务(如果我想记录这些事件以进行进一步的操作。比如 Kafka)和一个单独的微服务,它可以定期更新实体上的更改数据库(例如对 MongoDB 中实体文档的简单更新)。当这些微服务完成它们的工作时,这个事件将从事件存储中删除(假设我使用队列实现了这个事件存储)。
这样,每当我需要查询实体的当前状态时,我只需查询数据库,而不是查询事件存储并重建当前状态(或根据事件存储重新计算状态并定期缓存结果) .我不明白为什么必须永久存储所有事件,为什么它不是可选的?
例如,接收事件的 Lambda 函数会生成事件并将它们存储在针对每种事件类型的单独 SQS 中。每个 SQS 都有自己的 lambda 函数,负责处理相应的事件类型。处理完事件后将删除该事件。
最佳答案
Event-sourcing pattern requires an event bus.
If I want to query the current state of this entity, I need to query all the events that happened to this entity, and recreate it's current state.
All the events history is present in the event store. Why can't I have a microservice that is responsible for saving each event to a event-database (If I want to log those events for further actions. something like kafka) and a separate microservice that updates the changes on an entity in a regular database (simple update to entity's document in mongodb for example).
When those microservices finished their work, this event will be removed from the event-store (lets say I implement this event store using a queue).
关于design-patterns - 事件溯源和 CQRS,我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60523277/
我无法在附加行中显示“真”、“假”、"is"和“否”按钮。 我在这里有一个应用程序:Application 请按照以下步骤使用应用程序: 1。当你打开应用程序时,你会看到一个绿色的加号按钮,点击 在此
我是一名优秀的程序员,十分优秀!