185 lines
7.0 KiB
Markdown
185 lines
7.0 KiB
Markdown
|
|
# 第4天:AWS 全球基础设施——你的数据存在哪里
|
|||
|
|
|
|||
|
|
## 今天你将学到什么
|
|||
|
|
|
|||
|
|
今天我们来看 AWS 在全球的"地盘"是怎么布局的。这不是纯理论——它直接决定了:
|
|||
|
|
- 你的用户访问速度快不快
|
|||
|
|
- 你的系统能不能扛住灾难
|
|||
|
|
- 你的数据是否满足法律要求
|
|||
|
|
|
|||
|
|
学完今天,你会明白 Region、可用区、边缘节点这三个概念,以及怎么选择它们。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 先想一个问题
|
|||
|
|
|
|||
|
|
假设你在北京开了一家网店,服务器放在北京。那么:
|
|||
|
|
- 北京的用户访问你的网站:很快(几十毫秒)
|
|||
|
|
- 上海的用户访问:还行(稍微慢一点)
|
|||
|
|
- 美国的用户访问:很慢(数据要跨越太平洋,几百毫秒)
|
|||
|
|
|
|||
|
|
如果你想让全球用户都快,怎么办?**在全球多个地方都放服务器。**
|
|||
|
|
|
|||
|
|
这就是 AWS 全球基础设施要解决的问题。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 三层结构:Region → 可用区 → 边缘节点
|
|||
|
|
|
|||
|
|
想象一个连锁酒店品牌:
|
|||
|
|
|
|||
|
|
- **Region(区域)** = 酒店在不同城市的分店(北京店、上海店、东京店)
|
|||
|
|
- **可用区(AZ)** = 同一城市内的多个酒店大楼(北京朝阳店、北京海淀店)
|
|||
|
|
- **边缘节点(Edge Location)** = 散布在各处的快递柜(方便就近取件)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Region(区域)
|
|||
|
|
|
|||
|
|
Region 是 AWS 在全球某个地理位置的一组数据中心集群。
|
|||
|
|
|
|||
|
|
截至 2024 年,AWS 在全球有 **33 个 Region**,分布在美洲、欧洲、亚太、中东、非洲。
|
|||
|
|
|
|||
|
|
**Region 的命名规则**:`地区-方位-编号`
|
|||
|
|
|
|||
|
|
举几个例子:
|
|||
|
|
| 代号 | 位置 | 常用场景 |
|
|||
|
|
|------|------|----------|
|
|||
|
|
| us-east-1 | 美国东部(弗吉尼亚) | AWS 最老最全的区域,新服务最先上线 |
|
|||
|
|
| ap-northeast-1 | 亚太(东京) | 服务日本和东亚用户 |
|
|||
|
|
| ap-southeast-1 | 亚太(新加坡) | 服务东南亚用户 |
|
|||
|
|
| eu-west-1 | 欧洲(爱尔兰) | 服务欧洲用户 |
|
|||
|
|
| cn-north-1 | 中国(北京) | 中国大陆用户(独立运营) |
|
|||
|
|
|
|||
|
|
**每个 Region 是完全独立的**:
|
|||
|
|
- 数据不会自动从一个 Region 跑到另一个 Region
|
|||
|
|
- 你在东京创建的服务器,在弗吉尼亚是看不到的
|
|||
|
|
- 这是为了数据主权——你的数据留在你选择的地方
|
|||
|
|
|
|||
|
|
### 选 Region 要考虑什么?
|
|||
|
|
|
|||
|
|
**举个例子**:你要做一个面向中国用户的电商网站。
|
|||
|
|
|
|||
|
|
| 考虑因素 | 分析 | 结论 |
|
|||
|
|
|----------|------|------|
|
|||
|
|
| 用户在哪 | 用户在中国 | 选中国区域或离中国近的(东京、新加坡) |
|
|||
|
|
| 法律要求 | 中国法律要求某些数据存储在境内 | 必须选 cn-north-1 或 cn-northwest-1 |
|
|||
|
|
| 服务可用性 | 某些新服务可能还没在中国区上线 | 需要确认你要用的服务是否可用 |
|
|||
|
|
| 价格 | 不同 Region 价格不同 | 弗吉尼亚最便宜,亚太和南美较贵 |
|
|||
|
|
|
|||
|
|
**小贴士**:如果没有特殊要求,学习阶段建议用 `us-east-1`(弗吉尼亚),因为它服务最全、价格最低、教程最多。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 可用区(Availability Zone,简称 AZ)
|
|||
|
|
|
|||
|
|
每个 Region 里面有 **3 个或更多可用区**。每个可用区是一个或多个独立的数据中心。
|
|||
|
|
|
|||
|
|
**为什么一个 Region 要有多个可用区?**
|
|||
|
|
|
|||
|
|
用一个故事来解释:
|
|||
|
|
|
|||
|
|
假设你开了一家面包店,所有的烤箱都在同一栋楼里。如果这栋楼停电了、着火了、或者被水淹了,你的整个生意就停了。
|
|||
|
|
|
|||
|
|
但如果你在同一个城市的不同地方开了 3 家分店,每家都能独立运营。即使一家店出了问题,另外两家还能继续卖面包。
|
|||
|
|
|
|||
|
|
**可用区就是这个道理**:
|
|||
|
|
|
|||
|
|
- 每个 AZ 有独立的电力供应(不同的变电站)
|
|||
|
|
- 每个 AZ 有独立的网络连接
|
|||
|
|
- 每个 AZ 有独立的制冷系统
|
|||
|
|
- AZ 之间物理距离足够远(通常几十公里),避免同一场自然灾害同时影响多个 AZ
|
|||
|
|
- 但 AZ 之间通过高速专用光纤连接,延迟极低(< 2 毫秒)
|
|||
|
|
|
|||
|
|
**这意味着什么?**
|
|||
|
|
|
|||
|
|
如果你把应用部署在同一个 Region 的 2-3 个 AZ 中,即使一个数据中心完全瘫痪(火灾、地震、断电),你的服务依然正常运行。用户甚至感觉不到。
|
|||
|
|
|
|||
|
|
**这就是 AWS 高可用架构的基石。**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 边缘节点(Edge Location)
|
|||
|
|
|
|||
|
|
AWS 在全球有 **600 多个边缘节点**,分布在各大城市。
|
|||
|
|
|
|||
|
|
**边缘节点是干什么的?**
|
|||
|
|
|
|||
|
|
还是用例子说明:
|
|||
|
|
|
|||
|
|
你在东京有一台服务器,上面放着你网站的图片和视频。一个巴西的用户要看你的网站,数据要从东京传到巴西,跨越半个地球,需要 200-300 毫秒。
|
|||
|
|
|
|||
|
|
但如果你把这些图片和视频提前"复制"一份到巴西的边缘节点,巴西用户直接从本地的边缘节点获取,只需要 10-20 毫秒。
|
|||
|
|
|
|||
|
|
**边缘节点主要服务于**:
|
|||
|
|
- **CloudFront(CDN)**:缓存网站的静态内容(图片、视频、CSS、JS),让全球用户就近获取
|
|||
|
|
- **Route 53(DNS)**:就近解析域名,加快网站打开速度
|
|||
|
|
- **AWS WAF**:在边缘拦截恶意攻击,坏流量根本到不了你的服务器
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 三者的关系总结
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
全球
|
|||
|
|
├── Region: 美国东部 (us-east-1)
|
|||
|
|
│ ├── 可用区 A (us-east-1a) — 数据中心群 1
|
|||
|
|
│ ├── 可用区 B (us-east-1b) — 数据中心群 2
|
|||
|
|
│ ├── 可用区 C (us-east-1c) — 数据中心群 3
|
|||
|
|
│ └── ...更多 AZ
|
|||
|
|
├── Region: 亚太东京 (ap-northeast-1)
|
|||
|
|
│ ├── 可用区 A
|
|||
|
|
│ ├── 可用区 B
|
|||
|
|
│ └── 可用区 C
|
|||
|
|
├── ...更多 Region
|
|||
|
|
│
|
|||
|
|
└── 边缘节点(600+,遍布全球各大城市)
|
|||
|
|
├── 北京
|
|||
|
|
├── 上海
|
|||
|
|
├── 东京
|
|||
|
|
├── 纽约
|
|||
|
|
├── 伦敦
|
|||
|
|
└── ...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**记住一个口诀**:
|
|||
|
|
- **用 AZ 实现高可用**(一个机房挂了,另一个顶上)
|
|||
|
|
- **用 Region 实现灾难恢复**(一个地区出大问题,切换到另一个地区)
|
|||
|
|
- **用边缘节点实现低延迟**(内容推到用户身边)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 一个真实的故障案例
|
|||
|
|
|
|||
|
|
2017 年 2 月 28 日,AWS 美国东部(us-east-1)的 S3 存储服务发生了大规模故障,持续约 4 小时。
|
|||
|
|
|
|||
|
|
受影响的知名服务包括:Slack、Trello、Quora,甚至 AWS 自己的状态页面都挂了(因为状态页面也托管在 S3 上)。
|
|||
|
|
|
|||
|
|
**教训**:
|
|||
|
|
- 即使是 AWS 自己的服务也会出故障
|
|||
|
|
- 不要把所有东西都放在一个 Region
|
|||
|
|
- 关键业务要考虑多 Region 部署
|
|||
|
|
- 你的架构要能容忍底层服务的故障
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 今天的小测验
|
|||
|
|
|
|||
|
|
1. 如果你的用户主要在日本,应该选哪个 Region?
|
|||
|
|
2. 为什么一个 Region 要有多个可用区?用你自己的话解释。
|
|||
|
|
3. 边缘节点和 Region 有什么区别?它们各自解决什么问题?
|
|||
|
|
4. 如果你只把应用部署在一个可用区,会有什么风险?
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 延伸阅读
|
|||
|
|
|
|||
|
|
- [AWS 全球基础设施地图(可交互)](https://aws.amazon.com/about-aws/global-infrastructure/)
|
|||
|
|
- [AWS 2017 年 S3 故障复盘报告](https://aws.amazon.com/message/41926/)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 明天预告
|
|||
|
|
|
|||
|
|
明天我们动手了!注册 AWS 账户、设置安全保护、配置账单告警。正式踏入 AWS 的大门。我会一步步带你操作,确保你不会踩坑(尤其是不会被意外扣费)。
|