用于处理流数据的消息服务在AWS中
作者:伊藤雅博,日立制造有限公司。
首先
在使用AWS实现流处理时,通常需要将数据排队的消息服务和处理排队数据的流处理服务结合起来。本帖将介绍AWS提供的每个消息服务的概述,以及处理流数据时的选择标准。
另外,本帖子的内容基于2020年中期的调查结果,同时作了一些更新。由于AWS的服务规格会不断更新,因此可能与最新规格有所不同。有关最新信息,请参阅AWS官方文档。
投稿一覽:
1. 處理AWS流式數據的消息服務(本投稿)
2. AWS流式處理專用的消息服務KDS(Kinesis)、MSK(Kafka)和SQS的特點
3. AWS Kinesis Data Analytics、EMR Spark Streaming和Lambda的流式處理特點
在流处理中,消息队列的作用。
流数据是指实时生成的大量数据。例如,物联网设备和连接汽车的传感器数据,以及业务系统生成的日志数据等。这些数据不断地、无限制地生成,并且可能根据时间而大幅增加流量。
在流式处理中,通过即时处理这种流数据,实现了批处理无法实现的高实时性服务。
在处理不稳定流量的流式数据时,当数据流量急剧增加时,系统的处理负载也会上升。这可能导致服务停止或数据丢失。因此,通常情况下,首先使用消息队列对数据进行临时排队,通过异步处理数据的接收和处理,来平衡系统的处理负载。
另外,在单个亚马逊 EC2 实例上处理大量的流数据(例如每秒 1 百万条)是困难的。因此,流处理的逻辑(数据处理、异常检测、监控等)通常使用并行分布式处理框架来实现,或者作为事件驱动型的应用程序进行实现。
通常情况下,流处理系统通过结合消息队列服务和流处理服务来实现。
在这篇投稿中,我们将介绍上述的消息传递服务。
AWS提供的主要消息服务
AWS提供了以下类似的消息服务。
-
- Amazon Kinesis Data Streams (KDS)
-
- Amazon Managed Streaming for Apache Kafka (MSK)
-
- Amazon Simple Queue Service (SQS)
-
- Amazon Simple Notification Service (SNS)
- Amazon MQ
以下是这些服务的特点表。
由于各个服务的规格随时更新,故请参考AWS的官方文档获取最新资讯。另外,在AWS中,您也可以申请提高服务配额,以便可能提高限制值。
以下是各项服务的概要。
亚马逊 Kinesis 数据流 (KDS)
KDS是一项分布式消息队列的托管服务。通过可扩展的写入/读取性能,可以处理大量的流数据。此外,KDS还能与AWS的各种服务进行集成。以下是一些相应的流处理服务。
-
- Kinesis Data Analytics (KDA: SQL/Javaによるストリーム処理が可能)
-
- AWS EMR (Spark Streamingによるストリーム処理が可能)
- AWS Lambda (イベント駆動型の処理が可能)
亚马逊托管的Apache Kafka流媒体服务(MSK)
MSK是一项基于开源的Apache Kafka的托管服务,是一种分布式高性能的消息平台。在美国,超过80%的财富100强企业使用Kafka,并且它已成为处理大量流数据的消息队列的事实标准。
在功能上,它类似于KDS,并用于处理大量的流媒体数据。此外,它还适用于使用Kafka迁移现有系统。
亚马逊简单消息队列服务 (SQS)
SQS被用于解耦组件之间的发送和接收,实现松耦合。基本上不需要调优,非常容易使用。SQS有两种类型的队列:高性能的标准队列和确保消息顺序的FIFO队列。此外,它还支持基于Lambda的事件驱动处理。
亚马逊简讯服务 (SNS)
社交媒体(SNS)可以用于按时重要信息的发送,就像通知一样。它易于使用且无需调整,同时具备推送发送的特点。
亚马逊MQ
MQ是一种与Active MQ或Rabbit MQ兼容的消息服务,适用于使用行业标准API/协议(如MQTT、AMQP等)来迁移现有系统。如果在AWS上构建新应用程序,则建议使用其他消息队列。
可以在单个实例配置或2个可用区(Availability Zone)中进行主/备配置。由于无法扩展,因此不适用于处理大量的流媒体数据。
AWS中的流处理的基本构成
根据上述特点,可以说KDS和MSK适用于流处理的消息服务。此外,虽然有一些限制,但也可以利用SQS。下图展示了构建流处理系统的AWS服务及其组合方式。
在流处理系统中,需要提供接口来接收流数据。当从外部(例如IoT设备)接收数据时,通常会通过API网关进行安全保护。当从内部(例如业务系统)接收时,也可以通过各个服务的客户端(生产者)直接写入数据。
最后,
最后说明,
最后总结
在本投稿中,我们介绍了AWS提供的各种消息服务的概述,以及处理流数据时的选择标准。在处理流数据时,KDS、MSK和SQS等消息服务经常被广泛利用。
在下一篇文章中,我们将介绍KDS、MSK和SQS的特点和架构细节。
- 第2回: AWSのストリーム処理向けメッセージングサービスKDS(Kinesis)・MSK(Kafka)・SQSの特徴