9 架构初探-谁动了我的蛋糕-架构 | 青训营笔记

143 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第二篇笔记。

定义

是软件整体结构和组件的抽象描述,用于指导系统设计。

类型

软件系统需要具备对外提供服务。

单机

把所有功能都实现在一个进程里,并部署在一台机器上。
优点:简单。
缺点:C10K问题;运维需要停服。

单体

在单机架构的基础上,将进程部署到多个机器上。
优点:具备水平扩容能力;运维不需要停服。
缺点:后端进程职责太多,越来越臃肿;爆炸半径较大,进程中一个很小的模块出现问题,都可能导致整个进程崩溃。

垂直应用(垂直切分)

在单机架构基础上,将进程按照某种依据切分开。比如,A 软件和 B 软件的后端原先采用单机架构部署,那就是一个进程部署在多个机器上;如果用垂直应用架构,可以将 A 和 B 的后端拆分为 A、B 两个进程,然后再按照单体模式的思路,部署在多个机器上。
优点:一定程度上减少了后端进程职责;一定程度上缩小爆炸半径。
缺点:没有根本解决单体架构的问题。

SOA(面向服务架构)

SOA 架构中,服务为一等公民,将进程按照不同的功能单元进行抽象,拆分为『服务』。有了服务之后,SOA 还为服务之间的通信定义了标准,保证各个服务之间通讯体验的一致性。
优点:各服务的职责更清晰;运维粒度减小到服务,爆炸半径可控。
缺点:(企业服务总线) 往往需要一整套解决方案。

微服务

在 SOA 架构中,ESB 起到了至关重要的作用。但从架构拓扑来看,它更像是一个集中式的模块。有一个 SOA 分布式演进的分支,最终的形态便是微服务。
优点:兼具 SOA 解决的问题;服务间的通信更敏捷、灵活。 缺点:运维成本。

水平切分

SOA的去中心化演进方向。 问题:数据一致性(一共)、高可用(如何合作)、治理(容灾)、解耦vs过微(运维成本高)?

小结

  • 架构演进的初衷:满足软件迭代诉求,提高迭代效率
  • 架构演进的思路:垂直切分——分布式,水平切分——分层/模块化