这是我参与「第五届青训营」伴学笔记的第8天
架构演进
架构的演进就像做蛋糕
单机
软件系统需要具备对外提供服务,单机,就是把所有功能实现在一个系统内部;也就是一个师傅单干做蛋糕(从买到做一条龙全包)
缺点:运维需要停服
单体、垂直应用|垂直切分
单体架构:分布式部署;做蛋糕的师傅全部蛋糕类型都要会
垂直应用架构:按应用垂直切分的单体;做蛋糕的师傅只要会一类就好(这一类蛋糕包括做蛋糕的所有过程)
缺点:指责多,效率低,爆炸半径大
SOA、微服务|水平切分
SOA:将应用的不同功能单元抽象为服务,定义服务之间的通信标准;(烤、裱花等分人来做)
微服务架构:SOA的去中心化演进方向
企业级后端架构剖析
蛋糕店做大啦,现在面临人手不够,店面扩张以及未来规划的问题
云计算
**高级解释 **:通过软件自动化管理,提供计算资源的服务网络。
基础(类比做蛋糕):
- 虚拟化技术 - 整租 vs 合租
- 编排方案 - 业主 vs 租赁平台
架构(分四层): - laaS 买房子 vs 房屋租赁平台
- PaaS 清包(材料自己买,只顾装修公司来装修) vs 全包
- SaaS 从零培训 vs 雇佣培训过的师傅
- FaaS 纯手工制作 vs 蛋糕机批量生产
云原生
云原生技术为组织在公有云、自由云、混合云等新型的动态环境中,构建和运行可弹性拓展的应用提供了可能
弹性资源:虚拟化容器,快速扩缩容
- 弹性计算资源类型:
- 服务资源调度:
微服务:和面、雕花
大服务:烤箱 - 计算资源调度:
在线:热销榜单
离线:热销榜单更新 - 消息队列:
在线:削峰、解耦
离线:大数据分析
- 服务资源调度:
- 弹性存储资源类型:
- 经典:
- 对象:存储视频
- 大数据:用户消费记录
- 关系型数据库
- 收银记录
- 元数据
- NoSQL
总结:将存储资源当成服务一样
- 经典:
微服务架构
通信标准:
- HTTP(RESTful API)
- RPC(gRPC)
微服务中间件RPC vs HTTP: - 性能(RPC更好)
- 服务治理
- 协议可解释性(HTTP更好)
DevOps:敏捷开发,CI/CD
结合自动化流程,提高软件开发、交付效率,是一种工作流
服务网格:业务与治理解构
- 微服务之间通讯的中间层
- 高性能网络代理
- 业务代码与治理解耦
相比较于RPC/HTTP框架:
- 异构系统治理统一化
- 与业务进程解耦,生命周期易于管理
企业级后端架构的挑战
挑战
- 物理资源有限(机器、带宽)
- 资源利用率受制于部署服务
解决思路1:离在线资源并池
在线业务的特点:IO密集型为主,潮汐性、实时性
离线业务的特点:计算密集型为主,非实时性
解决思路2:自动扩缩容
扩缩容指标:看服务占据CPU和内存的大小
解决思路3:微服务亲和性部署
- 将满足亲和性条件的容器调度到一台宿主机
- 微服务中间件与服务网格通过共享内存通信
- 服务网格控制面实施灵活、动态的流量调度
用户层面
- 网络通信开销大
- 网络抖动导致运维成本高
- 异构环境下,不同实例资源水位不均