云计算服务
计算服务对比
| 服务类型 | 代表 | 管理粒度 | 适用场景 |
|---|---|---|---|
| 虚拟机 | EC2、ECS | OS 级 | 传统应用、数据库 |
| 容器服务 | EKS、ACK | 容器级 | 微服务、CI/CD |
| Serverless 容器 | Fargate、ACI | 容器级(无节点) | 不想管节点 |
| 函数计算 | Lambda、FC | 函数级 | 事件驱动、轻量 API |
弹性伸缩(Auto Scaling)
ASG 配置(Terraform)
asg.tf
resource "aws_autoscaling_group" "web" {
name = "web-asg"
min_size = 2
max_size = 10
desired_capacity = 2
vpc_zone_identifier = aws_subnet.private[*].id
target_group_arns = [aws_lb_target_group.web.arn]
launch_template {
id = aws_launch_template.web.id
version = "$Latest"
}
tag {
key = "Name"
value = "web-asg"
propagate_at_launch = true
}
}
# 目标追踪策略:保持 CPU 50%
resource "aws_autoscaling_policy" "cpu" {
name = "cpu-target-tracking"
autoscaling_group_name = aws_autoscaling_group.web.name
policy_type = "TargetTrackingScaling"
target_tracking_configuration {
predefined_metric_specification {
predefined_metric_type = "ASGAverageCPUUtilization"
}
target_value = 50.0
}
}
Serverless(Lambda / 云函数)
lambda_function.py
import json
import boto3
def handler(event, context):
# 事件触发:API Gateway / S3 / SQS / 定时器
body = json.loads(event.get('body', '{}'))
# 处理业务逻辑
result = process_order(body)
return {
'statusCode': 200,
'body': json.dumps(result)
}
适用 vs 不适用
| ✅ 适用 | ❌ 不适用 |
|---|---|
| API 接口(低频) | 高并发长连接(WebSocket) |
| 定时任务(Cron) | 需要持久化状态 |
| 事件处理(S3/SQS 触发) | 启动时间敏感(冷启动问题) |
| 数据转换管道 | 大内存 / 长时间计算 |
成本优化
| 策略 | 说明 | 节省 |
|---|---|---|
| 预留实例(RI) | 1-3 年承诺 | 30-60% |
| Savings Plans | 承诺每小时消费额 | 20-50% |
| Spot 实例 | 竞价实例,可被回收 | 60-90% |
| 自动伸缩 | 低峰期缩容 | 按需 |
| 合适实例类型 | 定期 right-sizing | 10-30% |
常见面试问题
Q1: Serverless 的优缺点?
答案:
优点:无需管理服务器、按用量计费、自动伸缩、免运维
缺点:冷启动延迟(首次调用 100ms-数秒)、执行时间限制(Lambda 15min)、调试困难、厂商锁定
Q2: 什么时候用 Spot 实例?
答案:
Spot 实例便宜 60-90%,但会被随时回收(2 分钟通知)。适合:
- 无状态服务:Web 服务配合 ASG,回收后自动补充
- 批处理/大数据:Spark/Hadoop Worker 节点
- CI/CD 构建:构建任务可重试
不适合:数据库(有状态)、单实例服务(无冗余)。