分解分布式系统

1、引言

一个使用Java技术栈的大型分布式系统一般由成千上万台机器构成,从机器的视角看,他们都是跑在Linux系统上的JVM进程,执行一定的业务逻辑,本质上是同构的。但是从业务视角看,他们又各有各的不同。本文从业务视角出发,试图对分布式系统进行分解,并阐述他们各自的不同。本文中的很多概念都是我自己发明的,仅仅是为了帮助理解,不具有权威性,如有雷同,只能说我们想到一块去了,纯属巧合!

以面向对象的思维来看,一个对象既包含了数据,又包含了行为。如果把分布式系统看作一个大型复杂对象,那么它的内涵也可以被简单的分为行为和数据,因此,我们不妨尝试把分布式系统初步分解成行为系统和数据系统,其中,数据系统对数据进行统一的管理,而行为系统则是对这些数据进行使用。很显然,这样的分类很粗糙,无法形象的认识分布式系统,所以,我们还需要进一步分解。

2、数据系统

数据系统的职责是对数据进行统一的管理,那么,数据系统对哪些数据进行统一管理呢?按照被管理的数据的不同,我们可以进一步分解出最常见的两个系统:实体系统和单据系统。

2.1、实体系统

实体系统是领域模型相关的,比如交易领域有商品、库存等领域模型,于是就有相应的商品中心和库存中心等。这些系统的核心一定是一个确定的领域模型,所有的业务逻辑都是围绕这个领域模型进行的,不同的实体系统之间一定是有明确边界的。这些系统一般会对外提供基本的增删改查的服务,它需要保证数据存储的高可用以及数据的一致性,同时保证系统的高并发,在技术上一般会涉及到分布式缓存、分库分表、数据库优化、JVM优化等等,

2.2、单据系统

单据系统是实体系统的一个特例,可以看成是高级的实体系统。单据表示的是一种契约,这种契约往往会组合不同的实体,比如交易单,除了交易单本身,它还会包含商品信息和用户信息。单据一般是以状态驱动的,是有一个固定的生命周期的。单据系统需要考虑的是高并发、大数据存储,一般不会涉及缓存。

3、行为系统

行为系统本质上是一条条的业务流程,因此也可以叫业务系统,而业务流程中往往会存在可以复用的业务流和个性化的业务流,因此,业务系统大致可以分为平台型业务系统和垂直型业务系统。

3.1、平台型业务系统

平台型业务系统关注的是构建可复用的流程。比如下单这个流程,无论是天猫下单还是淘宝下单还是阿里旅行下单,在交易中心看来都是一样的,交易中心只会对外提供一个统一的下单接口,不会对每个业务提供单独的接口。从实践角度来说,可复用的流程只能做到粗粒度的可复用,比如把下单流程拆分成几个大的阶段,这些阶段是每个业务都共有的,但是每个阶段不同业务还是会有不同的玩法,因此,平台型业务系统还是会去关注不同的垂直业务规则。平台型业务系统在技术上一般会涉及到流程引擎和规则引擎,还会涉及到分布式锁,分布式事务等。

3.2、垂直型业务系统

垂直型业务系统一般都是整个业务流程的入口,它们是面向用户的。比如淘宝网站,阿里旅行网站,淘票票APP等等,这些我们平常都能看到的东西背后都会对应一个垂直系统,它们接受用户的指令,然后调用内部的其他系统进行业务处理,有点类似于调度机器的角色。垂直线业务系统会直接对接PC端、移动端等,会使用我们常用的MVC框架技术,同时又会使用RPC技术(比如Dubbo)和内部系统通信。垂直线业务系统关注最多的是高并发,这里的高并发不仅仅是对自身的优化,还需要和PC端移动端以及内部其他系统一起优化。

4、支撑系统

在普通的对象中,不管是行为的执行(调用方法)还是数据的存储(属性赋值)都是很显而易见的,因为JVM帮我们封装了复杂性。而在分布式系统中,并没有这样一个全局的JVM来帮助我们,因此我们只能自己开发系统来实现,于是就出现了一套支撑系统。这些系统包括RPC框架、消息中间件、数据分片中间件、分布式缓存中间件等等这些帮助我们在分布式系统进行通信的中间件,也包括了MySQL、redis、hbase等等帮助我们真正存储数据的系统。

5、如何设计一个分布式系统

首先先找出一个或几个关键的领域模型,构建一套实体系统,然后视业务来构建一套单据系统,然后在实体系统和单据系统之上构建一套行为系统。对于行为系统,一开始可以是几个垂直业务系统,然后随着业务的不断深入,慢慢拆分出平台型业务系统。最后选择合适的支撑系统,将上面的几套系统整合起来,并在系统上线后,根据不同系统的特点进行优化。

6、总结

俗话说得好:没图你说个JB。于是我按照上面的分解,画了张分布式系统的简图,以供参考:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容