这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
架构初探 - 谁动了我的蛋糕
软件架构
是有关软件整体结构与组件的抽象描述。
用于指导软件系统各个方面的设计。
SOA(Service-0riented Architecture)
- 将应用的不同功能单元抽象为服务
- 定义服务之间的通信标准
进一步去中心化演进成微服务架构,
问题:
数据一致性,高可用,容错率,解耦 vs 过微。
企业级后端架构剖析
-
云计算:是指通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模熟悉分析和存储的基石。
-
云原生:构建和运行可弹性拓展的应用。
-
弹性计算资源类型:
服务资源调度:微服务:和面雕花,大服务:烤箱。
计算资源调度:在线:热销榜单,离线:热销榜单更新。
消息队列:在线:削峰和解耦,离线:大数据分析。
经典:对象:宣传视频,大数据:用户消费记录
关系型数据库:收银记录
元数据:服务发现: 蛋糕店通讯录
NoSQL:KV:来个 xx 蛋糕 -
DevOps
结合自动化流程,提高软件开发、交付效率
企业级后端架构挑战
基础设施层面:
- 物理资源是有限的
- 资源利用率受制于部署服务 用户层面:
- 网络通信开销较大
- 网络抖动导致运维成本提高
- 异构环境下,不同实例资源水位不均
解决思路:
- 自动扩缩容
- 微服务亲和性部署
- CPU水位负载均衡
后端架构实战
-
输入
服务网格数据面,支持带权重的负载均衡策略
注册中心存储了所有容器的权重信息
宿主机能提供,容器的资源使用情况,物理资源信息(如 CPU 型号) -
关键点
紧急回滚能力
大规模
极端场景 -
方案
采集宿主机物理资源信息
调整容器注册的权重
优势:复杂度低,完全分布式,可用性高,微服务中间件无适配成本
缺点:无紧急回滚能力,缺乏运行时自适应能力
课后作业
兰师傅蛋糕房要支持线上售卖了! 请帮忙做整套系统的架构设计,需求:
- 多端支持:微信/支付宝小程序,App,网页。
- 使用云原生基础设施。
- 用户画像很重要。
- 积极参加妇女节/光棍节等活动。
注: 不需要考虑与做蛋糕相关服务的交互