这是我参与「第五届青训营 」笔记创作活动的第10天
什么是架构
-
单机架构: 所有功能实现在一个进程里,部署在一台机器上
-
优点:简单
-
缺点:
- C10K问题The C10K problem (kegel.com)
- 运维需要停服
-
垂直切分
-
单体架构: 分布式部署
-
垂直应用架构: 按应用垂直切分的单体
水平切分
-
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)
云计算可以让项目更注重业务方面的服务,而不需要过多关注业务背后的运行程序
云原生
弹性资源类型:
- 消息队列
- 在线:
- 消除短时访问数量的峰值(缓冲作用)
- 解耦合,用户只需要把信息发送到消息队列,不需要分析消息队列如何消费消息
- 离线:
- 大数据分析
- 在线:
- 服务资源调度:
- 微服务
- 大服务:占用资源较多的服务
- 计算资源调度:
- 在线
- 离线
- 关系数据库
- 元数据
- 服务发现
- NoSQL(非关系型的数据库)
- kv(key-value)方式存储数据,例如redis
DevOps:用于提高软件开发、交付的效率,贯穿整个软件开发周期
微服务架构:
- 通信标准:
- http
- rpc
服务网格(Serveice Mesh):
- 微服务之间的通讯的中间层
- 业务代码与治理解耦
- 高性能网络代理
相比于HTTP/RPC框架:
- 分离于业务进程之外
- 异构系统治理统一化
企业级后端架构遇到的挑战
- 基础设施
- 物理资源受限
- 带宽
- 机器
- 资源利用率受制于部署服务
- 物理资源受限
- 用户层面
- 网络通信开销大
- 网络抖动导致运维成本提高
- 异构环境下资源水位不同
资源水位不同的解决方案:离在线资源池合并
在线业务大多是IO密集型任务、具有潮汐性和实时性的特点;离线业务大多是计算密集型任务,不具有实时性
可以使用自动扩缩容的方式管理在线资源和离线资源的大小
微服务亲和性部署:
- 满足亲和性条件的调度到同一台宿主机中
- 微服务中间件和服务网格使用共享内存通信
- 服务网格控制面使用流量调度
CPU水位负载均衡: 增加一个资源探针,用来查看不同宿主机的CPU资源占用比率,调整流量,使得CPU占用率基本相平