Kafka選型

wangebie發表於2020-12-14

版本

kafka經歷了 0.7,0.8,0.9,0.10,0.11,1.0,2.0等大版本,1.0以上的版本一般上是升級優化了kafka的流處理。若將kafka當做訊息佇列差別不大。目前我司使用的是kafka2.0版本

一般上我們使用的kafka都是Apache Kafka即社群版的

作業系統

作業系統無腦選Linux

磁碟

磁碟分為機械硬碟和固態硬碟,當然固態硬碟效能比機械好很多,但是kafka是追加寫,所以一般使用機械硬碟其實也夠用。但是具體問題具體分析

磁碟容量

需要根據公司業務進行實際規劃。需要幾個資料才能衡量

  1. 平均每條訊息的大小
  2. 平均每天傳送訊息數
  3. 訊息持久化時間
  4. 副本數

比如每天1億條訊息,每條1kb,儲存兩份,儲存兩週(訊息數,儲存時間,備份數,訊息大小)

1億*1kb*2/100/100=200GB

再加上其他型別的資料,如索引等等,因此要多預留10%以上即220GB(預留空間)

220GB*14天=3TB

kafka支援壓縮,假設壓縮比是0.75(是否啟用壓縮)

0.75*3=2.25TB

頻寬

Kafka是通過網路大量資料傳輸的框架,因此頻寬是一個瓶頸。Kafka效能出現問題有很大程度可能是因為頻寬。頻寬一般使用兩種 1Gbps (千兆網)和10Gbps(萬兆網)。我們需要根據頻寬來規劃Kafka伺服器的數量。

比如一個業務,需要1小時內處理1TB的業務資料,name需要多少臺Kafka伺服器?

每臺伺服器上應用最多也就70%(1.考慮不可能一臺伺服器就只部署一個kafka,2.當頻寬佔比太高了會有網路丟包的可能)。那麼一臺伺服器大約700Mb的頻寬資源。留給卡夫卡的1/3已經算很多了,那最多就是240Mbps(30MB/s,這個已經算很多了,其實可以再往下估計一點)。

1h處理1TB資料,則1s需要處理2336Mb資料。2336Mb/240Mbps =10臺伺服器。若總共有三個副本,則10*3=30臺伺服器

 

 

相關文章