Topic在Kafka中是主題的意思,生產者將消息發送到主題,消費者再訂閱相關的主題,並從主題上拉取消息。負載均衡
在建立Topic的時候,有兩個參數是須要填寫的,那就是partions和replication-factor。性能
主題分區數。kafka經過分區策略,將不一樣的分區分配在一個集羣中的broker上,通常會分散在不一樣的broker上,當只有一個broker時,全部的分區就只分配到該Broker上。3d
消息會經過負載均衡發佈到不一樣的分區上,消費者會監測偏移量來獲取哪一個分區有新數據,從而從該分區上拉取消息數據。日誌
分區數越多,在必定程度上會提高消息處理的吞吐量,由於kafka是基於文件進行讀寫,所以也須要打開更多的文件句柄,也會增長必定的性能開銷。blog
若是分區過多,那麼日誌分段也會不少,寫的時候因爲是批量寫,其實就會變成隨機寫了,隨機 I/O 這個時候對性能影響很大。因此通常來講 Kafka 不能有太多的 Partition。kafka
下圖設置topic-1的partions爲3,會自動分配在不一樣的broker上,採用均勻分配策略,當broker和partions同樣時,就均勻分佈在不一樣的broker上。it
用來設置主題的副本數。每一個主題能夠有多個副本,副本位於集羣中不一樣的broker上,也就是說副本的數量不能超過broker的數量,不然建立主題時會失敗。io
好比partions 設置爲20,replicationFactor設置爲1. Broker爲2.能夠看出,分區會均勻在broker集羣
上進行分配。im
好比partions 設置爲10,replicationFactor設置爲2. Broker爲2.每一個broker都有副本存在。