gpt4 book ai didi

amazon-kinesis - 如何在 AWS Kinesis 中使用 ExplicitHashKey 进行循环流分配

转载 作者:行者123 更新时间:2023-12-03 19:50:42 30 4
gpt4 key购买 nike

我正在尝试通过 Amazon Kinesis 抽取大量数据(每秒订购 10,000 个点)。

为了通过我的分片最大限度地提高每秒记录数,我想通过分片循环我的请求(我的应用程序逻辑不关心分片单个消息去哪个分片)。

似乎我可以使用 ExplicitHashKey 参数为我发送到 PutRecords 端点的列表中的消息执行此操作 - 但是亚马逊文档实际上并没有描述如何使用 ExplicitHashKey,除了以下预言:

http://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html

Each record in the Records array may include an optional parameter, ExplicitHashKey, which overrides the partition key to shard mapping. This parameter allows a data producer to determine explicitly the shard where the record is stored. For more information, see Adding Multiple Records with PutRecords in the Amazon Kinesis Streams Developer Guide.



(上面文档中的声明有一个指向文档另一部分的链接,该部分根本不讨论 ExplicitHashKeys)。

有没有办法使用 ExplicitHashKey 在分片之间循环数据?

什么是参数的有效值?

最佳答案

每个分片都被分配了一个从 0 到 2^128 - 1 的 128 位整数的连续范围。

您可以通过 AWS CLI 找到分配给流中给定分片的整数范围:
aws kinesis describe-stream --stream-name name-of-your-stream
输出将如下所示:

{
"StreamDescription": {
"RetentionPeriodHours": 24,
"StreamStatus": "ACTIVE",
"StreamName": "name-of-your-stream",
"StreamARN": "arn:aws:kinesis:us-west-2:your-stream-info",
"Shards": [
{
"ShardId": "shardId-000000000113",
"HashKeyRange": {
"EndingHashKey": "14794885518301672324494548149207313541",
"StartingHashKey": "0"
},
"ParentShardId": "shardId-000000000061",
"SequenceNumberRange": {
"StartingSequenceNumber": "49574208032121771421311268772132530603758174814974510866"
}
},
{ ... more shards ... }
...

您可以设置 ExplicitHashKey将记录的字符串十进制表示形式转换为分片哈希键范围内任何位置的整数值的字符串,以强制将其发送到该特定分片。

请注意,由于分片上的先前合并和拆分操作,可能会有许多分片重叠 HashKeyRanges .当前打开的分片是那些没有 SequenceNumberRange.EndingSequenceNumber 的分片。元素。

您可以通过识别每个感兴趣的分片范围内的 128 位整数来在一组分片之间循环请求,然后循环将该数字的字符串表示分配给每个记录的 ExplicitHashKey .

作为旁注,您还可以计算给定的哈希值 PartitionKey将评估为:
  • 计算分区键的 MD5 总和。
  • 将 MD5 和解释为十六进制数并将其转换为基数 10。这将是该分区键的哈希键。然后,您可以查找哈希键属于哪个分片。
  • 关于amazon-kinesis - 如何在 AWS Kinesis 中使用 ExplicitHashKey 进行循环流分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44593533/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com