这是我参与【第五届青训营】伴学笔记创作活动的第十天。今天就写一下在青训营学的一些基础架构有关的理论知识。
后端开发之架构
什么是架构—定义
又称软件架构,是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。实现一个软件有很多种方法,架构在方法选择上起着至关重要的作用。
单机架构
优点:简单
缺点:运维需要停服、C10K probelm (不能支持多并发连接)
单体架构 + 垂直应用架构
优点:水平扩容、运维不需要停服
缺点:职责多,开发效率不高、爆炸半径大
SOA 架构 + 微服务架构
SOA:将应用的不同功能单元抽象为服务,定义服务之间的通信标准。
微服务:SOA 的去中心化演进方向。
问题
- 数据一致性
- 高可用(如何合作)
- 治理
- 解耦 vs 过微
企业级后端架构剖析
问题: 需要扩大规模,店面怎么盘,师傅怎么招,工作重心偏移等。
云计算
-
定义:是通过软件自动化管理,提供计算资源的服务网络,是现代互联网大规模数据分析和存储的基石。
-
基础:
- 虚拟化技术
- 编排方案
-
架构:
- IaaS ( 基础设施即服务 )
- PaaS (平台即服务)
- SaaS (软件即服务)
- Faas (功能服务化)
云原生
弹性计算资源
- 服务资源调度(微服务 vs 大服务)
- 计算资源调度 (在线 vs 离线)
- 消息队列 (在线 vs 离线)
弹性存储资源
- 经典资源(对象, 大数据)
- 关系数据库
- 元数据
- NoSQL
存储方法:将存储资源当成服务一样
DevOps
能结合自动化流程,提高软件开发、交付的效率。
微服务架构
微服务有关知识可以参考这篇文章: 【微服务 + RPC | 青训营笔记】 - 掘金 (juejin.cn)
通信标准:Http vs RPC
主要方案:交给框架,如 RPC 的 gRPC
服务网格(Service Mesh)
作用:微服务之间通讯的中间层,高性能网络代理,业务代码与治理解耦。
企业级后端架构的挑战
面临的问题
-
基础设施层面:
- 物理资源是有限的(机器 & 带宽)
- 资源利用率受制于部署服务
-
用户层面
- 网络通信开销较大
- 网络抖动运维成本增加
- 异构环境下,不同实例资源水位不均。
采取的措施
离在线资源并池
方案:根据潮汐性,对离线和在线资源进行分配,cpu分配实现隔离。
核心受益:降低物理资源成本、提供更多的弹性资源,增加收入。
自动扩缩容
方案:利用在线业务潮汐性自动扩缩容
核心受益:降低业务成本
微服务亲和性部署
方案:将满足亲和性条件的容器调度到一台宿主机上,微服务中间件与服务网格通过共享内存通信,动态流量调度。
核心受益:降低业务成本,提高服务可用性
流量治理
CPU水位负载均衡