在生產者 - 消費者網絡應用程序中,應該如何爲Kinesis流分片創建分區鍵。 假設我有一個有16個分片的kinesis流,我應該創建多少個分區鍵?它真的取決於碎片的數量嗎?如何確定AWS kinesis流中的分區鍵的總數量?
回答
分區(或哈希)鍵:開始從1到340282366920938463463374607431768211455.比方說〜34020 * 10^34,我會忽略10^34,便於...
如果你有30個碎片,均勻分,每個應該覆蓋1134 * 10^34個散列鍵。覆蓋範圍應該是這樣的。
Shard-00: 0 - 1134 Shard-01: 1135 - 2268 Shard-03: 2269 - 3402 Shard-04: 3403 - 4536 ... Shard-28: 30619 - 31752 Shard-29: 31753 - 32886 Shard-30: 32887 - 34020
如果你有3個消費類應用(聽着這些碎片30),每個人都應該聽10個碎片(最佳平衡)。
這也解釋了流上的合併和拆分操作。
- 要合併2個碎片,它們應該覆蓋相鄰的散列鍵。你不能合併碎片03和碎片29。
- 您可以拆分任何分片。如果你在中間分割shard-00,分配將會是這樣;
Shard-31: 0 - 567 Shard-32: 568 - 1134 Shard-01: 1135 - 2268 Shard-03: 2269 - 3402 Shard-04: 3403 - 4536 ... Shard-28: 30619 - 31752 Shard-29: 31753 - 32886 Shard-30: 32887 - 34020
見,碎片-00將不再接受新的數據。放在具有相同分區鍵範圍(如Shard-00)的Kinesis流中的新記錄將放置在Shard-31或Shard-32下。
在向Kinesis(即生產者端)發送數據時,您不應該擔心「數據到哪個分片」。發送一個隨機數(或uuid或毫秒中的當前時間戳)對於在分片上有效地擴展和分發數據是最好的。除非您擔心單個分片中的記錄排序,否則最好爲put_record請求選擇一個隨機數/不斷變化的分區鍵。
在Java中,您可以使用「putRecordsRequestEntry.setPartitionKey(Long.toString(System.currentTimeMillis()))
」或「putRecordRequest.setPartitionKey(Long.toString(System.currentTimeMillis()))
」作爲示例。
我們遇到** timestamp **的不好的情況。由於分區鍵不能按預期的方式工作,因此當前時間戳差異爲毫秒。因此,我們用** uuid **來改變它。 –
這完全取決於用例。 您需要確保所有相關數據都歸入單個分片,以便您可以根據需要彙總數據。
如果你沒有這個要求使用任何隨機密鑰應該沒問題。
- 1. 如何扇出AWS kinesis流?
- 2. AWS的Kinesis流,創建流錯誤
- 3. 圍繞着aws kinesis流
- 4. Kinesis + AWS Lambda:監測流
- 5. 按負載將AWS Kinesis Firehose數據分區爲s3
- 6. 預先確定RDD分區的數量
- 7. 如何確定AWS Lambda函數中的當前區域?
- 8. DynamoDB到Kinesis流
- 9. 使用node.js消耗AWS Kinesis流
- 10. 分區給定的總的分區和分區數的列表
- 11. aws kinesis流以較低的速率向lambda發送數據
- 12. AWS Lambda函數從kinesis流中無限讀取記錄
- 13. 如何將數據寫入Kinesis中的特定分片
- 14. 如何使用Java SDK獲取AWS Kinesis Firehose流詳細信息
- 15. 汽車線kinesis流kinesis firehose?
- 16. 如何區分相對於張量流中的輸入變量
- 17. AWS Kinesis leaseOwner混淆
- 18. 從AWS遷移Kinesis
- 19. Scala中我們如何聚集的陣列,以確定每個鍵的數量和百分比VS總
- 20. AWS Kinesis寫入吞吐量沒有數據,但有總數傳入請求中的數據
- 21. 從過去的AWS Kinesis中讀取
- 22. 流的分區
- 23. 如何在Cassandra中定義常量分區鍵
- 24. 無法使用可靠的模塊創建aws kinesis流...!
- 25. 如何確定選擇器的參數/關鍵字的數量
- 26. 如何訪問AWS中的Kinesis ApproxArrivalTime Lambda表達式
- 27. 張量流中超參數搜索時的彙總分組?
- 28. 使用kinesis流和流水線對流數據進行排序
- 29. Kinesis輸入流到Logstash
- 30. 查詢/過濾kinesis流中的事件
看看這個問題,也許它有幫助; http://stackoverflow.com/a/31377161/1622134 – az3