再谈垂直和水平切分

标签: IT咨询 | 发表时间:2013-05-18 14:28 | 作者:人月神话
出处:http://blog.sina.com.cn/cmmi
本篇为在应用集中化背景下,数据库集群本身的垂直和水平切分方法的点滴思考。



首先我们看应用的垂直切分,应用本身包括了两大类型的应用,一种是以核心数据为中心的应用,一种是以纯粹的流程工单为核心的应用。前者如资产管理,主数据管理等相关应用;后者如运维工单管理,OA办公管理等应用。对于工单型应用各种工单流程之间相互耦合性非常底,共享的基础数据也相当少,因此这类应用相当容易进行垂直切分,而且切分的也相当干净;而对于资产管理这类应用, 在进行垂直切分的时候必须考虑到有一个比较厚的基础数据支撑的底层,然后才是业务流程场景拆分的各个关键业务模块。

对于基础数据支撑的底层,为了保证整个领域数据模型的全局和完整性,而适合再进行复杂的垂直切分操作;这个底层在建立的时候必须有领域模型的系统分析和设计思想,在整个底层领域模型上建立领域服务层,如上篇文章所谈到的领域对象服务,领域业务服务,领域组合服务三种类型;注意这种拆分后还有一个关键点, 即对于底层上方的各个业务模块和底层基础数据模块间无论是直接数据库DAL连接,还是共享服务的方式,都是一种紧耦合的关系,脱离了底层基础数据,上面的业务模块本身无意义。

上层的业务模块本身对底层有大量的对象或数据级的CRUD和访问操作,个人建议还是务必考虑走轻量的接口服务模式和集成模式,减少不必要的性能损耗。 我们一直谈对于系统内部的SOA服务化是否彻底的问题,在整个服务化架构设计上也不适合走极端,影响到整个业务系统的性能。对于跨业务系统的场景,对于底层数据支撑则必须要通过共享服务的方式进行调用,但是在这种场景下要注意到更多的是调用轻量数据传送的领域业务服务,而不是大量的领域对象服务。因此对于跨应用场景下底层能力走共享ESB业务服务模式是成立的。

在SOA参考架构和业务组件化下,更多强调的是业务组件本身朝外部提供业务服务能力,业务组件间的相互调用必须走业务组件提供的业务服务,即业务组件横向之间彻底解耦。但是对于单个应用模块而言,其展现和应用层到底层业务组件间是更多强调的是业务逻辑层API能力的梳理和定义, 这些API业务能力在纵向调用时候完全可以走轻量的API,只有在跨业务组件调用的时候才需要通过代理对外发布为轻量的业务服务

或者可以简单的说,对于分模块开发而言更加强调的是各个模块直接的相互解耦和隔离,强调模块间的接口以及由接口识别出来的业务服务; 对于领域驱动架构设计下的开发,则首先强调的是可以分层开发,再强调分层后的模块进一步细分,这种分层开发即完全可以是一个开发商来做共享的领域服务层;而另外一个开发商来做前端的展现层和应用层;做前端应用层的开发商完全依赖于前者所提供出来的领域服务层能力,而不在关注底层数据库设计和底层数据库选择等内容。

这个思考清楚了即回答一个问题,即在首先进行垂直切分的思考模式下,对于模块内上层和底层直接的服务调用和交互我们不太关心;而更加关心的是跨模块间的业务服务交互和调用。在这种模式下可能并不存在共性的领域服务模型层。

因此对于以数据为核心的应用系统,可以首先考虑水平拆分的问题,在水平拆分后仍然按照DDD的核心思想来建立共享的领域服务层,再对上层的应用功能模块进行垂直拆分。在这种模式下达到领域对象层的完整能力没有丝毫被拆解或破坏。但是在这种拆分模式下必须考虑扩容的问题,即对于跨各个水平拆分的业务流协同和共享的问题。垂直拆分下我们更多考虑的是跨业务模块的协同和共享;而水平拆分下则更多考虑的是跨地域,业务组织单位下的协同和共享; 可以说水平拆分更加类似于一个集团型企业内部的支撑多组织的SaaS应用,只是需要考虑集团到下属子公司,子公司到各个分支机构的业务协同问题

对于以流程为中心的业务应用,建议的方式是直接进行细粒度的垂直切分,不用太考虑水平拆分的问题;而这种模式下的扩容只是模块的进一步垂直切割;对于以数据为中心的业务应用,则建议首先考虑水平拆分,保留领域服务层的完整能力,在进行上层应用模块的垂直切分。

不论是哪种场景,实际的建议还是尽量少进行垂直+水平模式的混合切分,在这种混合切分场景下将极大的增加应用设计和开发的复杂度,加大对事务一致性控制的难度。数据虽然比较容易的达到的分布式水平扩展的需求,但是应用开发复杂度和业务一致性的要求却大大降低,往往得不偿失。

  青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

相关 [垂直] 推荐:

垂直网站二次崛起

- redhobor - 《商业价值》杂志
得益于社交网络、电子商务和移动互联浪潮对互联网基础架构进行的升级,垂直网站从当初的细分领域信息提供者,变成线上与线下商务对接的最佳通道. 历史已经迎来了垂直网站再次崛起的时代. 当地时间7月23日,Facebook投资人、投资公司Elevation Partners合伙人罗杰·迈克奈米(Roger McNamee)在接受媒体采访时语出惊人:社交网络的机会已经“完结”.

垂直互联网的思考

- coofucoo - 月光博客
  电商平台型企业征战十年,争的是广度、用户、价格. 而征战的结果是大鱼挤兑小鱼,小鱼连挤兑虾米的资格都没有,因为互联网太透明,用户的变数性太大,平台与平台之间的同质化严重,差异化小,所以,笔者认为平台之争的结果实际上就是价格战之争,拼谁更有拿钱和烧钱的本事.   而对于垂直细分类品牌,笔者认为他是未来电子商务发展的热点、重点、盈利点.

再谈垂直和水平切分

- - 人月神话的BLOG
本篇为在应用集中化背景下,数据库集群本身的垂直和水平切分方法的点滴思考. 首先我们看应用的垂直切分,应用本身包括了两大类型的应用,一种是以核心数据为中心的应用,一种是以纯粹的流程工单为核心的应用. 前者如资产管理,主数据管理等相关应用;后者如运维工单管理,OA办公管理等应用. 对于工单型应用各种工单流程之间相互耦合性非常底,共享的基础数据也相当少,因此这类应用相当容易进行垂直切分,而且切分的也相当干净;而对于资产管理这类应用,.

社区,创意,产品:垂直电商 Quirky 不走寻常路

- MooM - 爱范儿 · Beats of Bits
Quirky 成立于2009年3月,是一家创意产品社区与电子商务网站,专注于创意产品细分市场(厨卫小工具、数码设备配件、儿童玩具、运动与旅行辅助装备等). 它最大的特点是,在 Quirky 里的所有商品都是由 Quirky 社区参与开发的. 用户可以在网站上提交他们的产品创意,里面包括产品的描述、理念等.

SpaceX展示未来的垂直着陆火箭

- 微笑!?~ - Solidot
私人太空公司SpaceX的CEO Elon Musk上月底在美国新闻俱乐部上讨论了未来的载人飞行(C-Span视频),他用一个令人惊叹的CG视频(MP4)演示了火箭和飞船的可复用性. 在视频中,SpaceX展示了可能只存在于科学幻想中的未来整体可复用火箭和飞船,火箭的第一级和第二级脱离飞船,重返大气层,然后在这一过程中利用自身动力抵消地球引力,以垂直方式着陆,飞船在完成任务返回地球后同样以垂直方式而不是使用降落伞着陆.

deviantART:1400万独立艺术家的垂直SNS

- 彭全兵 - 互联网的那点事...
没有他的PSP2游戏机,安吉洛·索蒂拉(Angelo Sotira)就像一个坐立不安、手足无措的孩子. 他单薄、衣着时尚但不修边幅,一条True Religion高端牛仔热裤,配上一件带有碎洞的牛仔衣,让他看起来很有艺术气质,并且远比他30岁的实际年龄年轻得多. 在谈到他所开创的这个全球最早、最大的社交网络时,他激情四射,说到激动处会在沙发前来来回回地走动;有时也会将双腿跷到咖啡桌上或者斜靠着它轻松地回忆或畅想——这足见他不是一个循规蹈矩的人.

商业价值:垂直网站二次崛起

- Yiding - GeekPark 捕风捉影
得益于社交网络、电子商务和移动互联浪潮对互联网基础架构进行的升级,垂直网站从当初的细分领域信息提供者,变成线上与线下商务对接的最佳通道. 历史已经迎来了垂直网站再次崛起的时代. 当地时间7月23日,Facebook投资人、投资公司Elevation Partners合伙人罗杰·迈克奈米(Roger McNamee)在接受媒体采访时语出惊人:社交网络的机会已经“完结”.

垂直居中的几种实现方法

- Charles - 幸福收藏夹
用过 Fireworks / PhotoShop 的人应该都知道,在画布中将一个页面模块居中是多容易的事,可如果是垂直居中,前端就苦逼了. 因为 CSS 本身并没有提供相应的 API 支持(确切来说是提供不全). 今天重新整理一下思路,说说前端在实现页面元素垂直居中的几种思路:. 一、利用 position 和负边距.

我要投诉:垂直的投诉类点评移动应用

- - 动点科技-独立原创科技博客
我要投诉是一个专门面向消费者的,用来发布和查看商家投诉的移动应用. 主要功能有两个:一是发布投诉,需用新浪微博登录后发布,可以手动查找商家,或直接查看附近商家. 发布投诉的形式包括文字、语音、图片. 默认发布之后,该信息会同步在我要投诉的官方微博,以通过社会化网络进行传播,扩大影响;. 二是投诉查看,可以按照周边、排行榜、最新和最搞投诉四类来查看.