写点什么

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

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

    阅读完需:约 7 分钟

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

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

几周前,我们为 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:00643
用户头像

发布了 1832 篇内容, 共 99.5 次阅读, 收获喜欢 76 次。

关注

评论

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

react相关面试知识点总结

beifeng1996

React

EMQ荣获“2022中国移动创客马拉松OneOS物联网专题赛”三等奖

EMQ映云科技

物联网 IoT emqx 云边协同 车路协同

HDC 2022精彩继续,多重亮点进来看!

HarmonyOS开发者

HarmonyOS

业界首个!快手提出亿级别多模态短视频百科体系——快知Kuaipedia

Geek老T

短视频 快手 泛知识

docker-compose下的java应用启动顺序两部曲之一:问题分析

程序员欣宸

Java Docker Docker-compose 11月月更

React源码分析6-hooks源码

goClient1992

React

谈谈企业级前端应用中客户端渲染和服务器端渲染的区别

汪子熙

前端开发 SSR SAP Spartacus 11月月更

2022年中国汽车OTA行业发展洞察

易观分析

汽车 OTA

SAP 电商云的 Spartacus Storefront 如何配置多个 JavaScript Application

汪子熙

angular SAP commerce 电商云 11月月更

云原生系列四:Yelp 如何在 Kubernetes 上运行 Kafka

叶秋学长

kafka Kubernetes 11月月更 Yelp

我把分布式音乐播放器适配了Stage模型

OpenHarmony开发者

OpenHarmony

React面试:谈谈虚拟DOM,Diff算法与Key机制

beifeng1996

React

高效数据通道支撑生产情况实时分析与可视化|工业4.0智慧工厂

EMQ映云科技

物联网 IoT 数据可视化 11月月更 云边协同

python中私有成员和公有成员

乔乔

11月月更

软件测试面试真题 |你用过哪些用例设计方法?

测试人

软件测试 面试题 测试用例

专业移动办公解决方案!远程控制软件RayLink内测火热进行中!

RayLink远程工具

远程控制软件 远程办公软件 远控软件 远程桌面连接 RayLink

京东云开发者|深入JDK中的Optional

京东科技开发者

jdk java8 NPE 空指针 Optional

京东云开发者|深入JDK中的Optional

京东科技开发者

jdk java8 NPE 空指针 Optional

在Dubbo中,模板方法模式 用得真6

小小怪下士

Java 程序员 dubbo 阿里

代码质量与安全 | 想在发布竞赛中胜出?Sonar来帮你

龙智—DevSecOps解决方案

代码质量 代码安全

DevUI开源经验分享:从0到1开始运营你的开源项目

华为云开发者联盟

开源 华为云 企业号十月 PK 榜

AI 模型编译器 MegCC 开源,解决推理引擎体积问题

MegEngineBot

深度学习 开源 MegEngine MegCC AI 模型编译器

京东云开发者|软件架构可视化及C4模型:架构设计不仅仅是UML

京东科技开发者

软件架构 架构设计 架构可视化 图形化编排 C4模型

面试官最喜欢问的几个react相关问题

beifeng1996

React

React源码分析7-state计算流程和优先级

goClient1992

React

认证升级 | 秒云再次获评软件企业认证

MIAOYUN

双软认证 软件企业认证 软件产品认证

万字详解JVM,让你一文吃透

华为云开发者联盟

开发 华为云 企业号十月 PK 榜

vue面试之Composition-API响应式包装对象原理

bb_xiaxia1998

Vue

Databend 集群部署 | 新手篇(2)

Databend

开源

react的jsx和React.createElement是什么关系?面试常问

beifeng1996

React

云栖大会,未来万物皆是计算机?

阿里云视频云

阿里云 云栖大会

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