概念
云计算是集合了大量技术设备和资源,对用户屏蔽底层差异的分布式处理架构,其用户与提供实际服务的计算资源是相分离的
优点
- 超大规模
- 虚拟化
- 高可靠性
- 高可伸缩性
- 按需服务
- 成本低
分类
| 类型 | 说明 |
|---|---|
| SaaS 软件即服务 | 基于多租户技术实现,直接提供应用环境 |
| PaaS 拼台即服务 | 虚拟中间件服务器、运行环境和操作系统 |
| IaaS 基础设施即服务 | 包括服务器,存储和网络等服务 |
云计算架构
云原生
基于分布部署和统一运管的分布式云,以容器、微服务 DevOps 等技术为基础建立的一套云技术产品体系
graph TB subgraph 用户访问层 A1[服务目录] A2[订阅管理] A3[服务访问] end subgraph 应用层 B1[企业应用] B2[个人应用] end subgraph 平台层 C1[中间件服务] C2[数据库服务] end subgraph 资源层 D1[计算] D2[网络] D3[存储] end subgraph 管理层 E1[安全] E2[监控] E3[部署] E4[服务治理] end A3 --> B1 B1 --> C1 C1 --> D1 E1 --- B1 E2 --- C1 E3 --- D1
云原生架构分层
一句话理解
通过资源层 + 平台层 + 应用层,实现服务化与弹性扩展,同时配套访问与管理能力
架构分层
横向
- 资源层(基础设施 )
- 平台层(中间件能力)
- 应用层(业务服务) 纵向
- 用户访问层
- 管理层
💻 我的技术栈映射
资源层:
- 云服务器 / Docker Host
平台层:
- Kubernetes
- Redis / Kafka
应用层:
- Spring Boot / .NET / Node
管理层:
- Prometheus + Grafana
- Jenkins / GitHub Actions
云原生架构设计原则
- 服务化原则:使用微服务
- 弹性原则:可根据业务变化自动伸缩
- 可观测原则:通过日志、链路追踪和度量
- 韧性原则:面对异常的抵御能力
- 所有过程自动化原则:自动化交付工具
- 零信任原则:默认不信任网络内部和外部的任何人
- 架构持续演进原则:业务高速迭代情况下的架构与业务平衡
云原生架构模式
- 服务化架构:微服务
- Mesh 化架构:把中间件框架(RPC、缓存、异步消息)从业务进程中分离,由 Mesh 进程完成
- Serverless 模式:非常适合于事件驱动的数据计算任务
- 存储技术分离模式:各类暂态数据(如 Session)用云服务保存
- 分布式事务模式:解决微服务模式中多数据源事务问题
- 可观测架构:包括 Logging、Tracing、Metrics 三个方面
- 事件驱动架构:本质上是一种应用/组件间的集成架构
Mesh模式和Serverless模式对比
| 维度 | Mesh | Serverless |
|---|---|---|
| 核心解决问题 | 微服务之间可靠高性能可观测的通信 | 开发者根本不想管服务器扩容运维 |
| 形态 | 一堆容器(K8s Pod) + 一个隐形的超级测车 | 完全看不到服务器,只有函数 |
| 部署单元 | 每个微服务一个 Pod + 一个 Envoy 测车 | 一个业务功能 = 一个函数 |
| 管理扩容缩容 | 自己写 HPA + 配置 lstio 流量 | 云厂商自动、毫秒级、精确到每次调用 |
| 重试/熔断/限流 | lstio 统一管理,全局策略 | 自己写在函数里/API 网关 + 函数组合 |
| 冷启动 | 没有 | 有 |
| 适合任务时长 | 常驻服务、长链接 | 短服务 |
| 运维难度 | 较高 | 较低 |
| 典型应用场 | 学员服务、订单服务、支付服务 | 作业自动批改等短服务 |
容器技术
Docker 容器基于操作系统虚拟化技术,共享操作系统内核、轻量、没有资源损耗、秒级启动,极大提升了系统的应用部署密度和弹性 Kubernetes 提供了分布式应用管理的核心能力
- 资源调度
- 应用部署与管理
- 自动修复
- 服务发现和负载均衡
- 弹性伸缩
- 声明式 API
- 可扩展性架构
- 可移植性
虚拟机与容器技术对比
| 虚拟机 | 容器 | |
|---|---|---|
| 镜像大小 | 包含 GuestOs,G 量级 | 仅包含运行的 Bin/Lib,M 量级 |
| 资源 | CPU 与内存按核,按 G 分配 | CPU 与内存按单核、低于 G 量级 |
| 启动时间 | 分钟级 | 毫秒级 |
| 可持续性 | 跨物理机迁移 | 跨操作系统平台迁移 |
| 弹性伸缩 | VM 伸缩,CPU/内存手动 | 实例自动 |
| 隔离策略 | 操作系统 | 进程 |