服务
关于
CloudProse博客
云原生

Kinesis江苏体彩流及其复杂性

一些常见的挑战和"gotchas"这将帮助您顺利实施KDS。
茴香特色图片
菲尼尔·帕特尔(Fenil Patel) | 2020年8月11日

Kinesis江苏体彩流 (KDS)用于收集和处理江苏体彩以及大量碎片。我们每秒可以收集千兆字节的江苏体彩,并将其用于多个消费者的实时处理和分析。

江苏体彩流的经典用例是:

  1. 收集实时指标和报告
  2. 实时江苏体彩分析
  3. 加快日志和江苏体彩提要的获取和处理

对于以上任何一种使用情况,控制各种因素以确保在KDS中使用多个分片时确保平稳运行并确保江苏体彩丢失都是很重要的。在本文中,我将回顾一些可以帮助您顺利实施KDS的常见挑战和“陷阱”。如果您想了解有关KDS是什么以及如何使用它的更多背景知识,请查看此 深入视频 由AWS提供。

共同的挑战

监控表现

在碎片级别上监视KDS性能的最佳方法是打开对KDS的增强监视。这将为您提供更多有用的指标。有用的分片级别指标之一是以下以毫秒为单位的迭代器年龄。

IteratorAgeMilliseconds是针对KDS进行的所有GetRecords调用中最后一条记录的寿命,在指定的时间段内(以毫秒为单位)。年龄是当前时间与流接收GetRecords调用的最后一条记录的时间之间的差。最小值和最大值统计信息可用于跟踪Kinesis消费者应用程序的进度。零值表示正在读取的记录已完全被流捕获。

常见的UpdateShardCount“ Gotchas”

分片计数是江苏体彩流的关键扩展尺度。分片确定江苏体彩流中吞吐量的容量。可以根据江苏体彩流的使用情况将它们放大或缩小。但是,对于那些很少使用Kinesis的人来说,还有一些默认限制尚不清楚。

扩展江苏体彩流时,您不能:

  1. 每个流每24小时滚动一次,放大超过10倍
  2. 扩展到流的当前分片数量的两倍以上
  3. 缩小到当前分片数量的一半以下

这些隐藏的限制可以让您深夜思考为什么没有江苏体彩被推送到江苏体彩流。在设计架构灵活且可用时,请确保考虑到这些限制。

分区键的复杂性

分区键是unicode字符串,最大长度为256个字符,可用于按流中的碎片对江苏体彩进行分组。哈希函数用于将分区键映射到128位整数值,并使用哈希键范围将关联的江苏体彩记录映射到分片。分区键可帮助您扩展到一个以上的分片,因此,即使将江苏体彩写入不同的分片,并且需要顺序分区键也可以在传输期间帮助维持顺序。建议使用某些信息(例如UUID)来追溯信息的产生者使用多个分片的最佳实践。分区键也计入总写入大小,并存储在流中,因此请注意严格的有效负载大小。

以最有效的方式使用分区键:

  • 如果顺序无关紧要,则为分区键选择一个分布均匀的属性(例如,用于指示类别的常量和诸如时间戳或随机变量之类的一些随机性)最为有效。
  • 如果顺序确实很重要,请确保将江苏体彩顺序放入相同的分片中,以确保流传输的连续性和线性。

遵循上述建议可以帮助避免使江苏体彩传输麻烦,但是我们如何避免将太多江苏体彩推送到单个分片并使其余分片保持冷的问题。

避免冷热碎片

当具有过多江苏体彩生产的客户端推送到流时,选择作为标识符的ID(例如客户端ID)会适得其反。这可能会导致一些碎片被过度利用,而其他碎片则未被充分利用。

争取至少需要10倍于分区数的分区键。如前所述,如果排序不重要,则可以使用一些随机分区键来消除热碎片和冷碎片。

通过增强的监控,IteratorAgeMillis指标可以显示每个分片上的最旧消息年龄,从而更容易找到热分片。增强的监视功能提供了分片级别指标,而常规监视则无法看到这些分块级别的指标,因此,开启增强的监视功能会产生一定的成本,可以使用AWS CLI,控制台或API来完成。

这些是使用KDS时面临的一些常见挑战,在开发过程中注意这些挑战有助于避免常见的陷阱。

作者
茴香特色图片
菲尼尔·帕特尔(Fenil Patel)