1.kafka集群單個節(jié)點磁盤掛載的越多越好
業(yè)界Kafka的標準使用方式是作為臨時緩存使用。因此,很多人會誤以為,kafka的每個節(jié)點只要存儲夠大就行,不用關(guān)心其他的指標。官方并不建議kafka單節(jié)點關(guān)在多個磁盤,因為磁盤越多,表示需要更多的處理線程去管理(num.io.thread決定),CPU的壓力將非常大,如果磁盤數(shù)大于了CPU邏輯核數(shù),kafka的CPU將因為非常繁忙導(dǎo)致數(shù)據(jù)落盤失敗,從而影響業(yè)務(wù)。
建議:
- 建議每個節(jié)點掛盤數(shù),滿足每臺機器最大掛盤數(shù)量 <= processor(CPU邏輯核數(shù)) / 2。
- 最優(yōu)策略為每個節(jié)點使用raid5或者raid10掛載數(shù)據(jù)目錄,每個raid5或者raid10的邏輯盤不超過8塊。
2.把kafka當做數(shù)據(jù)庫使用
很多人認為,如果數(shù)據(jù)重要,需要把kafka中的數(shù)據(jù)保存周期延長到很大(例如:1年),例如。Kafka對于數(shù)據(jù)目錄中的每個segment文件會有一個操作句柄對應(yīng),如果數(shù)據(jù)保存周期過長,會導(dǎo)致操作句柄使用率增加,如果句柄數(shù)無限制增加并且到達上限后會導(dǎo)致kafka服務(wù)異常。
正常情況下,業(yè)務(wù)側(cè)應(yīng)當根據(jù)集群中的磁盤總?cè)萘縼碓u估數(shù)據(jù)的保留時間。如果,集群中的業(yè)務(wù)種類多、數(shù)據(jù)量大。于此同時又不關(guān)心數(shù)據(jù)量的大小,很容易造成磁盤容量不足。
**建議:**業(yè)務(wù)側(cè)評估好數(shù)據(jù)量的大小,調(diào)整合適的保留時間。一般情況下,建議使用7天即可。
3.分區(qū)數(shù)越多越好
Kafka增加分區(qū)數(shù)的作用主要有兩點:第一:將數(shù)據(jù)分布均勻,防止不會出現(xiàn)某個節(jié)點或者某個數(shù)據(jù)盤的數(shù)據(jù)熱點。第二,提升消費并行度,消費者通常與分區(qū)是一一對應(yīng)的,提升分區(qū)數(shù)同樣也能提升消費者的個數(shù),從而提升消費性能。但是分區(qū)數(shù)不能無限制增加,如果數(shù)量太多會導(dǎo)致kafka和zookeeper負載增高,kafka內(nèi)部調(diào)度線程無法及時處理響應(yīng),導(dǎo)致節(jié)點進程故障。
建議:
- 建議集群中topic總量不超過2000,每個節(jié)點的分區(qū)總量不超過2000。
- 如果業(yè)務(wù)重要或者數(shù)據(jù)量很大,建議分區(qū)量=節(jié)點數(shù)*磁盤數(shù),如果該數(shù)值大于200,則分區(qū)數(shù)選擇為200,如果后期需要提升分區(qū)數(shù)來提升讀寫性能,可以使用kafka后臺命令逐步提升,如果數(shù)據(jù)量很小,建議分區(qū)量=節(jié)點數(shù),保證每個節(jié)點的數(shù)據(jù)量均衡。
4.業(yè)務(wù)側(cè)對寫入kafka的數(shù)據(jù)大小不感知
kafka組件的主要定位為消息隊列(非文件隊列),官方建議寫入kafka最佳的數(shù)據(jù)大小不超過15K。但是在很多的業(yè)務(wù)場景下,需要寫入的數(shù)據(jù)往往是大于15k的。Kafka服務(wù)端默認可以接受的最大的數(shù)據(jù)大小為10M
建議:
- 客戶端默認單條數(shù)據(jù)大小最大為1M(由配置request.size決定),在數(shù)據(jù)大小小于1M的情況下,使用默認值發(fā)送數(shù)據(jù)即可。
- 如果數(shù)據(jù)在1M到5M之間,開啟在生產(chǎn)端開啟壓縮模式(由type決定,可以選擇gzip, snappy, 或者lz4),開啟壓縮后,生產(chǎn)端的壓縮數(shù)據(jù)過程和消費端的解壓縮數(shù)據(jù)過程會增加CPU的使用率。
- 不建議發(fā)送大于5M的數(shù)據(jù),經(jīng)過驗證持續(xù)返送大于5M的數(shù)據(jù)會導(dǎo)致kafka的直接內(nèi)存溢出。
5.Topic可以隨意的創(chuàng)建和刪除
Kafka的topic代表了一個類型的數(shù)據(jù),頻繁的創(chuàng)建刪除topic會導(dǎo)致zookeeper通信壓力大,出現(xiàn)broker節(jié)點信息上報失敗,服務(wù)不可用的情況。一旦zookeeper出現(xiàn)異常,刪除topic的流程會處于阻塞狀態(tài),導(dǎo)致topic無法正常刪除。
建議:
- Topic不建議頻繁創(chuàng)建刪除。
- 對于有共同特點的數(shù)據(jù)(例如:協(xié)議類型相同),可以歸并到一個topic里面處理。
6.頻繁使用舊版本客戶端消費工具
舊版本的消費工具使用的命令如下:
每使用一次就會在zookeeper下生成一個永久節(jié)點。這個節(jié)點不會自動清理,如果經(jīng)常使用會導(dǎo)致zookeeper異常。文章來源:http://www.zghlxwxcb.cn/news/detail-442058.html
本文由華為云發(fā)布。文章來源地址http://www.zghlxwxcb.cn/news/detail-442058.html
到了這里,關(guān)于Kafka最佳實踐-Kafka常見的使用誤區(qū)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!