什么是 cqrs
Command Query Responsibility Segregation,就是把 command 和 query 分离的一种模式.
command 是会引起副作用的操作(新增,更新,删除这类),query 是查询操作.
优点
这样把读写进行了分离,可以进行针对性的选择.
缺点
这样的系统必然只能是最终一致性的,如果系统要求实时性很高,那是不适合的
什么是 event sourcing
event sourcing 就是把所有操作记录相应的事件(类似于数据库的 wal),如果要读取相应的数据,那么就对这些操作记录进行重放
针对读取性能较差的问题,也是跟数据库的处理方式类似,添加 checkpoint
优点
可以很直观的看到数据的变更历史
缺点
读取性能较差
总结
一种实现方式就是 mysql+kafka+es
mysql 记录 command 记录,通过 kafka 同步相应的操作(新增,更新,删除这类)事件,然后 es 提供 query
网友评论