溫馨提示×

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

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

Kafka的特點(diǎn)有哪些

發(fā)布時(shí)間:2022-01-12 10:26:30 來(lái)源:億速云 閱讀:150 作者:iii 欄目:云計(jì)算

本文小編為大家詳細(xì)介紹“Kafka的特點(diǎn)有哪些”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Kafka的特點(diǎn)有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

Kafka是啥?

Kafka是個(gè)集群的消息中間件+存儲(chǔ),一個(gè)節(jié)點(diǎn)可以存儲(chǔ)幾T的數(shù)據(jù)!

為啥一個(gè)中間件需要存儲(chǔ)數(shù)據(jù)呢?

原來(lái),對(duì)于Linkin這樣的互聯(lián)網(wǎng)企業(yè)來(lái)說(shuō),用戶和網(wǎng)站上產(chǎn)生的數(shù)據(jù)有三種

  1. 需要實(shí)時(shí)響應(yīng)的交易數(shù)據(jù),用戶提交一個(gè)表單,輸入一段內(nèi)容,這種數(shù)據(jù)最后是存放在關(guān)系數(shù)據(jù)庫(kù)(Oracle, MySQL)中的,有些需要事務(wù)支持。

  2. 活動(dòng)流數(shù)據(jù),準(zhǔn)實(shí)時(shí)的,例如頁(yè)面訪問(wèn)量、用戶行為、搜索情況,這些數(shù)據(jù)可以產(chǎn)生啥?廣播、排序、個(gè)性化推薦、運(yùn)營(yíng)監(jiān)控等。這種數(shù)據(jù)一般是前端服務(wù)器先寫(xiě)文件,然后通過(guò)批量的方式把文件倒到Hadoop這種大數(shù)據(jù)分析器里面慢慢整。

  3. 各個(gè)層面程序產(chǎn)生的日志,例如httpd的日志、tomcat的日志、其他各種程序產(chǎn)生的日志。碼農(nóng)專(zhuān)用,這種數(shù)據(jù)一個(gè)是用來(lái)監(jiān)控報(bào)警,還有就是用來(lái)做分析。

Linkin的牛逼之處,就在于他們發(fā)現(xiàn)了原先2,3的數(shù)據(jù)處理方式有問(wèn)題,對(duì)于2而言,原來(lái)動(dòng)輒一兩個(gè)鐘頭批處理一次的方式已經(jīng)不行了,用戶在一次購(gòu)買(mǎi)完之后最好馬上就能看到相關(guān)的推薦。而對(duì)于3而言,傳統(tǒng)的syslog模式等也不好用,而且很多情況下2和3用的是同一批數(shù)據(jù),只是數(shù)據(jù)消費(fèi)者不一樣。

這2種數(shù)據(jù)的特點(diǎn)是:

  1. 準(zhǔn)實(shí)時(shí),不需要秒級(jí)響應(yīng),分鐘級(jí)別即可。

  2. 數(shù)據(jù)量巨大,是交易數(shù)據(jù)的10倍以上。

  3. 數(shù)據(jù)消費(fèi)者眾多,例如評(píng)級(jí)、投票、排序、個(gè)性化推薦、安全、運(yùn)營(yíng)監(jiān)控、程序監(jiān)控、后期報(bào)表等

于是,Linkin就自己開(kāi)發(fā)了一套系統(tǒng),專(zhuān)門(mén)用來(lái)處理這種性質(zhì)的數(shù)據(jù),這就是Kafka

那么,在整個(gè)實(shí)踐過(guò)程中Linkin做了什么樣的設(shè)計(jì),解決了什么問(wèn)題?

首先看下數(shù)據(jù)流動(dòng)圖:

Kafka的特點(diǎn)有哪些

多數(shù)據(jù)中心怎么管理數(shù)據(jù):

Kafka的特點(diǎn)有哪些

集群本身的架構(gòu)圖

Kafka的特點(diǎn)有哪些

Kafka內(nèi)部架構(gòu)圖,分為數(shù)據(jù)產(chǎn)生者(Producer),數(shù)據(jù)中間者(Broker),數(shù)據(jù)消費(fèi)者(Consumer)

顯然,這是一個(gè)集群的發(fā)布/訂閱系統(tǒng),有如下幾個(gè)特點(diǎn)

  1. 生產(chǎn)者是推數(shù)據(jù)(Push),消費(fèi)者是拉數(shù)據(jù)(Pull)。存在數(shù)據(jù)復(fù)用,在Linkin平均生產(chǎn)1條消息會(huì)被消費(fèi)5.5次。

  2. 數(shù)據(jù)生產(chǎn)者和數(shù)據(jù)消費(fèi)者的速度不對(duì)等,所以要把數(shù)據(jù)沉淀在Kafka內(nèi)慢慢處理,Linkin一般在集群內(nèi)放7天的數(shù)據(jù)。

  3. 性能上追求高吞吐,保證一定的延時(shí)性之內(nèi)。這方面做了大量?jī)?yōu)化,包括沒(méi)有全局hash,批量發(fā)送,跨數(shù)據(jù)中心壓縮等等。

  4. 容錯(cuò)性上使用的“至少傳輸一次”的語(yǔ)義。不保證強(qiáng)一次,但避免最多傳一次的情況。

  5. 集群中數(shù)據(jù)分區(qū),保證單個(gè)數(shù)據(jù)消費(fèi)者可以讀到某話題(topic)的某子話題(例如某用戶的數(shù)據(jù))的所有數(shù)據(jù),避免全局讀數(shù)據(jù)

  6. 數(shù)據(jù)規(guī)范性,所有數(shù)據(jù)分為數(shù)百個(gè)話題,然后在數(shù)據(jù)的源頭——生產(chǎn)者(Producer)這邊就用Schema來(lái)規(guī)范數(shù)據(jù),這種理念使得后期的數(shù)據(jù)傳輸、序列化、壓縮、消費(fèi)都有了統(tǒng)一的規(guī)范,同時(shí)也解決了這個(gè)領(lǐng)域非常麻煩的數(shù)據(jù)版本不兼容問(wèn)題——生產(chǎn)者一改代碼,消費(fèi)者就抓瞎。

  7. 用于監(jiān)控,這個(gè)系統(tǒng)的威力在于,前面所有生產(chǎn)系統(tǒng)的數(shù)據(jù)流向,通過(guò)這個(gè)系統(tǒng)都能關(guān)聯(lián)起來(lái),用于日常的運(yùn)營(yíng)也好,用于數(shù)據(jù)審計(jì),用于運(yùn)維級(jí)別的監(jiān)控也好都是神器??!

To be continued...

所以,Kafka的設(shè)計(jì)基本上目前這個(gè)領(lǐng)域的唯一選擇。我也看了很多其他實(shí)現(xiàn),包括:

scribe(Facebook)          | 2   | C++      | 已停止更新,不建議使用
flume(Apache, Cloudera)   |1    | Java     | 配置較重
chukwa(Hadoop)            |12   | Java     | 2012發(fā)布最后一版,不建議使用
fluentd                   |1    | Ruby     | 比較活躍,看起來(lái)不錯(cuò)
logstash                  |12345| JRuby    | 功能全,據(jù)說(shuō)有不少小bug
splunk                    |12345| C/Python | 商業(yè)閉源,功能強(qiáng)大,可做參考
timetunnel(Alibaba)       | 2   | Java     | 基于thrift,10年左右成熟
kafka(Linkin)             | 2 4 | Scala    | 性能強(qiáng)勁,設(shè)計(jì)巧妙,可以作為基礎(chǔ)設(shè)施
Samza(Linkin)             |12345|          | =Kafka+YARN+Hadoop
rabbitmq/activemq/qpid    | 2   | Java     | 傳統(tǒng)消息中間件
Storm(twitter)            |  3  | Clojure  | 實(shí)時(shí)計(jì)算系統(tǒng)
Jstorm(Alibaba)           |  3  | Java     | storm的Java版,據(jù)說(shuō)更穩(wěn)定
S4(Yahoo)                 |  3  | Java     | 2013年已停止維護(hù)
Streambase(IBM)           |  3  | Java     | 商業(yè)產(chǎn)品,作為參考
HStreaming                |  3  | Java     | 商業(yè)產(chǎn)品,作為參考
spark                     |  3  | Scala    | 基于Hadoop
mongodb                   |   4 | C++      | 比較浪費(fèi)硬盤(pán)
mysql                     |   4 | C++      | 無(wú)需多說(shuō)
hdfs/hbase                |   4 | Java     | 無(wú)需多說(shuō)
  1. 數(shù)據(jù)采集組件

  2. 數(shù)據(jù)傳輸組件

  3. 數(shù)據(jù)實(shí)時(shí)計(jì)算/索引/搜索組件

  4. 數(shù)據(jù)存儲(chǔ)/持久化組件

  5. 數(shù)據(jù)展示/查詢/報(bào)警界面組件

從數(shù)據(jù)傳輸這塊的設(shè)計(jì)理念來(lái)說(shuō),Kafka是最為先進(jìn)的,

在目前的各種實(shí)現(xiàn)中,我猜測(cè)可以和Kafka一戰(zhàn)的也就只有Splunk了

讀到這里,這篇“Kafka的特點(diǎn)有哪些”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

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

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

AI