148 lines
4.8 KiB
Markdown
148 lines
4.8 KiB
Markdown
|
|
# 第17天:Route 53 与 CloudFront——DNS 和全球加速
|
|||
|
|
|
|||
|
|
## 今天你将学到什么
|
|||
|
|
|
|||
|
|
今天学两个让你的网站"又快又稳"的服务:Route 53(DNS)负责把域名翻译成 IP 地址,CloudFront(CDN)负责把内容推到全球用户身边。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Route 53:互联网的"电话簿"
|
|||
|
|
|
|||
|
|
### DNS 是什么
|
|||
|
|
|
|||
|
|
当你在浏览器输入 `www.taobao.com` 时,电脑其实不认识这个名字。它需要先查"电话簿"(DNS),找到这个名字对应的 IP 地址(比如 140.205.220.96),然后才能连接到服务器。
|
|||
|
|
|
|||
|
|
**Route 53 就是 AWS 提供的 DNS 服务**——帮你管理域名和 IP 地址的对应关系。
|
|||
|
|
|
|||
|
|
名字来源:DNS 使用的网络端口号是 53。
|
|||
|
|
|
|||
|
|
### Route 53 能做什么
|
|||
|
|
|
|||
|
|
**基本功能**:域名解析
|
|||
|
|
- `www.example.com` → `54.23.100.50`(你的服务器 IP)
|
|||
|
|
|
|||
|
|
**高级功能**:智能路由(这才是 Route 53 的真正价值)
|
|||
|
|
|
|||
|
|
### 路由策略——把用户导向最合适的服务器
|
|||
|
|
|
|||
|
|
**简单路由**:一个域名对应一个 IP。最基本的用法。
|
|||
|
|
|
|||
|
|
**加权路由**:按比例分配流量。
|
|||
|
|
- 例:90% 的流量到旧版本,10% 到新版本(用于灰度发布)
|
|||
|
|
|
|||
|
|
**延迟路由**:把用户导向延迟最低的服务器。
|
|||
|
|
- 例:日本用户自动访问东京的服务器,美国用户自动访问弗吉尼亚的服务器
|
|||
|
|
|
|||
|
|
**故障转移路由**:主站挂了自动切到备用站。
|
|||
|
|
- 例:主服务器在东京,如果东京挂了,自动切换到新加坡的备用服务器
|
|||
|
|
|
|||
|
|
**地理位置路由**:根据用户所在国家/地区路由。
|
|||
|
|
- 例:中国用户访问中文站点,美国用户访问英文站点
|
|||
|
|
|
|||
|
|
### 健康检查
|
|||
|
|
|
|||
|
|
Route 53 会定期检查你的服务器是否正常:
|
|||
|
|
- 每 30 秒发一个请求到你的服务器
|
|||
|
|
- 如果连续几次没响应,标记为"不健康"
|
|||
|
|
- 自动把流量切到健康的服务器
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## CloudFront:把内容推到用户身边
|
|||
|
|
|
|||
|
|
### CDN 是什么
|
|||
|
|
|
|||
|
|
CDN(Content Delivery Network,内容分发网络)的原理很简单:
|
|||
|
|
|
|||
|
|
**没有 CDN**:
|
|||
|
|
- 你的服务器在东京
|
|||
|
|
- 巴西用户访问你的网站
|
|||
|
|
- 数据从东京传到巴西,跨越半个地球,需要 300 毫秒
|
|||
|
|
|
|||
|
|
**有 CDN**:
|
|||
|
|
- 你的内容被"复制"到全球各地的节点
|
|||
|
|
- 巴西用户访问时,从巴西本地的节点获取
|
|||
|
|
- 只需要 20 毫秒
|
|||
|
|
|
|||
|
|
**生活类比**:
|
|||
|
|
- 没有 CDN = 所有人都要去总部取货(远的人等很久)
|
|||
|
|
- 有 CDN = 在各个城市设了分仓,就近取货(大家都快)
|
|||
|
|
|
|||
|
|
### CloudFront 的工作流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
用户(巴西)发起请求
|
|||
|
|
↓
|
|||
|
|
请求到达最近的边缘节点(圣保罗)
|
|||
|
|
↓
|
|||
|
|
边缘节点有缓存?
|
|||
|
|
├── 有 → 直接返回(超快,10-20ms)
|
|||
|
|
└── 没有 → 去源站(东京)取 → 缓存一份 → 返回给用户
|
|||
|
|
下次其他巴西用户请求同样内容时,直接从缓存返回
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### CloudFront 能加速什么
|
|||
|
|
|
|||
|
|
| 内容类型 | 例子 | 缓存效果 |
|
|||
|
|
|----------|------|----------|
|
|||
|
|
| 静态文件 | 图片、CSS、JS、字体 | 非常好(内容不变,缓存命中率高) |
|
|||
|
|
| 视频 | 课程视频、直播回放 | 很好 |
|
|||
|
|
| API 响应 | 不经常变化的数据 | 一般(需要设置合理的缓存时间) |
|
|||
|
|
| 动态内容 | 用户个人数据 | 不缓存(每次都回源) |
|
|||
|
|
|
|||
|
|
### CloudFront + S3:最经典的组合
|
|||
|
|
|
|||
|
|
这是部署静态网站最便宜、最快的方案:
|
|||
|
|
|
|||
|
|
1. 把网站文件(HTML/CSS/JS/图片)放在 S3 桶里
|
|||
|
|
2. 创建 CloudFront 分发,源设置为 S3 桶
|
|||
|
|
3. 用 Route 53 把域名指向 CloudFront
|
|||
|
|
4. 用 ACM(AWS Certificate Manager)申请免费的 HTTPS 证书
|
|||
|
|
|
|||
|
|
**结果**:
|
|||
|
|
- 全球访问速度极快(600+ 个边缘节点)
|
|||
|
|
- 成本极低(S3 存储 + CloudFront 流量,每月可能只要几美元)
|
|||
|
|
- 自动 HTTPS
|
|||
|
|
- 能扛住巨大流量(CDN 天然就是分布式的)
|
|||
|
|
|
|||
|
|
适合:个人博客、公司官网、单页应用(React/Vue)、文档站点
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Route 53 + CloudFront 配合使用
|
|||
|
|
|
|||
|
|
一个全球化网站的典型架构:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
用户输入 www.example.com
|
|||
|
|
↓
|
|||
|
|
Route 53 解析域名 → 返回 CloudFront 的地址
|
|||
|
|
↓
|
|||
|
|
用户请求到达最近的 CloudFront 边缘节点
|
|||
|
|
↓
|
|||
|
|
├── 静态内容(图片/JS/CSS)→ 边缘节点直接返回(缓存)
|
|||
|
|
└── 动态内容(API 请求)→ 转发到源站(ALB/EC2)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 今天的小测验
|
|||
|
|
|
|||
|
|
1. DNS 的作用是什么?用你自己的话解释。
|
|||
|
|
2. Route 53 的"延迟路由"是什么意思?举一个使用场景。
|
|||
|
|
3. CDN 为什么能让网站变快?它的核心原理是什么?
|
|||
|
|
4. CloudFront + S3 的组合适合什么类型的网站?
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 延伸阅读
|
|||
|
|
|
|||
|
|
- [Route 53 开发者指南](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/)
|
|||
|
|
- [CloudFront 开发者指南](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 明天预告
|
|||
|
|
|
|||
|
|
明天学习 SQS 和 SNS——消息队列和通知服务。它们让系统的各个部分"松耦合"通信,是构建可靠分布式系统的基石。
|