这是我参与「第五届青训营 」伴学笔记创作活动的第9天。
一、课程目标
- 什么是架构
- 企业级后端架构剖析
- 企业级后端架构的挑战
- 后端架构实战
二、课程内容
1、架构的定义
- 软件架构是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计
- 实现一个软件有很多种方法,架构在方法选择上起着至关重要的指导作用
1.1 单机架构
- 把所有功能都实现在一个进程里,并部署在一台机器上。
- 优点:简单
- 问题:运维需要停服、c10k problem(服务能力瓶颈)
1.2 单体、垂直应用、垂直切分
- 单体架构:分布式部署
- 垂直应用架构:按应用垂直切分的单体
- 优点:水平扩容、运维不需要停服
- 问题:职责太多,开发效率不高;爆炸半径大
1.3 SOA(Service-Oriented Architecture)、微服务、水平切分
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标注
- 问题:数据一致性、高可用、治理、解耦 VS 过微
2、企业级后端架构剖析
2.1 云计算
- 通过软件自动化管理,提供计算资源的服务网络。
- 架构
- IaaS(Infrastructure as a Service) 买房子 vs 房屋租赁平台
- PaaS(Platform as a Service) 清包 vs 全包
- SaaS(Software as a Service) 从零培训 vs 雇佣过的师傅
- FaaS(Function as a Service) 纯手工 vs 蛋糕机批量生产
2.2 云原生
- 为组织(公司)在公有云、自由云、混合云等虚拟化技术环境中构建和运行可弹性拓展的应用。
- 弹性计算资源
- 服务资源调度:微服务(和面、雕花)、大服务(烤箱)
- 计算资源调度:在线(热销榜单)、离线(热销榜单更新)
- 消息队列:在线(削峰、解耦)、离线(大数据分析)
- 弹性存储资源
- 关系型数据库、元数据、经典。
- 将存储资源当成服务一样
- Devops是云原生时代软件交付的利器,贯穿整个软件开发周期。
- 设计、开发、测试、上线、调优/重构
- 微服务架构
- 通信标准:HTTP、RPC
- 微服务中间件
3、企业级后端架构的挑战
- 基础设施:
- 物理资源有限、带宽有限
- 资源利用率受制于部署服务
- 用户层面:
- 网络通信
- 网络抖动导致运维成本提高
- 异构环境下,不同实例资源水位不均
- 自动扩缩容
三、其他
企业级后端架构挑战与实践案例有些抽象。