10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

Amazon Kinesis Data Streams 推出增强扇出功能和 HTTP/2 数据检索 API 功能

  • 2019-10-18
  • 本文字数:2146 字

    阅读完需:约 7 分钟

Amazon Kinesis Data Streams 推出增强扇出功能和 HTTP/2 数据检索 API功能

几周前,我们为 Amazon Kinesis Data Streams (KDS) 推出了两项重要的性能加强功能:增强扇出功能和 HTTP/2 数据检索 API。增强的扇出功能允许开发人员通过为每个数据流消费者提供其自己的读取吞吐量来扩增数据流消费者的数量(应用程序实时从数据流中读取数据)。与此同时,在常见情况下,HTTP/2 数据检索 API 允许在 70 毫秒或更短的时间内(提升了 65%)将数据从生产者传送给消费者。这些新功能可让开发人员依托 Kinesis Data Streams,构建速度更快、反应更灵敏、高度并行化且对延迟敏感的应用程序。


Kinesis 实际上是指一系列数据流服务: Kinesis Video StreamsKinesis Data FirehoseKinesis Data Analytics 以及今天这篇博文的主题 Kinesis Data Streams (KDS)。Kinesis Data Streams 提供完全托管且可大规模扩展的服务,让开发人员可以轻松连续地实时收集、处理和分析流数据。KDS 每秒可以捕获来自数十万个数据源的数千兆字节数据 – 囊括从网站点击流和社交媒体源,到金融交易和位置跟踪事件在内的各种数据。



Kinesis Data Streams 使用分片概念实现扩展。一个分片提供 1MB/s 或 1000 条记录/秒的传入容量和 2MB/s 的输出容量。客户利用数千乃至数万个分片支持数十 GB/s 的传入和传出容量的情况并不罕见。在增强的扇出功能问世之前,2MB/s/分片的输出容量由使用流中的数据的所有应用程序共享。利用增强的扇出功能,开发人员可以注册流消费者以使用增强的扇出功能,并在每个分片上获得自己的 2MB/s 读取吞吐量管道,而且这个吞吐量还能根据流中的分片数量自动进行扩展。在增强的扇出功能推出之前,客户经常要将其数据扇出到多个流,才能满足下游应用程序所需的读取吞吐量。在我们看来,这是毫无意义的繁重工作,因此我们决定为客户解决这一令人烦恼的问题。客户根据利用增强的扇出功能从流中检索的数据量以及每个分片的注册消费者数量来为增强的扇出功能支付费用。您可以在定价页面中找到更多信息。


在我们介绍全新 API 之前,首先来简单介绍一下 HTTP/2,以及我们要如何将其与全新的 SubscribeToShard API 配合使用。

HTTP/2

HTTP/2 是 HTTP 网络协议的一个主要修订版,它引入了一种在客户端与服务器之间构建数据帧和传输数据的新方法。这是一种二进制协议。它支持许多新功能,主要用于缩短延迟和提高吞吐量。第一项优势是使用 HPACK 压缩标头。另外一项有用的功能是允许我们使用单一 TCP 连接处理多个并行非阻塞请求的连接多路复用。另外,通信管道是双向的,不再使用 HTTP 的传统请求-响应语义。使用 HTTP/2 的服务器可以将多条响应推送到客户端,而无需等待客户端请求这些资源。Kinesis 的 SubscribeToShard API 利用此服务器推送功能来接收新记录,并利用另一项称为流控制的 HTTP/2 功能。Kinesis 将数据推送给消费者,并跟踪未确认的字节数。客户端通过向服务器发送 WINDOW_UPDATE 帧来确认收到的字节。如果数据传输速率达到了客户端无法处理的程度,则 Kinesis 会暂停数据流,直至收到新的 WINDOW_UPDATE 帧或 5 分钟的订阅到期为止。


现在我们已经了解了 SubscribeToShard 和 HTTP/2,接下来我们介绍一下如何利用增强的扇出功能!

使用增强的扇出功能


要使用增强的扇出功能,最简单的方法莫过于利用更新后的 Kinesis Client Library 2.0 (KCL)。KCL 会自动将自身注册为流的消费者。随后,KCL 会枚举分片,并使用新的 SubscribeToShard API 订阅这些分片。在底层连接终止后,它也会持续调用 SubscribeToShard。在后台,KCL 会使用在您的 AWS 账户中创建的 Amazon DynamoDB 表,处理分布式应用程序的检查点和状态管理。您可以在本文档中看到一个相关示例。


使用增强的扇出功能的一般流程如下:


  1. 调用 RegisterStreamConsumer,并提供 StreamARN 和 ConsumerName(通常是应用程序名称)。保存此 API 调用返回的 ConsumerARN。消费者注册完毕后,系统会立即启用增强的扇出功能,并开始根据消费者分片时数计费。

  2. 枚举流分片并使用 RegisterStreamConsumer 返回的 ConsumerARN,在每个分片上调用 SubscribeToShard。这会建立 HTTP/2 连接,KDS 会将 SubscribeToShardEvents 推送到侦听客户端。KDS 每隔 5 分钟会终止这些连接,因此如果您想继续接收事件,客户端将需要再次调用 SubscribeToShard。使用增强的扇出功能推送到客户端的字节数根据增强的扇出功能数据检索速率计费。

  3. 最后,如果您不再使用消费者,记得调用 DeregisterStreamConsumer,因为消费者会产生费用。


您可以在文档中看到一些关于此过程的示例代码导览。


您可以在控制台中查看 Amazon CloudWatch 指标并管理消费者应用程序,也可以取消注册这些应用程序。


现已推出

增强的扇出功能和全新的 HTTP/2 SubscribeToShard API 现已在所有区域推出,可用于新的流和现有的流。本文档提供了丰富翔实的信息,请参阅文档,了解更多信息。每个流均仅限 5 个消费者应用程序(例如,5 个不同的 KCL 应用程序)从所有分片中读取数据,但可以通过提交支持单来提高这个上限。我很高兴看到客户能利用这些新功能来降低管理多个流消费者的复杂性,并提高实时应用程序的速度和并行性。


与以往一样,欢迎大家在这篇博文下方或 Twitter 上发表评论。


作者介绍:


Randall Hunt


AWS 全球高级布道师。此前供职于 NASA, SpaceX 及 MongoDB。


本文转载自 AWS 技术博客。


原文链接:


2019-10-18 08:00845
用户头像

发布了 1929 篇内容, 共 155.7 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

深入探索Linux零拷贝原理

C++后台开发

后台开发 零拷贝 linux开发 Linux服务器开发 C++开发

软件测试 | 测试开发 | Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | JMeter 典型电商场景(下单/支付)的性能压测

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 代码分析体系及Sonarqube平台

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | TestNG 与 Junit 对比,测试框架如何选择?

测吧(北京)科技有限公司

测试

嗨,程序员,你知道高级工程师用的搜索引擎吗?

梦想橡皮擦

9月月更

合同抵万金,禅道项目管理服务包免费领!

禅道项目管理

项目管理 禅道

软件测试 | 测试开发 | 接口自动化测试框架 RESTAssured 实践(三):对 Response 结果导出

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 同样是断言,为何 Hamcrest 如此优秀?

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 大话JMeter4|不同的并发数可以自动化做压测吗?

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 大话测试数据(一)

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 如何做好性能压测(一):压测环境的设计和搭建

测吧(北京)科技有限公司

测试

基于RESTful页面数据交互案例

十八岁讨厌编程

RESTful 后端开发 9月月更

软件测试 | 测试开发 | Java 接口自动化测试首选方案:REST Assured 实践 (一)

测吧(北京)科技有限公司

测试

开发者有话说|前路有光,初心莫忘,从编程小白,到如今小有所成,我这一路是如何走来的?

浅羽技术

个人成长 经验分享 自学java 开发者有话说 职场妙招

【JavaScript】巩固JS开发中十个常用功能/案例(11-20)

海底烧烤店ai

算法 前端 JavaScrip 9月月更

[SpringMVC]REST入门案例与优化

十八岁讨厌编程

spring 后端开发 9月月更

[SpringMVC]bean加载控制

十八岁讨厌编程

spring 后端开发 9月月更

数字技术推动乡村振兴,腾讯云助力上线大通农文旅融合数字化平台

科技热闻

一起瓜分20万奖金【第三届火焰杯软件测试大赛开始公开选拔】

测试人

软件测试 自动化测试 接口测试 测试开发 比赛

软件测试 | 测试开发 | 电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 持续交付-Jenkinsfile 语法

测吧(北京)科技有限公司

软件测试 | 测试开发 |H5性能分析实战来啦~

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 云架构系统如何做性能分析?

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 代码质量管理平台实战| SonarQube 安装、配置及 JaCoCo、Maven 集成

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | REST Assured 实践(二):断言实现

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 后端Web开发框架(Java)

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 只需搞定Docker,环境问题再也不是测开路上的『坑』

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 如何确保API 的稳定性与正确性?你只需要这一招

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 学习Docker就应该掌握的dockerfile语法与指令

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)?

测吧(北京)科技有限公司

测试

Amazon Kinesis Data Streams 推出增强扇出功能和 HTTP/2 数据检索 API功能_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章