前言
这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
今日学习内容:
- 什么是架构
- 企业级后端架构剖析
- 企业级后端架构的挑战
- 后端架构实战
正文
什么是架构
架构的演进初衷:好比做蛋糕
- 需求量越来越大,终归要增加人手
- 越做越复杂,终归要分工合作
架构的演进思路:就像切蛋糕,蛋糕越来越大,一口吃不下终归要切分
- 竖着切(垂直切分)
- 横着切(水平切分)
- 定义
- 软件架构,是指有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。
- 实现一个软件有很多种方法,架构在“方法选择”上起着至关重要的指导作用,
- 单机架构
软件系统需要具备对外提供服务。单机,就是把所有功能都实现在一个进程里,并部署在一台机器上。
- 优点
简单
- 缺点
运维需要停服; C10k problem ;
- SOA、微服务|水平切分
SOA(Service-Oriented Architecture)
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准
微服务架构:属于 SOA 的去中心化演进方向
我们把原本包含了众多复杂逻辑的进程按照功能单元抽象成多个服务,以服务为一等公民,并为它们之间的通信定义标准,变得到了 SOA 架构。这里有两个相对比较重要的概念:
- 服务:是根据功能抽象出来的概念。比如负责持久化存储的数据库服务,为了加快查询速度的缓存服务
- 通信标准:是服务之间通信的基石。
为了服务之间更好的通信,有两个大的发展方向:中心化和去中心化。中心化的方案形态较重,扩展性不佳。而去中心化的方向,演进的最终形态就是微服务架构。
- 微服务架构优点
- 不同模块的开发人员可以专注于自己的业务逻辑,开发迭代效率得到显著提高
- 各个服务独立运维,变更操作的影响面可控,应用整体的稳定性得到了提高
- 面临的挑战
- 由单机部署演进而来的分布式架构,如何解决数据一致性
- 服务越来越多,依赖越来越复杂,如何做到高可用
- 一个团队甚至一个人需要管理多个微服务,如何运维
- 微服务的目标是强化单一职责,控制爆炸半径,如何在解耦合“过微”之间取舍