请教一下,cqrs架构下的页面访问统计如何实现

在CMS系统中如果采用CQRS架构的话,比如一个Article的浏览量该如何设计呢。如果每浏览一次就产生一个ArticleView事件的话,那访问量大的页面产生的事件也太多了吧,随之产生的Event Source,以及快照,也会很多。请提供个思路啊,谢谢

产生事件多很正常,关键是没有必要event store, 只有关键业务需要event source,比如订单处理,信用支付等等。

只有那些改变了聚合根实体内部状态的事件才要求保存,以便查询系统能够根据这些事件重演知道当前聚合根最新状态。
[该贴被banq于2012-09-23 20:16修改过]

bang 请教一下,难道article被浏览的次数不是业务逻辑吗,应该也是实体状态的一种改变吧,那如果要知道当前article被浏览的次数应该怎么办呢

2012-09-23 20:56 "@zdp120"的内容
难道article被浏览的次数不是业务逻辑吗,应该也是实体状态的一种改变吧 ...

如果在CMS中被认为是逻辑,你可以整合入聚合根,但是鉴于其变化太快,可以单独一个对象,这样更新时不会影响其他对象更新。

这就考虑到CQRS查询系统对浏览次数的更新及时性,如果每次浏览都需要更新CQRS的查询系统,那确实冲击很大,可以采取定时发送事件,用户是可以容忍浏览次数有一定的不一致性,最终一致性。

总之,需要在频繁更新和几个系统之间更新及时性上做一个平衡。参考:
CAP原理和BASE思想

个人觉得不一定要写进实体中,如果游览对实体没有产生状态的改变,事件可以不是domain event,是否可以生成一个application event,然后由projection监听这个事件去更新显示的数据。