Kafka作為大數(shù)據(jù)的核心技術(shù),你了解多少?
Kafka作為大數(shù)據(jù)最核心的技術(shù),作為一名技術(shù)開發(fā)人員,如果你不懂,那么就真的“out”了。DT時(shí)代的快速發(fā)展離不開kafka,所以了解kafka,應(yīng)用kafka就成為一種必須。
什么是kafka?Kafka是一個(gè)分布式流平臺(tái),用于發(fā)布和訂閱記錄流。Kafka可以用于容錯(cuò)存儲(chǔ)。Kafka將主題日志分區(qū)復(fù)制到多個(gè)服務(wù)器。Kafka的設(shè)計(jì)目的是為了讓你的應(yīng)用能在記錄生成后立即就能處理。Kafka的處理速度很快,通過批處理和壓縮記錄有效地使用IO。Kafka會(huì)對(duì)數(shù)據(jù)流進(jìn)行解耦。Kafka用于將數(shù)據(jù)流到數(shù)據(jù)湖、應(yīng)用和實(shí)時(shí)流分析系統(tǒng)中。Kafka主要應(yīng)用于實(shí)時(shí)信息流的大數(shù)據(jù)收集或者實(shí)時(shí)分析(或者兩者兼有)。Kafka既可以為內(nèi)存微服務(wù)提供服務(wù),也可以用于向復(fù)雜事件流系統(tǒng)和IoT/IFTTT式自動(dòng)化系統(tǒng)反饋事件。
目前,世界500強(qiáng)企業(yè)有三分之一都在使用kafka,而使其如此流行的原因有以下幾點(diǎn):
其一、kafka速度快。
Kafka基于zero copy原則,深度依靠操作系統(tǒng)內(nèi)核實(shí)現(xiàn)快速移動(dòng)數(shù)據(jù),能將數(shù)據(jù)記錄分批處理。這些批次數(shù)據(jù)可以通過端到端的方式從生產(chǎn)者到文件系統(tǒng)(Kafka主題日志)再到消費(fèi)者。批處理能實(shí)現(xiàn)更高效的數(shù)據(jù)壓縮并減少I / O延遲。Kafka將不可變的提交日志寫入連續(xù)磁盤,從而避免了隨機(jī)磁盤訪問和磁盤尋道速度慢的問題。Kafka支持增加分區(qū)進(jìn)行橫向擴(kuò)展。它將主題日志分成幾百個(gè)(可能有數(shù)千個(gè))分區(qū)分布到數(shù)千個(gè)服務(wù)器。這種方式可以讓Kafka承載海量負(fù)載。
其二、Kafka支持多語言
客戶端和服務(wù)器之間的Kafka通信使用基于TCP的線路協(xié)議,該協(xié)議是版本化和文檔化的。Kafka承諾保持對(duì)老客戶端的向后兼容性,并支持多種語言,包括C#,Java,C,Python,Ruby等多種語言。Kafka生態(tài)系統(tǒng)還提供REST代理,可通過HTTP和JSON輕松集成。Kafka還通過Kafka的融合模式注冊(cè)(ConfluentSchema Registry)支持Avro模式。Avro和模式注冊(cè)允許客戶以多種編程語言制作和讀取復(fù)雜的記錄,并允許記錄的變化。
其三、kafka應(yīng)用廣泛
Kafka支持構(gòu)建實(shí)時(shí)流數(shù)據(jù)管道,支持內(nèi)存微服務(wù)(比如actors,Akka,Baratine.io,QBit,reactors,reactive,,Vert.x,RxJava,SpringReactor),支持構(gòu)建實(shí)時(shí)流應(yīng)用程序,進(jìn)行實(shí)時(shí)數(shù)據(jù)分析,轉(zhuǎn)換,響應(yīng),聚合、加入實(shí)時(shí)數(shù)據(jù)流以及執(zhí)行CEP。
其四、Kafka可擴(kuò)展的消息存儲(chǔ)
Kafka是一個(gè)很好的記錄或信息存儲(chǔ)系統(tǒng)。Kafka就像一個(gè)提交日志存儲(chǔ)和復(fù)制的高速文件系統(tǒng)。這些特點(diǎn)使Kafka適用于各種應(yīng)用場(chǎng)合。寫入Kafka主題的記錄會(huì)持久保存到磁盤并復(fù)制到其他服務(wù)器以實(shí)現(xiàn)容錯(cuò)。由于現(xiàn)在磁盤速度快而且相當(dāng)大,所以這種方式非常有用。Kafka生產(chǎn)者可以等待確認(rèn),所以消息是持久的,因?yàn)樯a(chǎn)者在復(fù)制完成之前不會(huì)完成寫入操作。Kafka磁盤結(jié)構(gòu)可以很好地?cái)U(kuò)展。磁盤在大批量流式傳輸時(shí)具有非常高的吞吐量。此外,Kafka客戶端和消費(fèi)者可以控制讀取位置(偏移量),這允許在出現(xiàn)重要錯(cuò)誤(即修復(fù)錯(cuò)誤和重放)時(shí)重播日志等用例。而且,由于偏移量是按照每個(gè)消費(fèi)者群體進(jìn)行跟蹤的,所以消費(fèi)者可以非常靈活地重播日志。
Kafka可以讓合適的數(shù)據(jù)以合適的形式出現(xiàn)在合適的地方。Kafka的做法是提供消息隊(duì)列,讓生產(chǎn)者單往隊(duì)列的末尾添加數(shù)據(jù),讓多個(gè)消費(fèi)者從隊(duì)列里面依次讀取數(shù)據(jù)然后自行處理。如此便捷的模式,必然使得kafka在各個(gè)領(lǐng)域的應(yīng)用不斷的加強(qiáng)。
DT時(shí)代,對(duì)于kafka的應(yīng)用將不斷的深入,未來不僅僅是世界500強(qiáng)企業(yè)會(huì)用到kafka,任何一個(gè)企業(yè)都將使用這一便捷的工具來實(shí)現(xiàn)大數(shù)據(jù)的布局。技術(shù)總是在不斷的更新和發(fā)展,kafka也在不斷的更細(xì)迭代,相信,未來企業(yè)的大數(shù)據(jù)布局,必將因kafka而更加便捷。