大剑无锋之Kafka的Patition的作用【面试推荐】
生活随笔
收集整理的這篇文章主要介紹了
大剑无锋之Kafka的Patition的作用【面试推荐】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先介紹patition的概念:
?Partition:為了實現擴展性,一個非常大的topic可以分布到多個broker (即服務器)上,一個topic可以分為多個partition,每個partition是一個有序的隊列;
分區:
1、增強擴展能力,讓其可以處理任意多的數據,即每個 Partition 可以通過調整以適應它所在的機器,而一個 topic又可以有多個 Partition 組成,因此整個集群就可以適應任意大小的數據了;
2、作為并行單元,提高并行能力,因為可以以 Partition 為單位讀寫了。
分區的原則:
我們需要將 producer 發送的數據封裝成一個 ProducerRecord 對象。
(1)指明 partition 的情況下,直接將指明的值直接作為 partiton 值;
(2)沒有指明 partition 值但有 key 的情況下,將 key 的 hash 值與 topic 的 partition數進行取余得到 partition 值;
(3)既沒有 partition 值又沒有 key 值的情況下,第一次調用時隨機生成一個整數(后面每次調用在這個整數上自增),將這個值與 topic 可用的 partition 總數取余得到 partition
值,也就是常說的 round-robin 算法。
總結
以上是生活随笔為你收集整理的大剑无锋之Kafka的Patition的作用【面试推荐】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大剑无锋之Hadoop的三个作业调度器【
- 下一篇: 大剑无锋之Spark中的Driver是什