1. 程式人生 > 其它 >kafka叢集部署-儲存空間-頻寬計算

kafka叢集部署-儲存空間-頻寬計算

一、儲存空間計算

假設公司有個業務每天需要向 Kafka 叢集傳送 1 億條訊息,每條訊息儲存兩份以防止資料丟失,另外訊息預設儲存兩週時間。現在假設訊息的平均大小是 1KB,那麼 Kafka 叢集需要為這個業務預留多少磁碟空間?

 

每天 1 億條 1KB 大小的訊息,儲存兩份且留存兩週的時間,那麼總的空間大小就等於 1 億 * 1KB * 2 / 1000 / 1000 = 200GB。

一般情況下 Kafka 叢集除了訊息資料還有其他型別的資料,比如索引資料等,故我們再為這些資料預留出 10% 的磁碟空間,因此總的儲存容量就是 220GB。

儲存兩週容量即為 220GB * 14,大約 3TB 左右。

Kafka 支援資料的壓縮,假設壓縮比是 0.75,也就是0.75 * 3 = 2.25TB。

 

總結出,當部署kafka叢集的時候需要考慮以下幾個元素:

  • 新增訊息數
  • 訊息留存時間
  • 平均訊息大小
  • 備份數
  • 是否啟用壓縮

二、頻寬

網路大量進行資料傳輸的框架而言,頻寬特別容易成為瓶頸。特別是在跨機房的場景。

頻寬也主要有兩種:1Gbps 的千兆網路和 10Gbps 的萬兆網路,特別是千兆網路應該是一般公司網路的標準配置了。

千兆網路為例,如何規劃所需的 Kafka 伺服器的數量。

頻寬是 1Gbps,即每秒處理 1Gb 的資料,假設每臺 Kafka 伺服器不是安裝在專屬的機器上,也就是說每臺 Kafka 機器上混布其他服務,大概會用到 70% 的頻寬資源。

也就是說單臺 Kafka 伺服器最多也就能使用大約 700Mb 的頻寬資源,即最大頻寬資源是700Mb,通常要再額外預留出 2/3 的資源,即單臺伺服器使用頻寬 700Mb / 3 ≈ 240Mbps。

有了頻寬量就可以計算1 小時內處理 1TB 資料所需的伺服器數量了。

如果我們每秒需要處理 2336Mb 的資料,除以 240,約等於 10 臺伺服器。如果訊息還需要額外複製兩份,那麼總的伺服器臺數還要乘以 3,即 30 臺。

總結:

  • 最大提供70%頻寬到kafka使用,避免大流量丟包
  • 預留給kafka使用的頻寬,最好只使用到機器頻寬的1/3。
  • 預計每秒會處理到的資料量