kafka topic制定规则
kafka topic的制定,我們要考慮的問題有很多,比如生產環境中用幾備份、partition數目多少合適、用幾臺機器支撐數據量,這些方面如何去考量?筆者根據實際的維護經驗,寫一些思考,希望大家指正。
1.replicas數目
?
可以從上圖看到,備份越多,性能越低,因為kafka的寫入只寫入主分區,備份相當于消費者從主分區pull數據,這樣勢必會造成性能的損耗,故建議在生產環境中使用一主一備即可。
2. partition數量
(1)設置partition數量的時候我們需要注意:kafka的partition可以在創建時候指定,也可以alter(kafka-topic.sh里面的參數),但是,這個修改只能增加partition數目,并不能減少。這帶來的直接影響就是我們在設置按照日志數量回滾數據的時候(即:設置log.retention.bytes控制日志清除),需要考慮大小,因為log.retention.bytes設置的是partition的日志大小。
(2)partition的數目并不是越多越好,以下是筆者所做的性能測試。
//todo
可以看到,當partition數目是broker數目的整數倍的時候,它的TPS較高,非整數倍的時候,由于數據不均衡,所以TPS會有不同程度的影響。
3.消費速度
消費速度需要進行性能測試做相應評估,消費者/生產者加機器,都可以帶來性能的線性增加。
?
? ? ? ? ?
?
4.制定規則
? ?綜上考慮,筆者在生產環境中的實踐規則如下:
- Partition數量=broker數量*2[這個作為預先設置,設置小一點,如果線上機器不夠,增加機器的話,同時topic也會增加2,增量不要設置太大]
- partition數量需要大于consumer數量
- partition數量過多會給consumer帶來額外的開銷,建議consumer線程數(消費者個數)設置為partition數目,或略小于即可。
- broker數量 =目標吞吐量/max(producer吞吐量,consumer吞吐量)
5.reference
如何確定Kafka的分區數、key和consumer線程數
kafka benchmark
kafka深度解析
轉載于:https://www.cnblogs.com/acceml/p/5655081.html
總結
以上是生活随笔為你收集整理的kafka topic制定规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: phpstorm一个窗口打开多个项目
- 下一篇: 王者荣耀战士通用铭文