软件架构模式 mark Richards - 读后总结 5 - 基于空间的架构

大多数基于⽹网站的商务应⽤用都遵循相同的请求流程:一个请求从浏览器发到web服务器,然后到应⽤用服务 器,然后到数据库服务器。虽然这个模式在⽤用户数不大的时候工作良好,但随着⽤用户负载的增加,瓶颈会开始 出现,⾸首先出现在web服务器层,然后应用服务器层,最后数据库服务器层。通常的解决办法就是向外扩 展,也就是增加服务器数量。这个方法相对来说简单和廉价,并能够解决问题。然而,对于大多数⾼高访问量 的情况,它只不过是把web服务器的问题移到了应用服务器。而扩展应⽤用服务器会更复杂,而且成本更⾼高, 并且⼜又只是把问题移动到了数据库服务器,那会更复杂,更贵。就算你能扩展数据库服务器,你最终会陷⼊入一个⾦金字塔式的情形,在金字塔最下⾯面是web服务器,它会出现最多的问题,但也最好伸缩。⾦金字塔顶部是 数据库服务器,问题不多,但最难伸缩。
在一个⾼高并发⼤大容量的应用中,数据库通常是决定应⽤用能够支持多少用户同时在线的关键因素。虽然各种缓 存技术和数据库伸缩产品都在帮助解决这个问题,但数据库难以伸缩的现实并没有改变。
基于空间的架构模型是专门为了解决伸缩性和并发问题而设计的。它对于⽤用户数量不可预测且数量级经常变 化的情况同样适⽤用。在架构级别来解决这个伸缩性问题通常是比增加服务器数量或者提⾼高缓存技术更好的解 决办法。
 

模型介绍

 基于空间的模型(有时也称为云架构模型)旨在减少限制应⽤用伸缩的因素。模型的名字来源于分布式共享内 存中的 tuple space(数组空间)概念。高伸缩性是通过去除中心数据库的限制,并使用从内存中复制的数据 框架来获得的。保存在内存的应用数据被复制给所有运行的进程。进程可以动态的随着⽤用户数量增减⽽而启动 或结束,以此来解决伸缩性问题。这样因为没有了中⼼心数据库,数据库瓶颈就此解决,此后可以近乎无限制的扩展了。
大多数使用这个模型的应用都是标准的网站,它们接受来⾃自浏览器的请求并进⾏行相关操作。

一个很好的例子 ( 12306更是一个典型的⽰示例 )。⽹网站不停的接受来⾃自浏览器的报价。应⽤用收到对某一商品的 报价,记录下报价和时间,并且更新对该商品的报价,将信息返回给浏览器。 这个架构中有两个主要的模块:处理单元 和 虚拟化中间件。下图展⽰示了这个架构和⾥里⾯面的主要模块。

 处理单元包含了应用模块(或者部分的应用模块)。具体来说就是包含了web组件以及后台业务逻辑。处理 单元的内容根据应⽤用的类型⽽而异—小型的web应⽤用可能会部署到单一的处理单元,而⼤大型一些的应⽤用会将 应⽤用的不同功能模块部署到不同的处理单元中。典型的处理单元包括应⽤用模块,以及保存在内存的数据框架 和为应⽤用失败时准备的异步数据持久化模块。它还包括复制引擎,使得虚拟化中间件可以将处理单元修改的 数据复制到其他活动的处理单元。
虚拟化中间件负责保护自⾝身以及通信。它包含⽤用于数据同步和处理请求的模块,以及通信框架,数据框架, 处理框架和部署管理器。这些在下文中即将介绍的部分,可以⾃自定义编写或者购买第三方产品来实现。

组件间合作

 基于空间的架构的魔力就在虚拟化中间件,以及各个处理单元中的内存中数据框架。下图展示了包含着应⽤用 模块、内存中数据框架、处理异步数据恢复的组件和复制引擎的处理单元架构。
虚拟化中间件本质上是架构的控制器,它管理请求,会话,数据复制,分布式的请求处理和处理单元的部 署。虚拟化中间件有四个架构组件:通信框架,数据框架,处理框架和部署管理器。

 通信框架

通信框架管理输⼊入请求和会话信息。当有请求进⼊入虚拟化中间件,通信框架就决定有哪个处理单元可⽤用,并 将请求传递给这个处理单元。通信框架的复杂程度可以从简单的round robin算法到更复杂的⽤用于监控哪个请 求正在被哪个处理单元处理的next-available算法

 数据框架

数据框架可能是这个架构中最重要和关键的组件。它与各个处理单元的数据复制引擎交互,在数据更新时来 管理数据复制功能。由于通信框架可以将请求传递给任何可⽤用的处理单元,所以每个处理单元包含完全⼀一样 的内存中数据就很关键。下图展⽰示处理单元间如何同步数据复制,实际中是通过非常迅速的并⾏行的异步复制 来完成的,通常在微秒级

 基于空间的架构是⼀一个复杂和实现起来相对昂贵的框架。对于有可变伸缩性需求的小型web应⽤用是很好的选 择,然⽽而,对于拥有⼤大量数据操作的传统⼤大规模关系型数据库应⽤用,并不那么适⽤用。
虽然基于空间的架构模型不需要集中式的数据储存,但通常还是需要这样⼀一个,来进⾏行初始化内存中数据框 架,和异步的更新各处理单元的数据。通常也会创建⼀一个单独的分区,来从隔离常⽤用的断电就消失的数据和 不常⽤用的数据,这样减少处理单元之间对对⽅方内存数据的依赖。
值得注意的是,虽然这个架构的另⼀一个名字是云架构,处理单元(以及虚拟化中间件)都没有放在云端服务 或者PaaS上。他们同样可以简单的放在本地服务器,这也是为什么我更倾向叫它“基于空间的架构”。 从产品实现的⾓角度讲,这个架构中的很多组件都可以从第三⽅方获得,⽐比如GemFire, JavaSpaces, GigaSpaces,IBM Object Grid,nCache,和 Oracle Coherence。由于架构的实现根据⼯工程的预算和需求⽽而 异,所以作为架构师,你应该在实现或选购第三⽅方产品前⾸首先明确你的目标和需求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空白的泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值