这是我参与「第五届青训营 」笔记创作活动的第 7 天
本节课重点:企业级后端架构剖析
本节课难点:后端架构实战
1、架构(软件架构)
有关软件整体结构与组件的抽象描述
用于指导软件系统各个方面的设计
1.1 问题背景
兰师傅的蛋糕店:
亲自做
边做边卖
1.2 单机
把所有功能都实现在一个进程里,并部署在一台机器上
优点:简单
缺点:运维需要停服
1.3 单体、垂直应用|垂直切分
单体架构:分布式部署 垂直应用架构:按应用垂直切分的单体
优点:水平扩容、运维不需要停服
缺点:职责太多、效率低;爆炸半径大
1.4 SOA、微服务|水平切分
SOA(面向服务架构,Service-Oriented Architecture):将应用的不同功能单元抽象为服务;定义服务之间的通信标准
微服务架构:SOA的去中心化演进方向
2、企业级后端架构剖析
2.1 问题背景
兰师傅蛋糕店经过发展,需要扩大规模:(架构)
买/租店面(IaaS)
招师傅/自家人(PaaS)
是否纯手工制作(SaaS)
精进蛋糕制作收益/重点方向梳理、未来规划(FaaS)
2.2 云计算
指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石
2.3 云原生
弹性资源(虚拟化容器、快速扩缩容);微服务架构(业务功能单元解耦、统一通信标准);DevOps(敏捷开发、CVCD);服务网格(业务与治理解构、异构系统的治理统一化、复杂治理能力)
3、企业级后端架构的挑战
基础设施:有限的物理资源;资源利用率受制于部署服务
用户层面:网络通信开销较大;网络抖动导致运维成本提高;异构环境下,不同实例资源水位不均
3.1 离在线资源并池
降低物理资源成本、提供更多弹性资源
3.2 自动扩缩容
降低业务成本。利用在线业务潮汐性自动扩缩容
3.3 微服务亲合性部署
降低业务成本、提高服务可用性 将满足亲合性条件的容器调度到一台宿主机,微服务中间件与服务网格通过共享内存通信、服务网格控制面实施灵活、动态的流量调度
3.4 流量治理
提高微服务调用容错性;容灾;进一步提高开发效率
3.5 CPU水位负载均衡
打平异构环境算力差异;为自动扩缩容提供正向输入
4、后端架构实战-问题背景
兰师傅的蛋糕店:
不同师傅干活的效率差距较大
有些师傅希望【能者多劳多挣】
在这个背景下,继续像之前一样为每个师傅分配完全相同的工作,会引起不满
引出问题:CPU水位负载均衡,应该如何设计?
1、需要哪些输入?
2、需要考虑哪些关键点?
输入:服务网格数据面支持带权重的负载均衡策略;注册中心存储所有容器权重信息;宿主机提供容器资源使用情况,物理资源信息
关键点:紧急回滚能力;大规模;极端场景
4.1 自适应静态权重
方案:采集宿主机物理资源信息;调整容器注册的权重
优点:复杂度低;完全分布式、可用性高;微服务中间件无适配成本
缺点:无紧急回滚能力;缺乏运行时自适应能力
4.2 自适应动态权重 Alpha
方案:容器动态权重的自适应调整;服务网格的服务发现、流量调度能力
演进方向:解决无法紧急回滚的问题;运行时权重自适应
缺点:过度流量倾斜可能会导致异常
4.3 自适应动态权重 Beta
方案:服务网格上报RPC指标
演进方向:极端场景处理成为可能
缺点:时序数据库压力较大;动态权重决策中心职责越来越多,迭代->变更->风险
4.4 自适应动态权重 Release
演进方向:微服务化;引入消息队列削峰、解耦;离在线链路切分;梳理强弱依赖
课后个人总结
本节课的重点是企业级后端剖析,难点是后端架构实战,老师注重讲解基础知识,剖析后端架构,层层带入。前面的知识都是基础知识,还是能够理解的,在讲解实战部分时,有点疑惑,根据给出的示意图也还能理解