Skip to content

预计时间

1 周

学习目标

  • 理解核心云服务概念
  • 知道什么时候用云服务 vs 自建
  • 能看懂云架构图

一、为什么用云服务?

text
自建 vs 云服务:

自建 PostgreSQL:
  买服务器 → 装系统 → 装 PG → 配主从 → 设备份 → 监控
  磁盘满了 → 手动加盘 → 半夜宕机 → 爬起来重启

RDS(云托管 PostgreSQL):
  控制台点几下 → 5 分钟后数据库就绪
  自动备份、自动扩容、自动故障切换
  磁盘快满了 → 自动扩容或通知你
  半夜宕机 → 云厂商的运维在处理

一句话:自建是成本,云服务是投资。把运维精力省下来做业务。

二、核心服务对照

服务类型AWS阿里云腾讯云作用
计算EC2 / ECSECSCVM虚拟机
容器ECS / EKSACK (K8s)TKE (K8s)容器编排
对象存储S3OSSCOS存文件/图片
数据库RDSRDSTencentDB托管数据库
缓存ElastiCacheRedis 版Redis 版托管 Redis
CDNCloudFrontCDNCDN内容加速
DNSRoute 53DNSDNSPod域名解析
函数Lambda函数计算SCFServerless

三、ECS vs EC2

text
EC2(虚拟机):
  你要管:选机型、装系统、配安全组、SSH 进去部署
  适合:需要完全控制的场景

ECS(弹性容器服务):
  你只要:给 Docker 镜像,选 CPU/内存
  云厂商管:自动调度、自动扩容、多 AZ 高可用
  适合:用 Docker 的项目

对于你:ECS + Fargate(Serverless 容器)最简单
  不需要管服务器,只关心容器

四、RDS(托管数据库)

yaml
核心功能:
  自动备份        → 每天自动备份,保留 7-35 天
  时间点恢复      → 恢复到过去任意一秒
  只读副本        → 读压力大时加只读实例
  多 AZ 部署      → 主库故障自动切换到备库
  自动扩容        → 存储自动增长(有的需要手动)
  监控告警        → 连接数、慢查询、CPU、存储
text
选型建议:
  AI 知识库系统 → PostgreSQL(支持 pgvector)
  电商/交易系统 → MySQL(生态成熟)
  搜索引擎     → Elasticsearch Service
  缓存         → Redis(云厂商托管版)

五、S3 / OSS(对象存储)

text
存什么?
  - 用户上传的文档(PDF、图片)
  - 静态网站(打包好的 HTML/JS/CSS)
  - 日志归档

特性:
  - 无限容量(理论)
  - 11 个 9 的持久性(99.999999999%)
  - 版本控制(开启后误删可以恢复)
  - 生命周期策略(30 天后自动删,或转低频存储降低成本)
yaml
存储类型选择:
  Standard       → 频繁访问(贵)
  Infrequent     → 偶尔访问(便宜 40%)
  Archive        → 归档(极便宜,取回要等几小时)

生命周期规则示例:
  上传后 0-30 天   → Standard
  上传后 30-90 天  → Infrequent Access
  上传后 90+ 天    → Archive

预签名 URL

javascript
// 不把文件设为公开,而是生成临时下载链接
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
import { GetObjectCommand } from '@aws-sdk/client-s3';

async function getDownloadUrl(key) {
  const command = new GetObjectCommand({
    Bucket: 'my-bucket',
    Key: key,
  });
  // 生成 15 分钟有效的链接
  return getSignedUrl(s3, command, { expiresIn: 900 });
}

// 生成的 URL 类似:
// https://my-bucket.s3.amazonaws.com/doc-123.pdf
//   ?X-Amz-Algorithm=AWS4-HMAC-SHA256
//   &X-Amz-Credential=...
//   &X-Amz-Signature=...
//   &X-Amz-Expires=900

六、CDN(内容分发网络)

text
原理:
  源站(深圳)→ 内容推送到全球边缘节点
  用户访问 → 离他最近的节点响应

加速对象:
  ✅ 静态文件:JS、CSS、图片、字体、视频
  ❌ API 响应(动态内容,无法缓存)
  ❌ 用户个人数据

关键配置:
  Cache TTL — 缓存时间(静态文件设 1 年,HTML 设 5 分钟)
  回源策略 — CDN 缓存过期了怎么回源站取
  HTTPS — 开启 HTTPS,自动续签证书

七、典型 SaaS 云架构

text
用户请求

DNS (Route 53 / 云解析)

CDN (CloudFront / 全站加速)
  ├── 静态资源 → S3 / OSS
  └── API 请求 → ALB (应用负载均衡)

              ECS Fargate (容器)

              ┌─────┴─────┐
              ↓             ↓
         RDS (PG)    ElastiCache (Redis)

         S3 (文件存储)

         CloudWatch (日志 + 监控)

八、成本优化

text
1. 用预留实例(包年包月)代替按量付费 → 省 30-50%
2. S3 生命周期策略 → 老文件自动转低频存储
3. CDN 缓存率高 → 源站请求少 → 计算成本低
4. 用 Serverless (Lambda/Fargate) → 没有请求时不花钱
5. 设置预算告警 → 不收到天价账单

实践

  1. 注册一个云服务商(推荐 AWS 免费层或阿里云试用)
  2. 创建一个 RDS PostgreSQL 实例
  3. 创建一个 S3/OSS Bucket,上传文件试试
  4. 配置 CDN 加速你的静态网站