kafak生產(chǎn)運(yùn)維相關(guān)

不同的發(fā)行版本

  • Apache kafak
  • Confluent kafka
  • CDH kafak

迭代版本

  • 0.7版本 : 只提供了最基礎(chǔ)的消息隊(duì)列功能
  • 0.8版本 : 引入了副本機(jī)制
  • 0.9.0.0版本 : 增加安全認(rèn)證/權(quán)限功能挽唉;使用java重寫(xiě)了新版本的消費(fèi)者api缸濒;引入了kafak Connect組件;
  • 0.10.0.0版本 : 引入kafka Streams, 升級(jí)成分布式流處理平臺(tái)
  • 0.11.0.0版本 : 提供了冪等性Producer API及事務(wù)API羹幸;對(duì)kafka>消息格式做了重構(gòu)
  • 1.0和2.0版本 : Kafka Streams的優(yōu)化改進(jìn)
    使用時(shí)盡量保持服務(wù)器端版本和客戶(hù)端版本一致

如何估算生產(chǎn)環(huán)境所需Kafka 服務(wù)器數(shù)量

假設(shè)公司的機(jī)房環(huán)境是千兆網(wǎng)絡(luò)蛉威,即 1Gbps; 業(yè)務(wù)需求1 小時(shí)內(nèi)處理 1TB 的業(yè)務(wù)數(shù)據(jù)扬绪;需要多少臺(tái) Kafka 服務(wù)器來(lái)完成這個(gè)業(yè)務(wù)呢萤晴?

帶寬是 1Gbps几迄,即每秒處理 1Gb, 假設(shè) Kafka 會(huì)用到 70% 的帶寬資源, 再額外預(yù)留出 2/3 的資源牺勾,即單臺(tái)服務(wù)器使用帶寬 700Mb / 3 ≈ 240Mbps;
1 小時(shí)內(nèi)處理 1TB 數(shù)據(jù), 根據(jù)這個(gè)目標(biāo),我們每秒需要處理 2336Mb (1024 * 1024 * 8 / 3600 )的數(shù)據(jù)毅整,除以 240趣兄,約等于 10 臺(tái)服務(wù)器; 如果消息還需要額外復(fù)制兩份悼嫉,那么總的服務(wù)器臺(tái)數(shù)還要乘以 3艇潭,即 30 臺(tái)。

如何估算生產(chǎn)環(huán)境所需Kafka 的磁盤(pán)容量

假如每天1 億條消息戏蔑,每條消息大小1KB, 每條消息保存兩份且留存兩周的時(shí)間蹋凝;那么kafka集群需要預(yù)留多少磁盤(pán)空間?

每天的消息大小為1 億 * 1KB * 2 / 1000 / 1000 = 200GB总棵; 還要為索引等文件預(yù)留出 10% 的磁盤(pán)空間仙粱,那么兩周所需要的磁盤(pán)空間為:200GB * 1.1 * 14 = 大約 3TB 左右;假設(shè)壓縮比是 0.75彻舰,那么最后你需要規(guī)劃的存儲(chǔ)空間就是 0.75 * 3 = 2.25TB伐割。

重要的生產(chǎn)運(yùn)維參數(shù)

  • 建議配置多個(gè)路徑,且最好掛載到不同磁盤(pán)上
    log.dirs:/home/kafka1,/home/kafka2,/home/kafka3

  • 多個(gè) Kafka 集群使用同一套 ZooKeeper 集群時(shí)
    zookeeper.connect: zk1:2181,zk2:2181,zk3:2181/kafka1

  • listeners給內(nèi)網(wǎng)訪問(wèn)刃唤; advertised.listeners主要是為外網(wǎng)訪問(wèn)用的隔心;Broker 端和 Client 端應(yīng)用配置中最好全部填寫(xiě)主機(jī)名
    listeners:SSL: //localhost:9092
    advertised.listeners:

  • 是否允許自動(dòng)創(chuàng)建 Topic
    auto.create.topics.enable:false

  • 是否允許 Unclean Leader 選舉
    unclean.leader.election.enable:false

  • 是否允許定期進(jìn)行 Leader 選舉
    auto.leader.rebalance.enable:false

  • 都是控制一條消息數(shù)據(jù)被保存多長(zhǎng)時(shí)間
    log.retention.hours=168 表示默認(rèn)保存 7 天的數(shù)據(jù)

  • 指定 Broker 為消息保存的總磁盤(pán)容量大小
    log.retention.bytes:值默認(rèn)是 -1

  • 控制 Broker 能夠接收的最大消息大小
    message.max.bytes:默認(rèn)的 1000012 太少了,還不到 1MB

不丟失消息的參考配置

  • 發(fā)送消息時(shí)使用帶回調(diào)的接口
    producer.send(msg, callback)

  • 表明所有ISR中副本 Broker 都要接收到消息尚胞,該消息才算是“已提交”
    Producer端的參數(shù) 設(shè)置設(shè)置 acks = all

  • 自動(dòng)重試消息發(fā)送
    Producer端的參數(shù)設(shè)置retries > 0

  • 將消息多保存幾份
    Broker 端的參數(shù) replication.factor >= 3

  • 控制的是消息至少要被寫(xiě)入到多少個(gè)副本才算是“已提交”
    Broker 端的參數(shù) min.insync.replicas > 1硬霍; 默認(rèn)值為 1

  • 確保 replication.factor > min.insync.replicas。如果兩者相等笼裳,那么只要有一個(gè)副本掛機(jī)唯卖,整個(gè)分區(qū)就無(wú)法正常工作了

  • 確保消息消費(fèi)完成再提交
    Consumer 端的參數(shù) enable.auto.commit=false;并采用手動(dòng)提交位移的方式

減少Rebalance

  • Consumer 端參數(shù)躬柬,多久沒(méi)有接受到心跳移除consumer
    建議session.timeout.ms = 6s 默認(rèn)10s

  • Consumer 端參數(shù)拜轨,Consumer 實(shí)例發(fā)送心跳請(qǐng)求的頻率,要保證 Consumer 實(shí)例在被判定為“dead”之前允青,能夠發(fā)送至少 3 輪的心跳請(qǐng)求
    建議heartbeat.interval.ms = 2s

  • Consumer 端參數(shù)橄碾,Consumer 端應(yīng)用程序兩次調(diào)用 poll 方法的最大時(shí)間間隔。 超過(guò)Consumer 會(huì)主動(dòng)發(fā)起“離開(kāi)組”的請(qǐng)求(一般發(fā)生在手動(dòng)提交)
    建議max.poll.interval.ms 設(shè)置得大一點(diǎn)颠锉,比下游最大處理時(shí)間稍長(zhǎng)一點(diǎn)法牲;默認(rèn)5分鐘; 或改小點(diǎn)max.poll.records(默認(rèn)500)

參考資料
Kafka核心技術(shù)與實(shí)戰(zhàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末琼掠,一起剝皮案震驚了整個(gè)濱河市拒垃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓷蛙,老刑警劉巖悼瓮,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戈毒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡谤牡,警方通過(guò)查閱死者的電腦和手機(jī)副硅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)翅萤,“玉大人恐疲,你說(shuō)我怎么就攤上這事√酌矗” “怎么了培己?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)胚泌。 經(jīng)常有香客問(wèn)我省咨,道長(zhǎng),這世上最難降的妖魔是什么玷室? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任零蓉,我火速辦了婚禮,結(jié)果婚禮上穷缤,老公的妹妹穿的比我還像新娘敌蜂。我一直安慰自己,他們只是感情好津肛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布章喉。 她就那樣靜靜地躺著,像睡著了一般身坐。 火紅的嫁衣襯著肌膚如雪秸脱。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天部蛇,我揣著相機(jī)與錄音摊唇,去河邊找鬼。 笑死搪花,一個(gè)胖子當(dāng)著我的面吹牛遏片,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撮竿,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼笔呀!你這毒婦竟也來(lái)了幢踏?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤许师,失蹤者是張志新(化名)和其女友劉穎房蝉,沒(méi)想到半個(gè)月后僚匆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搭幻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年咧擂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檀蹋。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡松申,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俯逾,到底是詐尸還是另有隱情贸桶,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布桌肴,位于F島的核電站皇筛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏坠七。R本人自食惡果不足惜水醋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望彪置。 院中可真熱鬧拄踪,春花似錦、人聲如沸悉稠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)的猛。三九已至耀盗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卦尊,已是汗流浹背叛拷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岂却,地道東北人忿薇。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像躏哩,于是被迫代替她去往敵國(guó)和親署浩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354