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 提供了很多预设的格式,你不用自己调参数,直接选择对应的设备就可以了。

根据转码的时间以及分辨率收费。