当前位置: 首页 > 知识库问答 >
问题:

Kinesis数据生产者如何知道何时添加/删除分片?

田普松
2023-03-14

可以使用Kinesis API动态添加/删除分片。此外,Kinesis流数据生产者需要在其PutRecord API调用上设置适当的“分区键”(据我所知,它似乎映射到分片)。因此,您的数据生产者似乎也需要了解动态缩放,以利用新分片或停止发送到已删除的分片。

问:我的数据生产者如何动态跟踪特定流上可用的碎片,并创建分区键来匹配它们?

共有1个答案

汪天宇
2023-03-14

生产者应该完全按照您在重新分片期间所说的方式工作。

据我所知,kafka在客户端api本身中维护分区信息的映射

public final class Cluster {
    private final Map<TopicPartition, PartitionInfo> partitionsByTopicPartition;
    private final Map<String, List<PartitionInfo>> availablePartitionsByTopic;

    // ...
}

并且在每个发送(消息,分区键)上,获取活动分区的数量以计算分区。请参阅Default分区

public class DefaultPartitioner implements Partitioner {

    public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) {
        List<PartitionInfo> partitions = cluster.partitionsForTopic(topic);

        List<PartitionInfo> availablePartitions = cluster.availablePartitionsForTopic(topic);

        // ...
    }
}

然而,kinesis客户端只需使用参数partitionKey,我认为一旦记录信息发送到kinesis服务器,就会根据与活动碎片数量相同的逻辑来决定它应该去的确切分区。所以,我相信计算运动分区/碎片对客户端api是隐藏的。

 类似资料:
  • 在Xcode5中,有一个删除派生数据的简单选项: 在组织者菜单中(cmd+shift+2): 但是Xcode6的新接口没有类似的选项。 有什么快速的方法可以删除这个槽Xcode6接口吗?

  • 主要内容:JSF数据表添加删除实例JSF中有一个叫作的控件,可用来渲染和格式化表格。使用,我们可以迭代收集或数组数组来显示数据。 具有以简单的方式修改其数据的属性。 要使用,我们需要添加以下HTML头。 以下JSF标签 - 被渲染成以下HTML标签。 JSF数据表添加删除实例 打开 NetBeans IDE 创建一个Web工程:DataTableAddDelete,其目录结构如下所示 - 创建以下文件代码,文件:index.xht

  • 问题内容: 由于IE9和Safari-5不支持,因此有什么替代的跨浏览器解决方案? 解决方案 必须 至少在 IE 9 , Safari 5 ,FireFox 4,Opera 11.5和Chrome中运行。 问题答案: 处理没有框架/库的类的一种方法是使用Element.className属性,该属性“ _获取并设置指定元素的class属性的值。 正如在他的回答中已经提到的那样,一旦获得了元素的类字

  • 我想加载一个CSV文件并发送到后端。为此,我使用了。我基本上加载一个文件,然后再按下另一个按钮,将数据发送到后端。我的问题是,发送到后端后,文件仍然保持选择/上传。我该如何去除或清洁它? 我的代码: 正如我所说的,我将文件内容放入中,并将其发送到后端,但文件仍然保持“已加载”状态。有什么办法可以把它弄干净吗?

  • 当我点击一个座位时,如何防止重复,这样当我再次点击它时,它就不会追加,而是连续删除/添加。 参见输出的图片

  • 当我点击一个座位时,如何防止重复,这样当我再次点击它时,它就不会追加,而是连续删除/添加。 参见输出的图片