您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“Kafka的特點(diǎn)有哪些”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Kafka的特點(diǎn)有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
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ù)有三種:
需要實(shí)時(shí)響應(yīng)的交易數(shù)據(jù),用戶提交一個(gè)表單,輸入一段內(nèi)容,這種數(shù)據(jù)最后是存放在關(guān)系數(shù)據(jù)庫(kù)(Oracle, MySQL)中的,有些需要事務(wù)支持。
活動(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ù)分析器里面慢慢整。
各個(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)是:
準(zhǔn)實(shí)時(shí),不需要秒級(jí)響應(yīng),分鐘級(jí)別即可。
數(shù)據(jù)量巨大,是交易數(shù)據(jù)的10倍以上。
數(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)圖:
多數(shù)據(jù)中心怎么管理數(shù)據(jù):
集群本身的架構(gòu)圖
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)
生產(chǎn)者是推數(shù)據(jù)(Push),消費(fèi)者是拉數(shù)據(jù)(Pull)。存在數(shù)據(jù)復(fù)用,在Linkin平均生產(chǎn)1條消息會(huì)被消費(fèi)5.5次。
數(shù)據(jù)生產(chǎn)者和數(shù)據(jù)消費(fèi)者的速度不對(duì)等,所以要把數(shù)據(jù)沉淀在Kafka內(nèi)慢慢處理,Linkin一般在集群內(nèi)放7天的數(shù)據(jù)。
性能上追求高吞吐,保證一定的延時(shí)性之內(nèi)。這方面做了大量?jī)?yōu)化,包括沒(méi)有全局hash,批量發(fā)送,跨數(shù)據(jù)中心壓縮等等。
容錯(cuò)性上使用的“至少傳輸一次”的語(yǔ)義。不保證強(qiáng)一次,但避免最多傳一次的情況。
集群中數(shù)據(jù)分區(qū),保證單個(gè)數(shù)據(jù)消費(fèi)者可以讀到某話題(topic)的某子話題(例如某用戶的數(shù)據(jù))的所有數(shù)據(jù),避免全局讀數(shù)據(jù)
數(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)者就抓瞎。
用于監(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)控也好都是神器??!
所以,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ō)
數(shù)據(jù)采集組件
數(shù)據(jù)傳輸組件
數(shù)據(jù)實(shí)時(shí)計(jì)算/索引/搜索組件
數(shù)據(jù)存儲(chǔ)/持久化組件
數(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è)資訊頻道。
免責(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)容。