架构初探 | 青训营笔记

110 阅读4分钟

这是我参与「第五届青训营 」笔记创作活动的第 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

演进方向:微服务化;引入消息队列削峰、解耦;离在线链路切分;梳理强弱依赖

课后个人总结

本节课的重点是企业级后端剖析,难点是后端架构实战,老师注重讲解基础知识,剖析后端架构,层层带入。前面的知识都是基础知识,还是能够理解的,在讲解实战部分时,有点疑惑,根据给出的示意图也还能理解