您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Kafka的特點有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Kafka的特點有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
Kafka是個集群的消息中間件+存儲,一個節點可以存儲幾T的數據!
為啥一個中間件需要存儲數據呢?
原來,對于Linkin這樣的互聯網企業來說,用戶和網站上產生的數據有三種:
需要實時響應的交易數據,用戶提交一個表單,輸入一段內容,這種數據最后是存放在關系數據庫(Oracle, MySQL)中的,有些需要事務支持。
活動流數據,準實時的,例如頁面訪問量、用戶行為、搜索情況,這些數據可以產生啥?廣播、排序、個性化推薦、運營監控等。這種數據一般是前端服務器先寫文件,然后通過批量的方式把文件倒到Hadoop這種大數據分析器里面慢慢整。
各個層面程序產生的日志,例如httpd的日志、tomcat的日志、其他各種程序產生的日志。碼農專用,這種數據一個是用來監控報警,還有就是用來做分析。
Linkin的牛逼之處,就在于他們發現了原先2,3的數據處理方式有問題,對于2而言,原來動輒一兩個鐘頭批處理一次的方式已經不行了,用戶在一次購買完之后最好馬上就能看到相關的推薦。而對于3而言,傳統的syslog模式等也不好用,而且很多情況下2和3用的是同一批數據,只是數據消費者不一樣。
這2種數據的特點是:
準實時,不需要秒級響應,分鐘級別即可。
數據量巨大,是交易數據的10倍以上。
數據消費者眾多,例如評級、投票、排序、個性化推薦、安全、運營監控、程序監控、后期報表等
于是,Linkin就自己開發了一套系統,專門用來處理這種性質的數據,這就是Kafka
那么,在整個實踐過程中Linkin做了什么樣的設計,解決了什么問題?
首先看下數據流動圖:
多數據中心怎么管理數據:
集群本身的架構圖
Kafka內部架構圖,分為數據產生者(Producer),數據中間者(Broker),數據消費者(Consumer)
顯然,這是一個集群的發布/訂閱系統,有如下幾個特點
生產者是推數據(Push),消費者是拉數據(Pull)。存在數據復用,在Linkin平均生產1條消息會被消費5.5次。
數據生產者和數據消費者的速度不對等,所以要把數據沉淀在Kafka內慢慢處理,Linkin一般在集群內放7天的數據。
性能上追求高吞吐,保證一定的延時性之內。這方面做了大量優化,包括沒有全局hash,批量發送,跨數據中心壓縮等等。
容錯性上使用的“至少傳輸一次”的語義。不保證強一次,但避免最多傳一次的情況。
集群中數據分區,保證單個數據消費者可以讀到某話題(topic)的某子話題(例如某用戶的數據)的所有數據,避免全局讀數據
數據規范性,所有數據分為數百個話題,然后在數據的源頭——生產者(Producer)這邊就用Schema來規范數據,這種理念使得后期的數據傳輸、序列化、壓縮、消費都有了統一的規范,同時也解決了這個領域非常麻煩的數據版本不兼容問題——生產者一改代碼,消費者就抓瞎。
用于監控,這個系統的威力在于,前面所有生產系統的數據流向,通過這個系統都能關聯起來,用于日常的運營也好,用于數據審計,用于運維級別的監控也好都是神器啊!
所以,Kafka的設計基本上目前這個領域的唯一選擇。我也看了很多其他實現,包括:
scribe(Facebook) | 2 | C++ | 已停止更新,不建議使用 flume(Apache, Cloudera) |1 | Java | 配置較重 chukwa(Hadoop) |12 | Java | 2012發布最后一版,不建議使用 fluentd |1 | Ruby | 比較活躍,看起來不錯 logstash |12345| JRuby | 功能全,據說有不少小bug splunk |12345| C/Python | 商業閉源,功能強大,可做參考 timetunnel(Alibaba) | 2 | Java | 基于thrift,10年左右成熟 kafka(Linkin) | 2 4 | Scala | 性能強勁,設計巧妙,可以作為基礎設施 Samza(Linkin) |12345| | =Kafka+YARN+Hadoop rabbitmq/activemq/qpid | 2 | Java | 傳統消息中間件 Storm(twitter) | 3 | Clojure | 實時計算系統 Jstorm(Alibaba) | 3 | Java | storm的Java版,據說更穩定 S4(Yahoo) | 3 | Java | 2013年已停止維護 Streambase(IBM) | 3 | Java | 商業產品,作為參考 HStreaming | 3 | Java | 商業產品,作為參考 spark | 3 | Scala | 基于Hadoop mongodb | 4 | C++ | 比較浪費硬盤 mysql | 4 | C++ | 無需多說 hdfs/hbase | 4 | Java | 無需多說
數據采集組件
數據傳輸組件
數據實時計算/索引/搜索組件
數據存儲/持久化組件
數據展示/查詢/報警界面組件
從數據傳輸這塊的設計理念來說,Kafka是最為先進的,
在目前的各種實現中,我猜測可以和Kafka一戰的也就只有Splunk了
讀到這里,這篇“Kafka的特點有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。