【发布时间】:2015-11-10 15:24:30
【问题描述】:
我有一个带有 2 个分片的运动流,如下所示:
{
"StreamDescription": {
"StreamStatus": "ACTIVE",
"StreamName": "my-stream",
"Shards": [
{
"ShardId": "shardId-000000000001",
"HashKeyRange": {
"EndingHashKey": "17014118346046923173168730371587",
"StartingHashKey": "0"
},
{
"ShardId": "shardId-000000000002",
"HashKeyRange": {
"EndingHashKey": "340282366920938463463374607431768211455",
"StartingHashKey": "17014118346046923173168730371588"
},
]
}
}
发送方设置一个通常是 UUID 的分区。它总是落在 shard-002 以上,这使得系统没有负载平衡,因此无法扩展。
作为旁注,kinesis 使用 md5sum 分配记录,然后将其发送到包含其范围内结果哈希的分片。事实上,当我在我使用的 UUId 上对其进行测试时,它们确实总是落在同一个分片中。
echo -n 80f6302fca1e48e590b09af84f3150d3 | md5sum
4527063413b015ade5c01d88595eec11
17014118346046923173168730371588 < 4527063413b015ade5c01d88595eec11 < 340282366920938463463374607431768211455
你知道如何解决这个问题吗?
【问题讨论】:
标签: amazon-kinesis