SQS
Amazon Simple Queue Service (SQS)是一种完全托管的消息队列服务,可以让你分离和扩展微服务、分布式系统和无服务应用程序。
- SQS是靠应用程序去拉取的,而不能主动推送给应用程序
- 消息会以256 KB的大小存放
- 消息会在队列中保存1分钟~14天,默认时间是4天
- 可见性超时(Visibility Timeout)
- 即当SQS队列收到新的消息并且被拉取走进行处理时,会触发Visibility Timeout的时间。这个消息不会被删除,而是会被设置为不可见,用来防止该消息在处理的过程中再一次被拉取
- 当这个消息被处理完成后,这个消息会在SQS中被删除,表示这个任务已经处理完毕
- 如果这个消息在Visibility Timeout时间结束之后还没有被处理完,则这个消息会设置为可见状态,等待另一个程序来进行处理
- 因此同一个消息可能会被处理两次(或以上)
- 这个超时时间最大可以设置为12小时
- SQS保证了每一个在队列内的消息都至少会被处理一次
- 长轮询(Long Polling)
- 默认情况下,Amazon SQS使用短轮训(Short Polling),即应用程序每次去查询SQS队列,SQS都会做回应(哪怕队列一直是空的)
- 使用了长轮训,应用程序每次去查询SQS队列,SQS队列不会马上做回应。而是等到队列里有消息可处理时,或者等到设定的超时时间再做出回应。
- 长轮询可以一定程度减少SQS的花销
- SQS的类型有标准队列(Standard Queue)和FIFO队列(先进先出队列)
SWF和SQS的区别
- SWF是面向任务的;SQS是面向消息的;
- SWF保证了每一个任务都只执行一次而不会重复;标准的SQS消息可能会被处理多次
- SWF保证了程序内所有任务都正常被处理,并且追踪工作流;而SQS只能在应用程序的层面追踪工作流
- SWF内的任务最长可以保存1年;SQS内的消息最长只能保存14天
SWF的三种角色
- SWF发起者(Starter)
- 可以激活一个工作流的应用程序,可能是电商网站上下单的行为,或者是在收集APP上点击某个按钮
- SWF决策者( Decider)
- SWF Decider决定了任务之间的协调,处理的顺序,并发性和任务的逻辑控制
- SWF参与者(Worker)
- SWF Worker可以在SWF中获取新的任务,处理任务,并且返回结果
SNS能推送的目标
- HTTP
- HTTPS
- Email-JSON
- SQS
- Application
- Lambda
SNS和SQS的区别
- 两种都是信息服务
- SNS是推送服务(Push);SQS是拉取服务(Pull/Poll)
Amazon Elastic Transcoder
Amazon Elastic Transcoder是一种在线媒体转码的工具,使用它我们可以很容易地将我们的视频从源格式转换到其他的格式和分辨率,以便在手机、平板、PC等设备上播放。
Kinesis服务
Kinesis目前有不同的功能服务,我们需要了解每一个服务有什么不同。这些服务分别是:
- Kinesis Data Streams (Kinesis Streams):使用自定义的应用程序分析数据流
- 创建者(Producer)
- 分片(Shards)
- 使用者(Comsumer)
- Kinesis Video Streams:捕获、处理并存储视频流用于分析和机器学习(Machine Learning)
- Kinesis Data Firehose:将数据加载到AWS数据存储上
- Kinesis Data Analytics:使用SQL分析数据流
在考试中我们需要了解Kinesis Streams和Kinesis Firehose的区别,并且知道Kinesis Analytics是用来做什么的。