溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

kafka真實環(huán)境如何部署

發(fā)布時間:2021-12-08 15:41:38 來源:億速云 閱讀:199 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹了kafka真實環(huán)境如何部署,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

操作系統(tǒng)選型

因為kafka服務(wù)端代碼是Scala語言開發(fā)的,因此屬于JVM系的大數(shù)據(jù)框架,目前部署最多的3類操作系統(tǒng)主要由Linux ,OS X 和Windows,但是部署在Linux數(shù)量最多,為什么呢?因為I/O模型的使用和數(shù)據(jù)網(wǎng)絡(luò)傳輸效率兩點。

1: 第一:Kafka新版本的Clients在設(shè)計底層網(wǎng)絡(luò)庫時采用了Java的Select模型,而在Linux實現(xiàn)機(jī)制是epoll,感興趣的讀者可以查詢一下epoll和select的區(qū)別,明確一點就是:kafka跑在Linux上效率更高,因為epoll取消了輪詢機(jī)制,換成了回調(diào)機(jī)制,當(dāng)?shù)讓舆B接socket數(shù)較多時,可以避免CPU的時間浪費(fèi)。
2: 第二:網(wǎng)絡(luò)傳輸效率上。kafka需要通過網(wǎng)絡(luò)和磁盤進(jìn)行數(shù)據(jù)傳輸,而大部分操作系統(tǒng)都是通過Java的FileChannel.transferTo方法實現(xiàn),而Linux操作系統(tǒng)則會調(diào)用sendFile系統(tǒng)調(diào)用,也即零拷貝(Zero Copy 技術(shù)),避免了數(shù)據(jù)在內(nèi)核地址空間和用戶程序空間進(jìn)行重復(fù)拷貝。

磁盤類型規(guī)劃

1: 機(jī)械磁盤(HDD)
一般機(jī)械磁盤尋道時間是毫秒級的,若有大量隨機(jī)I/O,則將會出現(xiàn)指數(shù)級的延遲,但是kafka是順序讀寫的,因此對于機(jī)械磁盤的性能也是不弱的,所以,基于成本問題可以考慮。
2: 固態(tài)硬盤(SSD)
讀寫速度可觀,沒有成本問題可以考慮。
JBOD (Just Bunch Of Disks ) 經(jīng)濟(jì)實惠的方案,對數(shù)據(jù)安全級別不是非常非常高的情況下可以采用,建議用戶在Broker服務(wù)器上設(shè)置多個日志路徑,每個路徑掛載在不同磁盤上,可以極大提升并發(fā)的日志寫入速度。
3: RAID 磁盤陣列
常見的RAID是RAID10,或者稱為(RAID 1+0) 這種磁盤陣列結(jié)合了磁盤鏡像和磁盤帶化技術(shù)來保護(hù)數(shù)據(jù),因為使用了磁盤鏡像技術(shù),使用率只有50%,注意,LinkedIn公司采用的就是RAID作為存儲來提供服務(wù)的。那么弊端在什么地方呢?如果Kafka副本數(shù)量設(shè)置為3,那么實際上數(shù)據(jù)將存在6倍的冗余數(shù)據(jù),利用率實在太低。因此,LinkedIn正在計劃更改方案為JBOD.

磁盤容量規(guī)劃

我們公司物聯(lián)網(wǎng)平臺每天大約能夠產(chǎn)生一億條消息,假設(shè)副本replica設(shè)置為2 (其實我們設(shè)置為3),數(shù)據(jù)留存時間為1周,平均每條上報事件消息為1K左右,那么每天產(chǎn)生的消息總量為:1億 乘 2 乘 1K 除以 1000 除以 1000 =200G磁盤。預(yù)留10%的磁盤空間,為210G。一周大約為1.5T。采用壓縮,平均壓縮比為0.5,整體磁盤容量為0.75T。
關(guān)聯(lián)因素主要有:

新增消息數(shù)
副本數(shù)
是否啟用壓縮
消息大小
消息保留時間

內(nèi)存容量規(guī)劃

kafka對于內(nèi)存的使用,并不過多依賴JVM 內(nèi)存,而是更多的依賴操作系統(tǒng)的頁緩存,consumer若命中頁緩存,則不用消耗物理I/O操作。一般情況下,java堆內(nèi)存的使用屬于朝生夕滅的,很快會被GC,一般情況下,不會超過6G,對于16G內(nèi)存的機(jī)器,文件系統(tǒng)page cache 可以達(dá)到10-14GB。

1: 怎么設(shè)計page cache,可以設(shè)置為單個日志段文件大小,若日志段為10G,那么頁緩存應(yīng)該至少設(shè)計為10G以上。
2: 堆內(nèi)存最好不要超過6G。

CPU選擇規(guī)劃

kafka不屬于計算密集型系統(tǒng),因此CPU核數(shù)夠多就可以,而不必追求時鐘頻率,因此核數(shù)選擇最好大于8。

網(wǎng)絡(luò)帶寬決定Broker數(shù)量

帶寬主要有1Gb/s 和10 Gb/s 。我們可以稱為千兆位網(wǎng)絡(luò)和萬兆位網(wǎng)絡(luò)。舉例如下:
我們的物聯(lián)網(wǎng)系統(tǒng)一天每小時都要處理1Tb的數(shù)據(jù),我們選擇1Gb/b帶寬,那么需要選擇多少機(jī)器呢?

假設(shè)網(wǎng)絡(luò)帶寬kafka專用,且分配給kafka服務(wù)器70%帶寬,那么單臺Borker帶寬就是710Mb/s,但是萬一出現(xiàn)突發(fā)流量問題,很容易把網(wǎng)卡打滿,因此在降低1/3,也即240Mb/s。因為1小時處理1TTB數(shù)據(jù),每秒需要處理292MB,1MB=8Mb,也就是2336Mb數(shù)據(jù),那么一小時處理1TB數(shù)據(jù)至少需要2336/240=10臺Broker數(shù)據(jù)。冗余設(shè)計,最終可以定為20臺機(jī)器。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“kafka真實環(huán)境如何部署”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI