这是我参与「第五届青训营」伴学笔记创作活动的第10天。
2023.2.22
什么是架构
架构,又称软件架构,是有关软件整体结构与组件的抽象描述用于指导软件系统各个方面的设计,实现一个软件有很多种方法,架构在方法选择上起着至关重要的指导作用。
架构的重要性
地基没打好,大厦容易倒地基坚实了,大厦才能盖得高站在巨人肩膀上,才能看得远。
单机架构
软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上
- 优点:简单
- 问题:运维需要停服
垂直应用架构 | 垂直切分
垂直应用架构:按应用垂直切分的单体
- 优点:水平扩容运维不需要停服
- 问题:职责太多,开发效率不高爆炸半径大
SOA、微服务 | 水平切分
SOA(Service-0riented Architecture)
- 将应用的不同功能单元抽象为服务
- 2.定义服务之间的通信标准
微服务架构: SOA 的去中心化演进方向
问题:
- 数据一致性:装货台共交付了多少蛋糕?
- 高可用:这么多师傅,如何合作?
- 治理:烤箱坏了,怎么容灾?
- 解耦 vs 过微:运维成本高了,值当么?
企业级后端架构剖析
云计算
云计算:是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石
基础:
- 虚拟化技术 - 整租 vs 合租
- 编排方案 - 业主 vs 租赁平台
架构:
- laaS (Infrastructure as a Service) 买房子 vs 房屋租赁平台
- PaaS (Platform as a Service) 清包 vs 全包
- SaaS(Software as a Service) 从零培训 vs 雇佣培训过的师傅
- FaaS (Function as a Service) 纯手工制作 vs 蛋糕机批量生产
企业级后端架构的挑战
问题
挑战:
基础设施层面:
- 物理资源是有限的:机器、带宽
- 资源利用率受制于部署服务
用户层面:
- 网络通信开销较大
- 网络抖动导致运维成本提高
- 异构环境下,不同实例资源水位不均