C2-03-04-工作负载与运行机制与高频服务对比与决策
本篇是《C2-03-容器Serverless与应用运行平台》的第4个分篇,主要包含:工作负载与运行机制、高频服务对比与决策。
10-★★★★★-工作负载与运行机制
10.1-★★★★★-Workload
Workload,中文为:工作负载。
它是 AWS 文档和考试中极其常见的词。
不是“员工工作量”。
而是:
在计算系统中需要运行的一组应用、服务、任务和数据处理活动。
例如:Web Workload、Batch Workload、Database Workload、Container Workload、Machine Learning Workload。
选择 AWS 服务,本质上是在问:这个 Workload、需要什么运行模型?
10.2-Runtime-是什么?
Runtime,中文为:运行时 / 运行环境。
例如:Node.js Runtime、Java Runtime、Python Runtime、.NET Runtime。
Application Code 不能凭空执行。
它需要 Runtime。
在不同 Compute 抽象中:
EC2
你自己安装 Runtime
Container
Runtime 通常打进 Image
Lambda
使用 Lambda 支持的 Runtime 或自定义运行方式
10.3-Scheduling-是什么?
Scheduling,中文为:调度。
决定某个 Workload 应该在哪个计算资源上运行。
例如:
Task
│
▼
Scheduler
│
├── Node A:满
├── Node B:有资源
└── Node C:不满足条件
│
▼
Run on Node B
ECS / Kubernetes 都涉及 Scheduling。
题目如果强调:container scheduling、cluster management。
就已经进入 Container Orchestration 领域。
10.4-Scaling-在-Container-世界里有两层
10.4.1-第一层:Workload-Scaling
Product Tasks:
10
↓
100
也就是 Container / Pod 副本增加。
10.4.2-第二层:Compute-Capacity-Scaling
如果 Container 运行在 EC2:
EC2 Nodes:
3
↓
20
这是底层 Capacity 增加。
因此:Container 副本够不够 和 底层机器够不够 是两个不同问题。
Fargate 的价值之一就是让客户少操心第二层。
10.5-Container-的状态与数据
Container 经常被设计成:Disposable、Replaceable、Stateless-friendly。
即:
坏了
↓
重建一个
所以关键业务数据通常不应该只存在 Container 本地临时文件里。
更常见:
Container
│
├── S3
├── EFS
├── RDS
├── DynamoDB
└── ElastiCache
下一章 C2-04 会正式进入 Storage。
C2-05 会正式进入 Database / Cache。
11-★★★★★-高频服务对比与决策
11.1-ECR、S3-都能“存东西”,为什么不是一回事?
ECR:专门管理 Container Image。
S3:通用 Object Storage。
虽然 Container Image 底层也是一种数字数据,但架构语义不同。
题目写:Docker images、OCI images、container registry。
优先:ECR。
题目写:object storage、backup、static assets、data lake。
优先:S3。
11.2-ECS、EKS-与-Elastic-Beanstalk-的区别
| 服务 | 你主要提交什么 | 平台核心 |
|---|---|---|
| Elastic Beanstalk | Application Code / Application Package | Managed Web App Environment |
| ECS | Container Workload | AWS-native Container Orchestration |
| EKS | Kubernetes Workload | Managed Kubernetes |
| Lambda | Function Code | Serverless Function |
| Fargate | Container Resource Requirements | Serverless Container Compute |
注意:Elastic Beanstalk 与 ECS/EKS 都可能最终运行 Web Application。
但抽象和操作模型不同。
11.3-ECS、EKS-与-Batch-的区别
AWS Batch 已在 C2-02 介绍。
Batch 解决:大量 Job、排队、调度、自动获得 Compute、运行完成后退出。
ECS/EKS 解决更广义的:Container Orchestration。
AWS Batch 自身也可以利用 Container Compute。
因此:Batch、不等于、ECS。
但底层技术可以组合。
11.4-高频英文词汇
| 英文 | 中文 | 本章含义 |
|---|---|---|
| Container | 容器 | 隔离的应用运行环境 |
| Image | 镜像 | 创建 Container 的模板 |
| Registry | 镜像注册表 | 存储和分发 Image |
| Orchestration | 编排 | 管理大量 Container |
| Cluster | 集群 | 一组共同工作的计算资源 |
| Node | 节点 | Cluster 中的计算节点 |
| Task | 任务 | ECS 中的运行单元 |
| Task Definition | 任务定义 | ECS Task 的运行说明 |
| Service | 服务 | ECS 中维持长期 Task 的逻辑对象 |
| Pod | Pod | Kubernetes 的重要调度单位 |
| Runtime | 运行时 | 代码执行环境 |
| Scheduling | 调度 | 决定 Workload 在哪里运行 |
| Trigger | 触发器 | 触发 Lambda 的事件来源 |
| Invocation | 调用 | 一次 Function 执行 |
| Stateless | 无状态 | 不依赖单一实例本地状态 |
| Serverless | 无服务器 | 客户不直接管理服务器 |
| Workload | 工作负载 | 需要运行的应用/任务集合 |
11.5-高频服务选择决策树
我要运行应用
│
├── 需要完整虚拟服务器控制?
│ │
│ └── 是 → EC2
│
├── 已经 Containerized?
│ │
│ ├── Kubernetes?
│ │ └── 是 → EKS
│ │
│ └── AWS 原生容器编排
│ └── ECS
│
├── Container 不想管理底层 Server?
│ └── Fargate
│
├── Event-driven Function?
│ └── Lambda
│
└── 只是想快速部署常见 Web App Environment?
└── Elastic Beanstalk
注意:ECS/EKS、与、Fargate、不是互斥关系。
所以真正架构可能是:ECS + Fargate、EKS + Fargate。
11.6-最容易混淆的五组关系
11.6.1-ECR-vs-ECS
ECR 存 Image
ECS 运行 / 编排 Container
11.6.2-ECS-vs-EKS
ECS: AWS-native container orchestration
EKS: Managed Kubernetes
11.6.3-ECS-vs-Fargate
ECS: Orchestrator
Fargate: Compute
11.6.4-Lambda-vs-Fargate
Lambda: Function
Fargate: Container
11.6.5-EC2-vs-Container
EC2: Machine-level compute
Container: Application-level packaging/runtime
Container 可以运行在 EC2 上。
不是必须二选一。
11.7-719-题中常见的题目语言
看到下面这些词,应形成第一反应,但不要机械背答案。
11.7.1-Docker-/-Container
Docker、containerized application、container image、container orchestration、cluster、scheduling。
候选:ECR、ECS、EKS、Fargate。
11.7.2-Kubernetes
Kubernetes、K8s、managed Kubernetes。
候选:EKS。
11.7.3-不想管理-Container-Server
without managing servers、without managing EC2 cluster、serverless containers。
候选:Fargate。
11.7.4-Event-driven-Code
run code in response to events、without provisioning servers、event-driven、function。
候选:Lambda。
11.7.5-Container-Image-Repository
store Docker images、container registry、OCI image。
候选:ECR。
本篇概述
- 本篇梳理了工作负载与运行机制相关的核心知识、适用场景与判断要点。
- 本篇梳理了高频服务对比与决策相关的核心知识、适用场景与判断要点。