大數據核心技術學習之kafka是什麼?

什麼是kafka?Kafka是一個分佈式流平臺,用於發佈和訂閱記錄流。Kafka可以用於容錯存儲。Kafka將主題日誌分區複製到多個服務器。

Kafka的設計目的是為了讓你的應用能在記錄生成後立即就能處理。Kafka的處理速度很快,通過批處理和壓縮記錄有效地使用IO。Kafka會對數據流進行解耦。Kafka用於將數據流到數據湖、應用和實時流分析系統中。Kafka主要應用於實時信息流的大數據收集或者實時分析(或者兩者兼有)。Kafka既可以為內存微服務提供持久性服務,也可以用於向複雜事件流系統和IoT/IFTTT式自動化系統反饋事件。

大數據核心技術學習之kafka是什麼?

目前,世界500強企業有三分之一都在使用kafka,而使其如此流行的原因有以下幾點:

其一、kafka速度快。

Kafka基於zero copy原則,深度依靠操作系統內核實現快速移動數據,能將數據記錄分批處理。這些批次數據可以通過端到端的方式從生產者到文件系統(Kafka主題日誌)再到消費者。批處理能實現更高效的數據壓縮並減少I / O延遲。Kafka將不可變的提交日誌寫入連續磁盤,從而避免了隨機磁盤訪問和磁盤尋道速度慢的問題。Kafka支持增加分區進行橫向擴展。它將主題日誌分成幾百個(可能有數千個)分區分佈到數千個服務器。這種方式可以讓Kafka承載海量負載。

其二、Kafka支持多語言

客戶端和服務器之間的Kafka通信使用基於TCP的線路協議,該協議是版本化和文檔化的。Kafka承諾保持對老客戶端的向後兼容性,並支持多種語言,包括C#,Java,C,Python,Ruby等多種語言。Kafka生態系統還提供REST代理,可通過HTTP和JSON輕鬆集成。Kafka還通過Kafka的融合模式註冊(ConfluentSchema Registry)支持Avro模式。Avro和模式註冊允許客戶以多種編程語言製作和讀取複雜的記錄,並允許記錄的變化。

其三、kafka應用廣泛

Kafka支持構建實時流數據管道,支持內存微服務(比如actors,Akka,Baratine.io,QBit,reactors,reactive,,Vert.x,RxJava,SpringReactor),支持構建實時流應用程序,進行實時數據分析,轉換,響應,聚合、加入實時數據流以及執行CEP。加米穀大數據0基礎培訓班,大數據開發5月班已經開講啦,歡迎預約免費試聽!

大數據核心技術學習之kafka是什麼?

其四、Kafka可擴展的消息存儲

Kafka是一個很好的記錄或信息存儲系統。Kafka就像一個提交日誌存儲和複製的高速文件系統。這些特點使Kafka適用於各種應用場合。寫入Kafka主題的記錄會持久保存到磁盤並複製到其他服務器以實現容錯。由於現在磁盤速度快而且相當大,所以這種方式非常有用。Kafka生產者可以等待確認,所以消息是持久的,因為生產者在複製完成之前不會完成寫入操作。Kafka磁盤結構可以很好地擴展。磁盤在大批量流式傳輸時具有非常高的吞吐量。此外,Kafka客戶端和消費者可以控制讀取位置(偏移量),這允許在出現重要錯誤(即修復錯誤和重放)時重播日誌等用例。而且,由於偏移量是按照每個消費者群體進行跟蹤的,所以消費者可以非常靈活地重播日誌。

Kafka可以讓合適的數據以合適的形式出現在合適的地方。Kafka的做法是提供消息隊列,讓生產者單往隊列的末尾添加數據,讓多個消費者從隊列裡面依次讀取數據然後自行處理。如此便捷的模式,必然使得kafka在各個領域的應用不斷的加強。

DT時代,對於kafka的應用將不斷的深入,未來不僅僅是世界500強企業會用到kafka,任何一個企業都將使用這一便捷的工具來實現大數據的佈局。技術總是在不斷的更新和發展,kafka也在不斷的更新迭代,相信,未來企業的大數據佈局,必將因kafka而更加便捷。


分享到:


相關文章: