漯河最新今天的消息,网站建设阿华seo,网站增加网页,转换短链接平台简介
CQRS中文意思为命令于查询职责分离#xff0c;我们可以将其了解成读写分离的思想。分为两个部分 业务侧和数据侧#xff0c;业务侧主要执行的就是数据的写操作#xff0c;而数据侧主要执行的就是数据的读操作。当然两侧的数据库可以是不同的。目前最为常用的CQRS思想方…简介
CQRS中文意思为命令于查询职责分离我们可以将其了解成读写分离的思想。分为两个部分 业务侧和数据侧业务侧主要执行的就是数据的写操作而数据侧主要执行的就是数据的读操作。当然两侧的数据库可以是不同的。目前最为常用的CQRS思想方式为事件驱动。CQRS模型也是未来微服务形态的一个趋势。
模型解析 执行流程为下
业务侧
1.客户端发送Command指令。
2.服务找到处理Command对应的处理器。
3. 将事件加入到事件总线中
4.将对应的事件数据持久化到数据库。
数据侧
1.从事件总线中获取对应更改的事件。
2.和读数据库中的数据实体进行比较然后更新数据库信息。
解决方案
目前比较成熟的方案为kafka flink axon 来实现CQRS。
方案流程
业务侧 在前端调用接口后业务侧完成对应的业务操作发送事件消息到kafka中并将事件消息通过axon持久化到数据库中为此业务侧的任务就完成了。(事件消息就是写操作)
数据侧
1.flink监听kafka中的事件消息在监听到对应的事件消息后会到数据库中查询对应的事件数据。
2.执行数据清洗
将事件中的数据填到主题模型中也就是将脏数据转换为对应指定的数据。将主题模型的数据转换为持久化模型。将持久化模型sink到数据库中。
为什么要使用axon将事件数据进行持久化
在kafka中的消息的数据是不能进行修改的如果此时业务侧因为网络问题导致事件数据有误在数据侧就会获取错误的数据这明显是不合适的。所以在数据侧我们获取事件数据的最终来源为数据库kafka中的事件消息最为驱动。kafka主要的作用就是解耦合
在flink中为什么要将主题模型转换为持久化模型
因为持久化的数据库可能有多个对应的数据库字段类型有所不同所以需要在做一个持久化模型。
*相比于MVCCQRS框架的优势在哪里
1. 通过将读取和写入操作分开可以针对每种类型的操作优化数据存储。
2.由于读取和写入操作是分离的因此可以根据需要灵活地改变任一端的数据模型或实现而不会直接影响到另一端。
3.事件溯源系统的状态不是直接存储的而是通过一系列不可变的事件来重建。这为审计、回滚和调试提供了强大的工具。