这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记
架构类型
-
单机架构
定义: 只有1个进程,部署在1个机器上。
问题:
- 运维需要停服
- 承载能力有限
-
单体架构
定义:只有1个进程,部署在多个机器上。
问题:
- 进程责任太大,变得臃肿
- 爆炸半径大,一个小模块的问题,可能会导致整个进程崩溃
-
垂直架构
定义:垂直切分,多个进程分工。
问题:没有根本解决单体架构的问题
-
面向服务架构 SOA
定义:在垂直架构的基础上,水平切分,将应用的不同单元抽象为服务,服务之间使用定义的通信标准通信,成为有先后顺序的流程。
问题:ESB (企业服务总线) 往往需要一整套解决方案
-
微服务架构
定义:在SOA架构的基础上,将服务细化为一组微服务。
问题:运维成本高
云计算和云原生
云计算
-
云计算基础
-
虚拟化技术
- 硬件层面(VM 虚拟机):KVM/Xen/VMware
- 操作系统层面(Container 容器): LCX/Docker/Kata Container
- 网络层面:Linux Bridge/Open v Switch
-
编排方案
- VM编排 - OpenStack/VMWare Workstation
- Container编排 - Kubernetes/Docker Swarm/Kata Container
-
-
云计算架构
-
云服务层次
- IaaS - 云基础设施,对底层硬件资源池的抽象
- PaaS - 基于资源池抽象,对上层提供的弹性资源平台
- SaaS - 基于弹性资源平台构建的云服务
- FaaS - 更轻量级的函数服务
-
云部署模式
- 私有云 - 企业自用
- 公有云 - AWS/Azure/Google Cloud/Huawei
- 混合云
-
云原生
-
弹性资源
-
弹性计算资源:
计算资源调度:
- 在线计算:互联网后端服务
- 离线计算:大数据分析。Map-Reduce/Spark/Flinnk
消息队列:
- 在线队列:削峰、解耦
- 离线队列:结合数据分析的一整套方案,如 ELK
-
弹性存储资源:
- 对象存储:视频、图片等。结合 CDN 等技术,可以为应用提供丰富的多媒体能力
- 大数据存储:应用日志、用户数据等。结合数据挖掘、机器学习等技术,提高应用的体验
- 元数据存储:服务发现等
- SQL数据库
- NoSQL数据库:Redis、MongoDB等
-
-
微服务架构
微服务架构下,服务之间的通讯标准是基于协议而不是 ESB 的。
- HTTP
- RPC:Apache Thrift/gRPC
HTTP和RPC的优劣:
- 性能:RPC 协议往往具备较好的压缩率,性能较高。如 Thrift, Protocol Buffers
- 服务治理:RPC 中间件往往集成了丰富的服务治理能力。如 熔断、降级、超时等
- 可解释性:HTTP 通信的协议往往首选 JSON,可解释性、可调试性更好
-
服务网格
概念:
- 是微服务之间通讯的中间层
- 一个高性能的 4 层网络代理
- 将流量层面的逻辑与业务进程解耦
服务网格相比较于 RPC/HTTP 框架:
- 实现了异构系统治理体验的统一化
- 服务网格的数据平面代理与业务进程采取进程间通信的模式,使得流量相关的逻辑(包含治理)与业务进程解耦,生命周期也更容易管理