这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记。 1.定义
软件架构,关于整体结构和组件的抽象描述——指导方法选择——地基
2.不同架构
(1)单体——垂直切分架构
(2)SOA(Service-Oriented Architecture)、微服务|水平切分
将不同的功能单元抽象为服务
定义服务之间的通信标准
3.架构分析
(1)云计算:通过软件自动化管理,提供计算资源的服务网络
架构:
IaaS(买房子 vs 房屋租赁平台)
PaaS(清包 vs 全包)
SaaS(从零培训 vs 培训过的师傅)
FaaS(纯手工 vs 蛋糕机批量生产)
(2)云原生
虚拟化技术的集合 (弹性资源、微服务架构、DevOps、服务网格)
微服务:通信标准(HHTP & RPC)
4.企业级后端挑战
(1)离在线资源并池(降低物理资源成本/提供更多弹性资源)
在线业务:IO密集型为主/潮汐性、实时性
离线业务:计算密集型占多数/非实时性
自动扩缩容:利用在线业务潮汐性自动扩缩容
Q1:同一个机器怎么做离在线隔离?
A:虚拟化/容器(Cgroup),对CPU核心做隔离
Q2:扩缩容依据什么指标?
A:对微服务,cpu是黄金指标,偶尔会根据需要结合内存,基于IO做扩缩很难
(2)微服务亲合性部署(降低业务成本/提高服务可用性)
a.将满足亲和性条件的容器调度到一台宿主机(比如有大量通信关系)
b.微服务中间件与服务网格通过共享内存通信
c.服务网格控制面实施灵活、动态的流量调度
(3)流量治理(提高微服务调用的容错性/容灾/进一步提高开发效率,DevOps发挥到极致)
熔断、重试/单元化/复杂环境的流量调度
(4)CPU水位负载均衡(打平异构环境算例差异/为自动扩缩容提供正向输入)
IaaS:提供资源探针
服务网格:动态负载均衡
5.后端架构实践
输入(紧急回滚能力/大规模/极端场景):
服务网格数据面:支持带权重的负载均衡策略
注册中心存储了所有容器的权重信息
宿主机提供:容器的资源使用情况/物理资源信息(如CPU型号)
(1)自适应静态权重
方案:采集宿主机物力资源信息/调整容器注册的权重
优势:复杂度低/完全分布式,可用性高/微服务中间件无适配成本
缺点:无禁忌回滚能力/缺乏运行时自适应能力
(2)自适应动态权重Alpha
方案:容器动态权重的自适应调整/服务网格的服务发现&流量调度能力
演进方向:解决无法紧急 回滚的问题/运行时权重自适应
缺点:过度流量倾斜可能会有异常情况
(3)自适应动态权重Beta
方案:服务网格上报RPC指标
演进方向:极端场景的处理成为可能
缺点:时序数据库压力较大/动态权重决策中心职责越来越多,迭代->变更->风险
(4)自适应动态权重Release
演进方向:微服务化/引入消息队列削峰、解耦/离在线链路切分/梳理强弱依赖