AWS 学习笔记之 SQS/SWF/SNS 等
SQS - Simple Queue Service
SQS 是 AWS 的消息队列服务,用于暂存消息并等待接收者处理。
- 不保证 FIFO,可能乱序到达
- Visibility Timeout 最长 12 小时
- 保证每条消息至少被传递一次(At least once),这意味着某些情况下可能传递多次,所以你写程序的时候要注意处理重复的消息
- 每条消息最大 256 KB
- 然而,依据 64 KB 的 Chunk 数量计费
- 所以一个 256 KB 的消息可能产生 4 次费用:4 * 64 KB chunks
- SQS 的消息没有优先级;如果你需要优先级,最佳实践是创建多个 SQS 队列
SWF - Simple Workflow service
SWF 提供 Workflow 服务,比如 Amazon 用它来处理客户订单的流程——下单、支付、配货、发货……
- 一个 Workflow 可以长达 1 年,而 SQS 的消息最多保留 14 天
- SWF 的 API 面向 task,而 SQS 的 API 面向 message
- SWF 保证一个 task 只会分配一次、不会重复;SQS 不保证这一点
- SWF 会跟踪每个 task 和 event 的处理;SQS 没有这个功能
SWF 有以下 3 种 Actors:
- Workflow Starter - 启动 workflow 的程序,比如电商网站的下单操作
- Decider - 控制 task 的执行流程,如果某个步骤完成/失败,decider 决定下一步做什么
- Activity Worker - 执行任务,可以是人类
SNS - Simple Notification Service
SNS 提供消息通知服务,例如当 CloudTrail 发出警告时给用户发 Email 通知。
SNS 的订阅者可以是以下这些:
- HTTP / HTTPS
- Email / Email (JSON)
- SQS
- Lambda
- Application
SNS vs SQS:
- 相同点:都是消息服务
- 不同点:SNS 是 Push,而 SQS 是 Pull (Poll)
API Gateway
- API Gateway 很便宜,并能自动伸缩
- API Gateway 可以通过 cache 提升性能,减轻后端服务器的负载
- API Gateway 可以 throttle 流量从而防止被攻击
- 可以把所有的访问记到 CloudWatch
- 如果你用到了跨域 AJAX,记得开启 CORS (Cross-Origin Resource Sharing)
Elastic Transcoder
提供云转码服务,将原始视频格式转换到不同的格式,从而方便在电脑、平板或手机上播放。AWS 提供了很多预设的格式,你不用自己调参数,直接选择对应的设备就可以了。
根据转码的时间以及分辨率收费。