1. 什么是架构
定义:软件的整体结构,各组件的抽象描述,指导软件系统的设计
实际问题:如何做蛋糕,怎么卖蛋糕。
单机:
- 所有功能在同一个进程中实现,部署在同一台机器。优点:简单。缺点:运维需要停服,C10K(单机服务瓶颈)。
单体、垂直应用|垂直切分:
-
单体架构,分布式部署。多雇佣几个师傅,大堂经理分流。一个大师傅切换几个小师傅
-
垂直应用架构:按应用垂直切分的单体。不同口味的蛋糕由不同的师傅完成
- 优点:水平扩容、运维不需要停服
- 缺点:每个师傅的指责还是太高,开发效率不高;爆炸半径大,某个师傅出了问题,这个系统收到影响。牵一发而动全身
SOA架构、微服务|水平切分
-
SOA:service-oriented- architecture。应用的不同功能单元抽象成服务,定义服务之间交互通信标准
- 不同口味由不同的师傅负责。下层由和面、烘烤等的底层师傅负责。两层之间通过规定的沟通方式沟通。相比于垂直应用架构,做了一层水平的切分
-
微服务架构:SOA的去中心化演进
- 职责拆分更细致
- 服务之间自由交流,不通过中心化的交流节点
-
问题:
- 数据一致性
- 高可用:师傅之间如何合作
- 治理:烤箱坏了,整体仍能运转
- 解藕 vs 过微:运维成本
2. 企业级后端架构剖析
背景:扩大规模
- 店面:买/租
- 工人:家庭成员/招人
- 制作方式:手工/机械
- 工作中心:精进收益/商业发展
云计算
-
软件自动化管理,提供存储、计算、网路资源
-
基础:虚拟化技术(整租/合租)、编排方案(业主/租赁平台)
-
架构
- IaaS:买房子/房屋租赁
- PaaS:清包/全包
- SaaS:从零培训/培训班培训
- Faas:手工制作/机器生产
云原生
- 通过公有云、私有云、混合云,方便构建和运行可弹性扩展的应用
- 弹性资源:虚拟化,扩缩容
- 微服务:业务单元解藕,通信标准统一
- DevOps:敏捷开发,CI/CD
- 服务网格:业务与治理解构,异构系统的统一化治理,复杂的治理能力
弹性资源
- 服务资源调度:微服务(和面)、大服务(烤箱)
- 计算资源调度:在线(热销榜单)、离线(热销榜单更新)
- 消息队列:在线(削峰、解藕)、离线(大数据分析)
弹性存储资源
- 经典:对象(宣传视频)、大数据(用户消费记录)
- 关系型数据库(收银记录)
- 元数据:服务发现(通信录)
- NoSQL:KV
DevOps
- 自动化流程,提高软件交付效率,贯穿软件开发周期
微服务
- 通信标准:HTTP(Restful API),RPC(Thrift、gRPC)
- 微服务中间件
服务网格service mesh
- 数据和业务进程解构