Logo
Section 1 / 2

简单队列服务(SQS)

了解SQS、SNS和Kinesis的一般工作原理及其协同工作方式。

导入

简单队列服务(SQS)

了解SQS、SNS和Kinesis的一般工作原理及其协同工作方式。

什么是 SQS?

SQS 是一种网络服务,为您提供访问消息队列的能力,可用于在等待处理消息时存储消息。
它是一个分布式队列系统,使应用程序的各个组件能够快速且可靠地将消息入队(由一个组件生成)并由另一个组件消费。

换句话说,队列是等待处理的消息的临时存储库。

您也可以将 SQS 理解为生产数据的组件与消费数据的组件之间的缓冲区。这意味着队列会接收数据。因此,当生产者生成数据的速度超过消费者处理能力时,队列可能有助于缓解此类问题。

队列类型

有两种类型的队列:

  1. 标准队列(默认)
  2. FIFO 队列

标准队列

标准队列支持每秒近乎无限次的事务处理。它们保证消息至少被传递一次,并提供尽力而为的顺序交付,通常能按发送顺序交付。

FIFO 队列

FIFO(先进先出)队列最重要的特性是先进先出的消息传递以及精确一次的处理。

消息发送和接收的顺序严格保持一致,且每条消息仅被传递一次,直到消费者处理并删除该消息后才会从队列中移除。

SQS 是一种基于拉取(pull-based)的队列。

下图展示了分布式消息系统的主要组成部分,并解释了 Amazon SQS 消息的生命周期。

OrderDispatcher-1024x534.png
OrderDispatcher-1024x534.png

分布式队列

分布式消息系统包含三个主要部分:分布式系统中的各个组件、位于 Amazon SQS 服务器上的队列,以及队列中的消息。

在以下场景中,系统中的多个组件向队列发送消息并从队列接收消息。队列(存储消息 A 到 E)会在多个 Amazon SQS 服务器之间冗余存储这些消息。

Screen Shot 2018-09-04 at 8.52.43 AM.png
Screen Shot 2018-09-04 at 8.52.43 AM.png

消息生命周期

以下场景描述了 Amazon SQS 消息在队列中的完整生命周期,从创建到删除。

Screen Shot 2018-09-04 at 8.53.46 AM.png
Screen Shot 2018-09-04 at 8.53.46 AM.png
  1. 生产者(组件 1)向队列发送消息 A,该消息被冗余地分发到多个 Amazon SQS 服务器上。

  2. 当消费者(组件 2)准备处理消息时,它从队列中获取消息,消息 A 被返回。在消息 A 处理期间,它仍保留在队列中,不会在可见性超时时间内再次被其他接收请求返回。

  3. 消费者(组件 2)从队列中删除消息 A,以防止在可见性超时过期后消息被重复接收和处理。

SNS – 简单通知服务

它是一种网络服务,可轻松设置和运行云中发送的通知。它支持从应用程序发布消息,并立即推送给订阅者或其他应用程序。

SNS – 向移动设备推送通知

  1. 支持短信(SMS)功能
  2. SNS 可触发邮件、HTTP 请求、Lambda 函数。
SNS as a Messaging Bus
SNS as a Messaging Bus

弹性转码

一种服务,可将任意视频格式转换为用户指定的其他格式。

Kinesis

流式数据:由成千上万甚至数百万个数据源或数据点持续生成的数据,需要被实时捕获并处理。

  1. 社交网络数据
  2. 移动游戏数据
  3. 股票价格数据
Kinesis Data Collection & Core Data Updates
Kinesis Data Collection & Core Data Updates

Kinesis:Amazon Kinesis 是 AWS 上用于传输流式数据的平台,相当于亚马逊版的 Kafka。

Kinesis 包含三个服务:

  1. Kinesis Streams
  2. Kinesis Firehose
  3. Kinesis Analytics

Kinesis Streams
由分片(shards)组成(类似于 Kafka 中的分区)。

每秒最多支持 5 次读取事务。

Persist Streaming Data to Amazon S3 using Amazon Kinesis Firehose and AWS Lambda
Persist Streaming Data to Amazon S3 using Amazon Kinesis Firehose and AWS Lambda
  • Kinesis Firehose是将流式数据可靠加载到数据存储和分析工具中最简单的方式。它可以捕获、转换并加载流式数据至 Amazon S3、Amazon Redshift、Amazon Elasticsearch Service 和 Splunk,从而实现使用现有商业智能工具和仪表板进行近实时分析。
Screen Shot 2018-09-05 at 12.41.20 PM.png
Screen Shot 2018-09-05 at 12.41.20 PM.png
  • Kinesis Analytics用于使用标准 SQL 实时处理流式数据,无需学习新的编程语言或处理框架。Amazon Kinesis Data Analytics 允许您通过 SQL 查询流式数据或构建完整的流式应用,从而快速获得可操作的洞察,并及时响应业务和客户需求。
Realtime Data Analytics
Realtime Data Analytics

AWS:虚拟私有云(VPC)

简单工作流服务(SWF)