У меня есть поток кинезиса с двумя осколками, который выглядит так:
{
"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
Есть идеи, как это решить?