kafka真的只是訊息引擎系統嗎?要搞清楚這個問題,就要從kafka的發展歷史說起,縱觀kafka的發展歷史,它確實是訊息引擎起家的,但它不僅是乙個訊息引擎系統,同時也是乙個分布式流處理平台(distributed stream processing platform)。如果這一節你只能記住一句話的話,那我希望你能記住,kafka雖然是訊息引擎起家,但它不僅是乙個訊息引擎,還是乙個分布式流處理平台。
眾所周知,kafka是linkedin公司內部孵化的專案,linkedin最開始有強烈的資料強實時處理方面的需求,其內部的諸多子系統要執行多種型別的資料處理與分析,主要包括業務系統和應用程式效能監控,以及使用者行為資料處理等。當時他們碰到的主要問題包括:
為了解決這些問題,linkedin工程師嘗試過使用activemq來解決這些問題,但效果並不理想。顯然需要有乙個"大一統"的系統來取代現有的工作方式,而這個系統就是kafka。
因此kafka自誕生伊始是以訊息引擎系統的面目出現在大眾視野的,如果翻看比較老的kafka對應的官網的話,你會發現kafka社群將其清晰地定位為乙個分布式、分割槽化且帶備份功能的提交日誌(commit log)服務。
因此,kafka在設計之初就旨在提供三個方面的特性:
在現如今的大資料領域,kafka在承接上下游、串聯資料流管道方面發揮了重要的作用:所有的資料幾乎都要從乙個系統流入kafka,然後再流入下游的另乙個系統中 。這種使用方式屢見不鮮以至於引發了kafka社群的思考:與其我把資料從乙個系統傳遞到下乙個系統進行處理,我為何不自己實現一套流處理框架呢?基於這個考量,kafka社群在0.10.0.0版本推出了流處理元件kafka streams,也正是從這個版本開始,kafka正式變身為分布式的流處理平台,而不再僅僅只是訊息引擎系統了。今天kafka是和storm、spark、flink同等級的實時流處理平台了。
那麼作為流處理平台,kafka與其他大資料流式計算框架相比,優勢在**呢?
這裡再來解釋一下什麼是精確一次語義處理。舉個例子,如果我們使用kafka計算某網頁的pv,我們將每次網頁訪問都作為乙個訊息傳送給kafka,pv的計算就是我們統計kafka總共接收了多少條這樣的訊息即可。精確一次語義處理表示每次網頁訪問都會產生、且只產生一條訊息。
處理訊息引擎和流處理平台,kafka還有別的用途嗎?當然有,kafka甚至能夠被用作分布式儲存系統,但是實際生產中,沒有人會把kafka當中分布式儲存系統來用的。kafka從乙個優秀的訊息引擎系統起家,逐漸演變成現在的分布式的流處理平台。我們不僅要熟練掌握它作為訊息引擎系統的非凡特性以及使用技巧,最好還要多了解下其流處理元件的設計與案例應用。
訊息系統 Kafka
kafka學習了資料庫裡面的設計,在裡面設計了topic 主題 這個東西類似於關係型資料庫的表 此時我需要獲取中國移動的資料,那就直接監聽topica即可。topic和partition像是hbase裡的table和region的概念,table只是乙個邏輯上的概念,真正儲存資料的是region,這...
kafka訊息系統
kafka 1.kafka是一種分布式 基於發布 訂閱的訊息系統。2.常用mq mesage queue 訊息佇列 rabbitmq activemq 這個青奧用過哦 kafka 3.producer 負責發布訊息到kafkabroker kafka伺服器 broker 訊息伺服器topic 伺服器...
訊息系統Kafka介紹
1 概述 kafka是linkedin於2010年12月份開源的訊息系統,它主要用於處理活躍的流式資料。活躍的流式資料在web 應用中非常常見,這些資料報括 的pv 使用者訪問了什麼內容,搜尋了什麼內容等。這些資料通常以日誌的形式記錄下來,然後每隔一段時間進行一次統計處理。2 設計目標 1 資料在磁...