《从0开始学架构》——可扩展:基本思想、模式、分层架构、SOA

本系列是极客时间《从0开始学架构》的读书笔记。

一、可扩展架构的基本思想与模式

对应《32 | 可扩展架构的基本思想和模式》

软件系统相对于硬件来说,具有可扩展性。一个软件不停地扩展,说明它本身充满了活力。我们经常将软件架构类比为建筑图纸,将开发软件类比为工程施工。这个类比有一个不协调的地方在于,没人会在开工后再对建筑结构指手画脚,而新的需求总是充满整个软件的生命周期。另外一个类比是开飞机,是这么描述的:既要保证飞机在飞(业务正常),乘客安全(用户无感知),同时还要换发动机(开发、扩展、重构……)。

可扩展的基本思想是:

常见的拆分思路有:面向流程拆分,面向服务拆分,面向功能拆分。
面向流程指的是数据移动的流程,而不是业务流程,如TCP/IP协议中数据从上到下、从下到上。从粒度上看,三者从高到低。规则引擎就是面向功能的拆分。
拆分方案怎么选择,决定了架构的扩展方式。也就是说决定了扩展时,该如何修改。

不同的拆分方式,得到了不同的架构模式。面向流程,对应分层架构;面向服务,对应SOA、微服务;面向功能,对应微内核。
当然,在一个系统内,多种架构可同时存在。

二、分层架构和SOA

对应《33 | 传统的可扩展架构模式:分层架构和SOA》

分层架构

也叫N层架构。2层的有C/S、B/S。3层的有MVC、MVP。复杂的系统会达到或超过5层,如OS内核。

分层架构的设计核心是:**保证各层差异清晰,边界明显。本质在于隔离关注点。**各个分层之前处理各自的逻辑。
同时,还要保证层与层之间的依赖是稳定的,这样才能快速支持扩展。如Linux内核为支撑不同的文件系统,抽象了VFS文件系统接口。如TCP/IP中各层间的交互不需要关心具体的实现协议。
另外一个特点是,逻辑层层传递,不能跳跃直接传递。虽然增加了冗余,但这样做结构清晰、责任明确、逻辑简单。比如TCP/IP各层不停对数据做处理。

SOA

service oriented architecture,面向服务架构。在传统行业得到了推广。

出现的背景是,企业内部各个业务重复建设,各个服务异构,复杂度变高。为了应对问题,SOA提出了三点要求:业务功能都是服务,服务之间松耦合,使用ESB(enterprise service bus,企业总线)来屏蔽差异,联结各个异构服务。亚马逊很早就实施了这一套,最后催生了它的云服务。

SOA解决了重复建设和扩展效率低的问题,但是ESB的引入也带来了新的复杂度,进而成为新的瓶颈。

可见SOA是把多个系统整合,所以采用SOA架构的多是有历史包袱的传统企业,它们变化少,业务稳定,但是存在多个系统异构。
而微服务是把单个系统拆开,适用从小到大的演进,适用需要快速变化的互联网企业。

你可能感兴趣的:(读书笔记)