这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
今日笔记内容: 架构初探-谁动了我的蛋糕
架构, 又称软件架构, 是指有关软件整体结构与组件的抽象描述, 用于指定软件系统各个方面的设计, 就像大厦的地基, 支撑着后续功能的开发.
蛋糕坊架构演进
- 如何做蛋糕: 亲力亲为
- 如何卖蛋糕: 亲力亲为, 边做边卖
单机架构: 系统所有功能都部署在一台机器上
- 优点: 简单
- 缺点: 无法突破性能瓶颈, 运维需要停机重启
垂直应用|垂直切分
引入大堂经理作为路由网关角色, 将用户请求根据负载均衡策略分流到后端服务中. 后端服务可以依据职责划分, 也可以根据请求直接划分
- 优点: 水平扩容, 运维不需要全部关闭机器
- 缺点: 职责太多, 开发效率不高
SOA, 微服务| 水平切分
![[Pasted image 20230201134456.png]]
SOA既Service-Oriented Architecture, 该架构包含两个关键思想
- 服务: 将应用不同独立的功能单元抽象为服务
- 通信标准: 定义服务间的接口, 接口携带的数据及编码格式 微服务架构为SOA的去中心化演进方向
云计算
云计算是指通过软件自动化管理, 提供计算资源的服务网络, 是现代互联网大规模服务, 计算和存储的基石.
基础:
- 虚拟化技术 - 整租/合租, 常用技术有硬件虚拟化(虚拟机), 操作系统虚拟化(容器技术), 网络虚拟化
- 编排方案 - 业主/租赁平台
架构:
- IaaS(Infrastructure as a Service): 基础设施既服务, 向租户直接提供操作系统, 硬盘等硬件资源
- PaaS(Platform as a Service): 平台既服务
- SaaS(Software as a Service): 软件既服务
- FaaS(Function as a Service): 函数既服务, 最低粒度的云计算资源, 每次调用一次函数作为一次服务
云原生
云原生技术是组织在公有云, 自由云, 混合云等新型动态环境中, 构建和运行可弹性扩展的应用技术栈.
![[Pasted image 20230201140513.png]]
弹性资源
计算资源:
- 服务资源调度
- 计算资源调度
- 消息队列 存储资源:
- 经典, 对象存储/大数据
- 关系型数据库: 收银记录
- 元数据: 服务发现
- NoSQL: KV
DevOps
DevOps是Developement+Operation两个单词的合成, 将传统的开发过程与软件交付过程结合, 通过自动化流程, 串联起了整个软件开发周期, 提升软件开发和交付的效率.
微服务架构
常见的通信标准有
- HTTP(RESTful API), 向外提供服务
- RPC(Thrift, Protobuf等), 服务间互相调用
服务网格
- 微服务之间通讯的中间层
- 高性能网络代理
- 业务代码与治理解耦
相对于RPC/HTTP框架的优势在于
- 异构系统治理统一化
- 与业务进程解耦, 生命周期易管理
![[Pasted image 20230201141833.png]]