2013-09-25 10:04 "@boriszhang78
"的内容
公司很多同事不认可OO,否定聚合根存在,希望SOA直接集成信息服务,直接晕倒 ...

非常同情你,这也是目前普遍存在的问题,可能和接受的哲学等逻辑思考有关系。

其实聚合是世界的一个普遍现象。气态 液态和固态是物质内分子吸引力大小不同造成的,这是初中物理吧,但是用另外一个用语描述,是这些分子聚合力度不同造成的。不管聚合力度大小不同,如果分子聚合力度为0,那么就没有这个物质。

聚合不但普遍存在物理世界,在人类思想世界也普遍存在,算法或算法公式是典型的聚合,靠加减乘除等于号等符合聚合在一起,成为一个算法功能。

一个单位,如果人心聚合,也就是团结,那么做事就有效率,如果心聚不到一起,搞内部斗争,聚合成了几个帮派,没有聚合成一个整体,虽然帮派之间有牵制作用,但是做事效率不高啊。

比如一个军队也讲究纪律,一致性强,聚合性强。

如果一个国家所有人都聚合成一体,人心向一,这个国家容易取得一致性意见,大家都没有反对意见,聚合性强。但是这也有其他问题,不多说了。

聚合是跟有界上下文有关,找到有界上下文就可以,什么是有界上下文,通俗讲就是我们讲的模块,业务模块。

找出每个业务模块中那个领头的活动概念,也就是在一群人中找出头头出来,比如一伙人打砸抢,它们是聚合,表现为一致性业务行为:打砸抢,那么是谁在指挥协调,保证成员行动一致性?那就是找出头。这个头就是聚合根。

有聚合,必有聚合根。

参考:http://www.jdon.com/45754#23143435

[该贴被banq于2013-09-25 11:31修改过]

再问个@banq,如果SOA外部的请求者希望同步得到结果,这种最终一致性,是直接提示成功吗?我能想到的就是采用外部调用者再次查询结果的方式,但是这个不是很友好,最好能在框架层面解决。
[该贴被boriszhang78于2013-09-25 14:49修改过]

>如果SOA外部的请求者希望同步得到结果,这种最终一致性,是直接提示成功吗?

首先,最终一致性不一定得到结果就会比同步慢,如果使用并发并行计算,还会比同步等锁情况更快。见:http://www.jdon.com/45702

其次,最终一致性是利用业务流程BPM上的非高一致性,只要SOA通过ESB走内部流程,涉及多个系统,多个模块,多个部门,那么服务是等这些系统串联都走完?还是将命令并发发给这些系统,谁先处理命令完成谁先报告,然后服务总结一下返回结果?无疑后者效率最高,返回结果也最快。

那这种聚合根的架构一秒能处理多少订单呢?

2015-12-30 17:15 "@sinaID79015"的内容
那这种聚合根的架构一秒能处理多少订单呢? ...

这种聚合根实际就是Actor模型,内含状态的业务模型聚合,比如一个游戏对象是一个聚合,内含可变状态,通过分布式系统可达到吞吐量是只要增加硬件就可以了。
如何设计一个千万人在线的MMO游戏?