kafka集群規(guī)劃

kafka的集群規(guī)劃主要需要考慮以下幾個方面:

  • 操作系統(tǒng):最好選擇Lunix系統(tǒng),因Linux提供的epoll模型使用的是I/O多路復(fù)用+信號驅(qū)動I/O的結(jié)合;且Linux可以實(shí)現(xiàn)零拷貝技術(shù),而Windows需要JDK1.8之后才支持零拷貝技術(shù)。
  • 磁盤規(guī)劃:普通的JBOD(Just Bunch Of Disks)和SSD的選擇,Kafka是對磁盤的順序訪問,所有減少了磁盤尋道道開銷,很大程度上抵消了SSD帶來的優(yōu)勢,而且JBOD磁盤的容量大、價(jià)格低又是另一優(yōu)勢。Kafka從框架層面就支持了副本機(jī)制,所以不再需要磁盤陣列來實(shí)現(xiàn)冗余,如果再以磁盤陣列的話,對于空間來講也是一種浪費(fèi)。
  • 磁盤容量:
    在磁盤規(guī)劃的過程中,需要結(jié)合以下幾點(diǎn)進(jìn)行考量:
    1、新增消息數(shù)
    2、消息留存時間
    3、平均消息大小
    4、副本數(shù)
    5、是否啟用壓縮
    如:client每天產(chǎn)生1億條消息,每條消息保存兩份并保留一周時間,平均每條消息的大小是1KB,那么我們需要為Kafka規(guī)劃多大的磁盤空間呢?
    每天產(chǎn)生的消息會占用:1億 * 2 * 1KB / 1000 / 1000 = 200GB
    最好預(yù)留10%的磁盤空間給其他數(shù)據(jù)文件(索引文件等)的存儲,10GB。
    那么整體磁盤規(guī)劃就應(yīng)該210 * 7 = 1.5T。這是在消息無壓縮的情況下,如果消息啟用壓縮,假設(shè)壓縮比為0.5,那么整體磁盤的容量就是0.75TB。
  • 內(nèi)存規(guī)劃:Kafka大量使用了操作系統(tǒng)的頁緩存,反而堆內(nèi)存中并沒有使用太多,一般堆內(nèi)存最好不要超過6GB,而頁緩存應(yīng)該提供在10GB以上的內(nèi)存空間,總之對于內(nèi)存規(guī)劃的建議如下:
    盡量分配更多的內(nèi)存給操作系統(tǒng)的page cache。
    不要為broker設(shè)置過大的堆內(nèi)存,最好不要超過6GB。
    page cache大小至少大于一個日志段堆大小。
  • CPU規(guī)劃:
    使用多核系統(tǒng),CPU核數(shù)最好大于8
    如果使用Kafka 0.10.0.0之前的版本或client端與broker端消息版本不一致(若無閑事配置,這種情況多半由client和broker版本不一致造成),且考慮多配置一些資源已防止消息解壓縮操作消耗過多CPU。
  • 帶寬規(guī)劃:
    盡量使用高速網(wǎng)絡(luò)。
    根據(jù)自身網(wǎng)絡(luò)條件和帶寬來評估Kafka集群機(jī)器數(shù)量。
    避免使用跨機(jī)房網(wǎng)絡(luò)。
    如:假設(shè)用戶網(wǎng)絡(luò)環(huán)境中的帶寬是1GB/s,用戶的業(yè)務(wù)目標(biāo)是每天用1小時來處理1TB的業(yè)務(wù)消息,那么在這種情況下Kafka到底需要多少臺機(jī)器呢?
    預(yù)估計(jì)算:網(wǎng)絡(luò)帶寬是1GB/s,假設(shè)分配的機(jī)器為Kafka專屬使用且為Kafka分配70%的帶寬資源(考慮到機(jī)器上還有其他的進(jìn)程使用網(wǎng)絡(luò)且網(wǎng)卡通常不能用滿,超過一定閾值可能出現(xiàn)網(wǎng)絡(luò)丟包情況,因此70%的設(shè)定是合理的),那么kafka每臺broker的帶寬就是1GB/s * 0.7 = 710MB/s。
    但事實(shí)上這是Kafka所使用的最高帶寬,用戶不能奢望Kafka集群平時就一直使用如此多的帶寬,畢竟萬一碰上突發(fā)流量,會極容易把網(wǎng)卡“打滿”,因此在70%的基礎(chǔ)上,一般再截取1/3,即710 / 3 = 240MB/s。
    如果要在1小時內(nèi)處理1TB的業(yè)務(wù)消息,也就是每秒2336MB數(shù)據(jù),那么至少需要2336/240 = 10臺機(jī)器。若副本數(shù)量是2,那么這個數(shù)字還需要再翻1倍。即20臺。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容