Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
分布式架构
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
ChatGPT
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
GitHub工具
更多话题
请教一下,cqrs架构下的页面访问统计如何实现
12-09-23
zdp120
在CMS系统中如果采用
CQRS
架构的话,比如一个Article的浏览量该如何设计呢。如果每浏览一次就产生一个ArticleView事件的话,那访问量大的页面产生的事件也太多了吧,随之产生的Event Source,以及快照,也会很多。请提供个思路啊,谢谢
banq
2012-09-23 19:48
产生事件多很正常,关键是没有必要event store, 只有关键业务需要event source,比如订单处理,信用支付等等。
只有那些改变了聚合根实体内部状态的事件才要求保存,以便查询系统能够根据这些事件重演知道当前聚合根最新状态。
[该贴被banq于2012-09-23 20:16修改过]
zdp120
2012-09-23 20:56
bang 请教一下,难道article被浏览的次数不是业务逻辑吗,应该也是实体状态的一种改变吧,那如果要知道当前article被浏览的次数应该怎么办呢
banq
2012-09-24 08:49
2012-09-23 20:56 "@
zdp120
"的内容
难道article被浏览的次数不是业务逻辑吗,应该也是实体状态的一种改变吧 ...
如果在CMS中被认为是逻辑,你可以整合入聚合根,但是鉴于其变化太快,可以单独一个对象,这样更新时不会影响其他对象更新。
这就考虑到
CQRS
查询系统对浏览次数的更新及时性,如果每次浏览都需要更新CQRS的查询系统,那确实冲击很大,可以采取定时发送事件,用户是可以容忍浏览次数有一定的不一致性,最终一致性。
总之,需要在频繁更新和几个系统之间更新及时性上做一个平衡。参考:
CAP原理和BASE思想
wee
2012-09-24 10:12
个人觉得不一定要写进实体中,如果游览对实体没有产生状态的改变,事件可以不是domain event,是否可以生成一个application event,然后由projection监听这个事件去更新显示的数据。
事件溯源EventSourcing
CQRS命令查询分离架构