KAFKA分區選擇策略


kafka producer 發送消息的時候,可以指定 key,這個 key 的作用是為消息選擇存儲分區

  • 當指定 key 且不為空的時候,kafka 是根據 key 的 hash 值與分區數取模來決定數據存儲到那個分區

  • 當 key=null 時,kafka 是先從緩存中取分區號,然后判斷緩存的值是否為空,如果不為空,就將消息存到這個分區,否則重新計算要存儲的分區,並將分區號緩存起來,供下次使用

  • kafka 定義了一 個全局變量, 這個變量值是配置參數中的topic.metadata.refresh.interval.ms 設置的值,也就是說在這個時間內,key=null 的消息都會往緩存起來的這個分區存儲,當時緩存過時之后,就會重新計算分區號,將計算結果緩存起來。也就是說在key為null的情況下,Kafka並不是每條消息都隨機選擇一Partition;而是每隔 topic.metadata.refresh.interval.ms 才會隨機選擇一次!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM