近期,准确的说是 2015 年 10 月 7 日,亚马逊发布了一款新的服务,叫做亚马逊 Kinesis FireHose。Kinesis FireHose 是亚马逊 2 年前发布的 Kinesis 服务的后继服务。为了避免产生歧义,旧的 Kinesis 服务已经被重命名为亚马逊 Kinesis 流。
亚马逊 Kinesis Firehose 是一款托管服务,只需要很少的管理。可让用户传输应用、监控和日志数据到亚马逊S3 (简单存储服务)或是亚马逊Redshift 表,而无须使用定制的代码。
图片来源:截屏自 YouTube
来自亚马逊 Kinesis 的总经理,Roger Barga 将亚马逊 Kinesis Firehose分解为以下三个概念:
- 交付流均被配置以识别目的地,为了那些进行处理的数据流。
- 记录指的是一个发布者以数据块地形式让交付流可用的数据,数据块的大小可以达到 1000KB。
- 数据生产者,或发布者,将会作为记录到交付流,比如一个 web 服务器发送的日志数据。
该服务是在数据被持久化的地方,或者是级联的地方,是面向批处理场景的,在摄入之前时间间隔在 60 秒到 15 分钟之间。系统管理员控制缓冲大小和缓冲时间,从而确定移动数据的频率。以下图像描述了这些输入参数是如何被管理的。
图片来源:亚马逊官方博客
在所支持的特性中也包含了压缩和加密,压缩使用的是gzip 压缩,加密是通过亚马逊的 KMS (密钥管理服务)。通过利用中心化的安全服务,也就意味着其它服务也可使用亚马逊的密钥来解密此数据。
像其它的亚马逊服务一样,Kinesis firehose 也提供了自动伸缩的能力,但是需要一点系统管理员的参与。它还提供一些高级功能,包括文件轮询、通过 Kinesis代理的检查点、以及若一个S3 的bucket 不可用了,允许数据持久化保留24 小时。
Kinesis Firehose 的目标是那些没有任何代码和配置经验的系统管理员。但是,在更加高级别的场景中,开发者还是可以利用 Kinesis Firehose 所提供的高级 API 将之整合进他们的应用中。API 所提供的操作有:
- CreateDeliveryStream -通过所提供的用户的数据将要传输的 S3 bucket 信息来创建一个交付流。
- DeleteDeliveryStream - 删除一个交付流。
- DescribeDeliveryStream - 返回一个交付流的配置信息。
- ListDeliveryStreams -列出 AWS 账户下所有可用的交付流。
- UpdateDestination - 为一个交付流更新 S3 bucket 的配置。
- PutRecord - 将一个单独的达到 1000KB 的纪录数据放入交付流。
- PutRecord Batch - 将一批纪录(500 条纪录或 50MB)放入交付流。
亚马逊为用户提供了统一的终端,让用户可以使用一套工具来同时管理 Kinesis Firehose 和流。但是对于熟悉亚马逊 Kinesis 流的用户来说,这两个服务之间还是有着几个非常重要的区别的。亚马逊按照下面方法进行了分类:
- Amazon Kinesis Streams 是针对哪些每个输入纪录都需定制处理负载的服务,再就是一些小的特性,如可允许 1 秒钟的处理延时、可选择流的处理框架。
- Amazon Kinesis Firehose 是针对哪些无需任何管理的负载的服务,且可使用现有的基于 S3 或 RedShift 的分析工具、数据延时可达 60s 甚至更高。
查看英文原文: Amazon Release Kinesis FireHose
感谢张龙对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。
评论