什么是架构
是指软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。
导题
eg: 蛋糕房提供蛋糕:
单机
软件系统封需要具备对外提供服务,单机,就是把岁哦有功能都实现在一个进程里,并部署在一台机器上。 优点 -简单 问题:C10K problem; 运维需要停服。
单体、垂直应用|垂直切分
单体架构:分布式部署 垂直应用架构:按应用垂直切分的单体
SOA、微服务|水平切分
Service-Oriented Architecture
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准 微服务架构:SOA的去中心化演进方向 问题:数据一致性;高可用;治理;解耦vs过微
小结: 演进初衷:需求量越来越大,越做越复杂 演进思路: 垂直切分,水平切分。
从单机架构->单体架构
企业级后端架构剖析
云计算
是指通过软件自动化管理,提供计算资源的服务网络。 基础: -虚拟化技术; 编排方案。 架构: Infrastructure aas、 Platform aas、 Software aaS、 Function aaS
云原生
在动态环境中,构建和运行可弹性拓展的应用。
云原生之弹性计算资源
- 服务资源调度
- 计算资源调度
- 消息队列
云原生之弹性存储资源
- 经典;关系型数据库;元数据; NoSQL
- 总结: 将存储资源当成服务一样
云原生之DervOps
结合自动化流程,提高软件开发、交付效率
云原生之微服务架构
- 通信协议: Http;RPC。 一般中间件框架会帮我们实现服务架构
云原生之服务网格
- 微服务之间通讯的中间层
- 高性能网络代理
- 业务代码与治理解耦
企业级后端架构的挑战
- 物理设施层面: 物理资源是有限的;资源利用率受限于部署服务。
- 用户层面: 网络通信开销较大,网络抖动导致运维成本提高。
离在线资源并池
- 核心收益: 降低物理资源成本;提供更多的弹性资源,增加收入。
- 在线业务的特点: 计算密集型占多数;非实时性。
自动扩缩容
引出一个问题? ->扩缩容依据什么指标?
微服务亲和性部署
- 将满足亲和性条件的容器调度到一台宿主机。
- 微服务中间件的作用
流量治理
核心收益: 提高微服务调用容错性、容灾、进一步提高开发效率,DevOps 发挥
CPU水位复杂均衡
Iaas: 提供资源探针
服务网格: 动态负载均衡
后端架构实战
关键点: 紧急回滚能力、大规模、 极端场景。
自适应动态权重
容器动态权重的自适应调整; 服务网格的服务发现& 流量调度能力