这是我参与「第五届青训营」笔记创作活动的第6天
1.本堂课重点内容
- 什么是架构
- 单机架构
- 单体架构
- 垂直应用架构
- SOA架构
- 微服务
- 架构的演进
2. 什么是架构
2.1 简介
架构,又称软件架构
- 是有关于软件整体结构与组件的抽象描述
- 用于指导软件系统各个方面的设计
2.3 架构的重要性
架构就像是房子的地基,地基坚实了大厦才能盖的更高,入住更多的人。
3. 单机架构
3.1 简介
单机架构就是把所有的功能都实现在一个进程里,并部署在一台机器上。
3.2 优点
- 简单
3.3 问题
- c10k 问题
- 运维需要停服
3.4 类比蛋糕店的架构图
4. 单体架构
4.1 简介
单体架构就是在单机架构的基础上进行水平扩展
4.2 优点
- 水平扩容
- 运维不需要停服
4.3 问题
- 职责太多,开发效率不高
- 爆炸半径大
4.4 架构图
5. 垂直应用架构
5.1 简介
垂直应用架构就是在单机架构的基础上进行垂直切分
5.2 优点
- 水平扩容
- 系统间相互独立,互不影响,新的业务迭代时更加高效
5.3 问题
- 职责太多,开发效率不高
5.4 架构图
6. SOA架构
6.1 简介
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准
6.2 问题
- 数据一致性
- 高可用
- 治理
- 解耦 vs 过微
6.3 架构图
7. 微服务架构
7.1 简介
微服务架构是SOA架构的一种拓展,这种架构模式下它拆分粒度更小,服务更独立,把应用拆分一个个微小的服务。 微服务的关键在于微小、独立、轻量级通信
7.2 优点
- 微服务很⼩,便于特定业务功能的聚焦 A B C D
- 微服务很⼩,每个微服务都可以被⼀个⼩团队单独实施(开发、测试、部署上线、运维),团队合
- 作⼀定程度解耦,便于实施敏捷开发
- 微服务很⼩,便于重⽤和模块之间的组装
- 微服务很独⽴,那么不同的微服务可以使⽤不同的语⾔开发,松耦合
- 微服务架构下,我们更容易引⼊新技术
- 微服务架构下,我们可以更好的实现DevOps 开发运维⼀体化;
7.3 问题
- 分布式复杂难以管理,当服务量增加,管理越加复杂
- 微服务架构下,分布式链路跟踪难
7.4 架构图
8. 架构的演进
8.1 架构演进的初衷
- 需求越来越大,增加人手
- 越做越复杂, 终归要分工合作
8.2 架构的演进思路
- 垂直切分
- 水平切分