【问题标题】:Kinesis Shards VS Partition KeyKinesis Shards VS 分区键
【发布时间】:2019-06-20 23:12:45
【问题描述】:

如果在创建 Kinesis 数据流时我指定了分片的数量,比如说 10,并且每次放入记录时,我都会为它分配一个随机分区键,如下所示:

 var putRecord = new PutRecord
            {
                Data = data ?? new byte[0],
                StreamName = stream,
                PartitionKey = GetRandomPartitionKey()
            };

kinesis 将如何决定将记录放入某个分片中,如果唯一分区键的数量多于分片的数量会发生什么?

【问题讨论】:

    标签: amazon-web-services amazon-kinesis


    【解决方案1】:

    散列和取模。

    分区键经过散列,然后除以分片数。除法的确定要使用的分片。这样,分区键总是使用相同的分片。如果分片数量改变,那么分配就会不同。

    这是许多系统中常用的方法。例如,Python 字典的内部存储使用这种方法为键/值对分配存储。

    【讨论】:

    • 所以你的意思是,无论我使用多少不同的分区键,记录最终都会出现在 10 个分片中的一个中?
    • 是的,没错。如果您希望按顺序处理一组特定的记录,请为它们分配相同的分区键。如果顺序完全不重要,那么随机分区键就可以了。
    猜你喜欢
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 2022-08-23
    • 2019-05-06
    • 2015-06-24
    相关资源
    最近更新 更多