你的SOA已经使用了EDA和CQRS吗?SOA是以服务这个方式对外提供功能,我们很显然喜欢在Service中加上JTA等事务,比如EJB的无态Bean或Spring的@Transaction标注都是激活这样的功能,这种方式实际是一种悲观事务,容易引起死锁,特别是在高并发情况下。
我们需要重新思考的是:将事务加在服务这样处理过程上,这个思路是不是有问题?因为服务只是对外提供一个统一接口,不代表对内其就是一个统一的处理过程,是一个process,这是很多人对服务的误解之处。
新的EDA+reactor思路是:服务通过发送消息给一个聚合根实体,也就是Actors模型,聚合根实体是通过消息与外面交互,其内部状态一致性操作由其自己完成。
准确说,DDD+ CQRS +EDA+reactor + Actor才是高并发事务SOA的终极解决方案。
参考:http://www.jdon.com/45738
[该贴被banq于2013-09-17 11:38修改过]