这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
01.什么是架构
架构又称软件架构,是关于软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。
单机
单机就是所有功能呢个实现在一个进程中,并部署在一台机器上。
|优点|缺点|
简单|运维需要停服 | |C10K问题
单体架构、垂直应用|垂直切分
单体架构:分布式部署
垂直应用架构:按应用垂直切分的单体
|优点|缺点|
水平扩容|职责太多,开发效率低 | 运维不需要停服|爆炸半径大
SOA、微服务|水平切分
SOA面向服务架构(Service-Oriented Architecture)将应用的不同功能单元抽象为服务,定义了服务之间的通信标准。
|优点|缺点|
各服务的职责更清晰|ESB (企业服务总线) 往往需要一整套解决方案 | 运维粒度减小到服务,爆炸半径可控 |
微服务架构:SOA的去中心化演进方向
|优点|缺点|
兼具 SOA 解决的问题|运维成本高 | 服务间的通信更敏捷、灵活|数据一致性问题 | |高可用性问题 | | 容灾问题
小结
架构演进:
需求量变大 -> 增加人手
越来越复杂 -> 分工合作
架构越来越大 -> 切分(垂直切分和水平切分两种)
02 后端架构剖析
随着发展,积累了越来越多的用户,接下来需要扩大规模。
店面(硬件)扩展 -> 买/租?
师傅增加 -> 自己全家/招收科班?
工作重心 -> 提高质量/扩大规模(流水线化)?
云计算
云计算:通过软件自动化管理,听哦高能个计算资源的服务网络,是现代互联网大规模数据分析和存储的基石。
基础:
虚拟化技术: 整租/合租
编排方案:业主/租赁平台
云架构:
-
IaaS - 云基础设施,对底层硬件资源池的抽象 (买房/租赁平台)
-
PaaS - 基于资源池抽象,对上层提供的弹性资源平台 (清包/全包)
-
SaaS - 基于弹性资源平台构建的云服务 (从零培训/雇佣培训过的师傅)
-
FaaS - 更轻量级的函数服务。好比 LeetCode 等 OJ,刷题时只需要实现函数,不需要关注输入输出流(手工制作/蛋糕机批量生产)
弹性资源类型
服务资源调度:
- 微服务:小的组件
- 大服务:比较大的组件
计算资源调度:
- 在线:热销榜单
- 离线:热销榜单更新
消息队列:
- 在线:削峰、解偶
- 离线:大数据分析