架构(5),可扩展

所有的可扩展性架构设计,背后的基本思想都可以总结为一个字 : 拆!

拆,就是将原本大一统的系统拆分成多个规模小的部分, 扩展时只修改其中一部分即可, 无须整个系统到处都改, 通过这种方式来减少改动范围, 降低改动风险 。

常见的拆分思路有如下三种:

• 面向流程拆分:将整个业务流程拆分为几个阶段,每个阶段作为一部分。

• 面向服务拆分:将系统提供的服务拆分, 每个服务作为一部分。

• 面向功能拆分:将系统提供的功能拆分, 每个功能作为一部分 。

从范围上来说, 流程 > 服务 > 功能。以学生管理系统为例,面向流程拆分:展示层→业务层→数据层→存储层。面向服务拆分:将系统拆分为注册、登录、信息管理 、 安全设置等服务。面向功能拆分:登录服务包括手机号登录、身份证登录、邮箱登录三个功能。

不同的拆分方式,将得到不同的系统架构,典型的可扩展系统架构如下:

面向流程拆分:分层架构。

面向服务拆分:SOA、 微服务。

面向功能拆分:微内核架构。

这几个系统架构并不是非此即彼的,而是可 以在系统架构设计中进行组合使用的。 例如,以学生管理系统为例,我们最终可以这样设计架构:

( 1) 整体系统采用面向服务拆分中的“微服务”架构,拆分为“注册服务”“登录服务” “信息管理服务”“安全服务”,每个服务是一个独立运行的子系统 。

(2 )其中的“注册服务”子系统本身又是采用面向流程拆分的分层架构。

(3 )“登录服务”子系统采用的是面向功能拆分的“微内核”架构 。


微内核架构

也称为插件化架构,一种面向功能进行拆分的可扩展架构,通常用于实现基于产品的应用。

微内核有两类组件:核心系统和插件模块。核心系统负责业务无关的通用功能,插件模块负责实现具体的业务逻辑。

核心系统功能比较稳定,不会因为业务功能扩展而不断修改,插件模块可以根据业务功能的需要不断地扩展。微内核架构通过隔离变化到插件的方式提供了灵活性、可扩展性。

微内核的核心系统设计的关键技术:

• 插件管理,核心系统需要知道插件的信息,常见的实现方式插件注册表机制。

• 插件连接,插件如何连接到核心系统。核心系统必须制定插件和核心系统的连接规范。

• 插件通信,插件通信指插件间的通信,插件间是完全解耦的,但业务中插件是需要进行通信的,这个通信必须通过核心系统,因此核心系统需要提供插件通信机制。

1.OSGi 架构

OSGi 是一个插件化的标准,现在我们谈到 OSGi ,如果 没有特别说明, 一般都是指 OSGi 的规范。

Eclipse 从 3.0 版本开始,抛弃了原来自己实现的插件化框架,改用了 OSGi 框架 。

Eclips巳采用的 OSGi 框架称为 Equinox , 类似的实现还有 Apache 的 Felix、 Spring 的 SpringDM 。

OSGi 框架的逻辑架构:

( 1 )模块层,模块层完成插件管理功能 。插件被称为 Bundle ,每个 Bundle是一个Java的JAR 文件。

(2 )生命周期层,生命周期层完成插件连接功能,生命周期层精确地定义了 bundle 生命周期的操作(安装、更新、启动、停止、卸载〕, Bundle 必须按照规范实现各个操作。

(3 )服务层,服务层完成插件通信的功能。 OSGi 提供了一个服务注册的功能,用于各个插件将自己能提 供的服务注册到 OSGi 核心的服务注册中心,如果某个服务想用其他服务,则直接在服务注册中心搜索可用服务就可以了 。

2.规则引擎架构

规则引擎中的规则就是微内核架构的插件,引擎就是微内核架构的内核,规则可以被引擎加载和执行 。执行引擎解析配置好的业务流,执行其中的条件和规则。

• 通过引入规则引擎,业务逻辑实现与业务系统分离,可以在不改动业务系统的情况下扩展新的业务功能 。

• 规则通过自然语言描述,业务人员易于理解和操作。

• 规则引擎系统一般提供可视化的规则定制、审批、查询及管理,方便业务人员快速配置新的业务。

规则引擎的基本架构:

(1 )开发人员将业务功能分解提炼为多个规则,将规则保存在规则库中 。

(2 )业务人员根据业务需要,通过将规则排列组合,配置成业务流程,保存在业务库中。

(3 )规则引 擎执行业务流程,实现业务功能 。

对照微内核架构的设计关键点,看规则引擎如何实现:

•插件管理,在规则引擎架构中,规则一般保存在规则库中,通常使用数据库来存储。

•插件连接,规则引 擎的插件连接实现机制其实就是规则语言。业务人员需要基于规则语言来编写规则文件,然后由规则引 擎加载执行规则文件来 完成业务功能。

•插件通信,规则引擎的规则之间进行通信的方式就是数据流和事件流。规则只需要输出数据或事件,由引擎将数据或事件传递到下一个规则 。

目前最常用的规则引 擎是开源的 JBoss Drools ,采用 Java 语言编写 , 基于 Rete 算法 。

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

推荐阅读更多精彩内容

  • 微内核架构(Microkernel Architecture),也被称为插件化架构(Plug-in Archite...
    d_quan阅读 150评论 0 1
  • 最近再看阮一峰的一篇博客提到了一本书《Software Architecture Patterns》(PDF),写...
    卓_然阅读 7,626评论 0 22
  • 一、生命周期 一个事物一旦出生,就必然会长大,变异,一旦长大,就面临着衰老,接下来就是消亡了,这个过程就称为一个事...
    ZyBlog阅读 2,642评论 1 11
  • 第85篇 极客时间《从0开始学架构》课程笔记。 定义 微内核架构(Microkernel Architecture...
    短暂瞬间阅读 4,818评论 1 3
  • 包括分层架构、SOA 架构、微服务和微内核等 优点:部署成本低、改动成本、低成本扩容,弹性伸缩,适应云环境 二、可...
    hedgehog1112阅读 776评论 0 0