但是,这种做法实际上是有前提的,那就是BLP的逻辑要不能改!这点非常重要,因为一旦改了逻辑,那再通过input events来还原BLP的状态就不是以前的状态了。但是像数据库SQL或者redis的命令为什么可以这样做呢?因为sql或redis的命令的处理逻辑一定是不变的,也就是相当于那种系统,只要输入是什么,那结果是什么就确定了的。但是像我们的业务系统,领域模型的结构或者逻辑,比如一个if语句都不能改,否则就会出现无法通过input events还原BLP的风险。所以,基于以上的考虑,我基本不会考虑使用类似LMAX的架构在DDD的应用程序中,因为我的业务逻辑不可能不修改!因此,要实现单线程600TPS的架构,对我来说还是个传说,呵呵。所以,我目前只能还是实现真正的event sourcing,也就是根据output events来还原BLP。这样的方式来还原BLP相对比较靠谱。因为我们的domain结构是不常改的,就算改,也可以做到和以前兼容。而逻辑的改动不影响event sourcing。而要做event sourcing,那就必须持久化domain event。所以,我才会设计为,一定是把domain event持久化完成了才认为事实发生了。
[该贴被w438418754于2013-10-15 11:34修改过]
猜你喜欢
本站原创《复杂软件设计之道:领域驱动设计全面解析与实战》
其他人在看