小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Kafka:大數(shù)據(jù)開發(fā)最火的核心技術(shù)

 太極混元天尊 2018-04-29

大數(shù)據(jù)時(shí)代來(lái)臨,如果你還不知道Kafka那你就真的out了!據(jù)統(tǒng)計(jì),有三分之一的世界財(cái)富500強(qiáng)企業(yè)正在使用Kafka,包括所有TOP10旅游公司,7家TOP10銀行,8家TOP10保險(xiǎn)公司,9家TOP10電信公司等等。


LinkedIn,Microsoft和Netflix每天都用Kafka處理萬(wàn)億級(jí)的信息。Kafka主要應(yīng)用于實(shí)時(shí)信息流的大數(shù)據(jù)收集或者實(shí)時(shí)分析(或者兩者兼有)。Kafka既可以為內(nèi)存微服務(wù)提供持久性服務(wù),也可以用于向復(fù)雜事件流系統(tǒng)和IoT/IFTTT式自動(dòng)化系統(tǒng)反饋事件。

 

為什么是Kafka?

 

Kafka常用于實(shí)時(shí)流數(shù)據(jù)結(jié)構(gòu)的實(shí)時(shí)分析。由于Kafka是一種快速、可擴(kuò)展、可持久和高容錯(cuò)的發(fā)布-訂閱消息系統(tǒng)(publish-subscribe messaging system),所以Kafka對(duì)于一些Use Case(有大數(shù)據(jù)量和高響應(yīng)需求)的支持遠(yuǎn)好于JMS、RabbitMQ和AMQP。相比于那些工具,Kafka支持更高的吞吐量,更高的穩(wěn)定性和副本(replication)特性。這使得它比傳統(tǒng)的MOM更加適合跟蹤服務(wù)調(diào)用(可以跟蹤每次調(diào)用)或跟蹤IoT傳感器數(shù)據(jù)。

 

Kafka可以與Flume/Flafka、Spark Streaming、Storm、HBase、Flink以及Spark配合使用,用于實(shí)時(shí)獲取、分析和處理流數(shù)據(jù)。Kafka可以為Hadoop大數(shù)據(jù)湖(Hadoop BigData lake)提供數(shù)據(jù)流。Kafka Broker支持在Hadoop或Spark中低延時(shí)地處理和分析海量信息流。此外,Kafka子項(xiàng)目KafkaStreaming可用于實(shí)時(shí)分析。

 

什么是Kafka Use Case?

 

簡(jiǎn)而言之,Kafka用于流處理、網(wǎng)站活動(dòng)跟蹤、度量收集和監(jiān)視、日志聚合、實(shí)時(shí)分析、CEP、將數(shù)據(jù)注入Spark和Hadoop、CQRS、重放消息、錯(cuò)誤恢復(fù)以及分布式提交內(nèi)存計(jì)算(微服務(wù))的日志。

 

誰(shuí)在使用Kafka?

 

許多需要快速處理大量數(shù)據(jù)的大公司都在使用Kafka。Kafka最初是由LinkedIn開發(fā),用它來(lái)跟蹤活動(dòng)數(shù)據(jù)和運(yùn)營(yíng)指標(biāo)。Twitter把它作為Storm的一部分來(lái)作為流處理的基礎(chǔ)。Square把Kafka當(dāng)作總線,將所有系統(tǒng)事件(日志,自定義事件,指標(biāo)等)傳輸?shù)礁鱾€(gè)Square數(shù)據(jù)中心,或者輸出到Splunk,或者應(yīng)用于Graphite(儀表板),或者實(shí)現(xiàn)Esper-like/ CEP警報(bào)系統(tǒng)。Spotify,Uber,Tumbler,Goldman Sachs,PayPal,Box,Cisco,CloudFlare和Netflix等公司也都在使用它。

 

為什么Kafka這么流行

 

首先最主要的原因是Kafka具有極佳的性能表現(xiàn)。它非常穩(wěn)定,能提供穩(wěn)定的持久化,具有靈活的訂閱-發(fā)布消息隊(duì)列,可與N個(gè)消費(fèi)者群組進(jìn)行良好擴(kuò)展,具有強(qiáng)大的復(fù)制功能,為生產(chǎn)者提供可調(diào)整的一致性保證,并在碎片級(jí)別提供保留排序(即Kafka主題分區(qū))。其次,Kafka可以很好地兼容需要數(shù)據(jù)流處理的系統(tǒng),并將這些系統(tǒng)融合、轉(zhuǎn)換并加載到其他存儲(chǔ)。另外,Kafka操作(配置和使用)都非常簡(jiǎn)單,而且Kafka的工作原理也很好理解。當(dāng)然了,如果Kafka處理數(shù)據(jù)很慢,有再多其他優(yōu)點(diǎn)都是沒(méi)有意義的,所以,“多快好省”就是Kafka的最大優(yōu)勢(shì)。

 

為什么Kafka這么快

 

Kafka基于zero copy原則,深度依靠操作系統(tǒng)內(nèi)核實(shí)現(xiàn)快速移動(dòng)數(shù)據(jù)。Kafka能將數(shù)據(jù)記錄分批處理。這些批次數(shù)據(jù)可以通過(guò)端到端的方式從生產(chǎn)者到文件系統(tǒng)(Kafka主題日志)再到消費(fèi)者。批處理能實(shí)現(xiàn)更高效的數(shù)據(jù)壓縮并減少I / O延遲。Kafka將不可變的提交日志寫入連續(xù)磁盤,從而避免了隨機(jī)磁盤訪問(wèn)和磁盤尋道速度慢的問(wèn)題。Kafka支持增加分區(qū)進(jìn)行橫向擴(kuò)展。它將主題日志分成幾百個(gè)(可能有數(shù)千個(gè))分區(qū)分布到數(shù)千個(gè)服務(wù)器。這種方式可以讓Kafka承載海量負(fù)載。

 

Kafka Streaming


Kafka最常用于將數(shù)據(jù)實(shí)時(shí)傳輸?shù)狡渌到y(tǒng)。Kafka作為一個(gè)中間層來(lái)解耦不同的實(shí)時(shí)數(shù)據(jù)管道。Kafka核心并不適合入數(shù)據(jù)聚合(data aggregation)或CEP等的直接計(jì)算。Kafka Streaming作為Kafka生態(tài)系統(tǒng)的一部分,提供了進(jìn)行實(shí)時(shí)分析的能力。Kafka可以為Storm,F(xiàn)link,Spark Streaming以及你的服務(wù)和CEP系統(tǒng)提供快速通道系統(tǒng)(實(shí)時(shí)操作數(shù)據(jù)系統(tǒng))。Kafka也用于流數(shù)據(jù)批量數(shù)據(jù)分析。它將數(shù)據(jù)傳輸?shù)酱髷?shù)據(jù)平臺(tái)或RDBMS,Cassandra,Spark甚至S3中用于未來(lái)的數(shù)據(jù)分析。這些數(shù)據(jù)存儲(chǔ)通常支持?jǐn)?shù)據(jù)分析,報(bào)告,數(shù)據(jù)科學(xué)分析,合規(guī)性審計(jì)和備份。

 

說(shuō)了那么多,讓我們來(lái)討論一個(gè)終極命題:

 

到底什么是Kafka?

 

Kafka是一個(gè)分布式流平臺(tái),用于發(fā)布和訂閱記錄流。Kafka可以用于容錯(cuò)存儲(chǔ)。Kafka將主題日志分區(qū)復(fù)制到多個(gè)服務(wù)器。Kafka的設(shè)計(jì)目的是為了讓你的應(yīng)用能在記錄生成后立即就能處理。Kafka的處理速度很快,通過(guò)批處理和壓縮記錄有效地使用IO。Kafka會(huì)對(duì)數(shù)據(jù)流進(jìn)行解耦。Kafka用于將數(shù)據(jù)流到數(shù)據(jù)湖、應(yīng)用和實(shí)時(shí)流分析系統(tǒng)中。




Kafka支持多語(yǔ)言

 

客戶端和服務(wù)器之間的Kafka通信使用基于TCP的線路協(xié)議,該協(xié)議是版本化和文檔化的。Kafka承諾保持對(duì)老客戶端的向后兼容性,并支持多種語(yǔ)言,包括C#,Java,C,Python,Ruby等多種語(yǔ)言。Kafka生態(tài)系統(tǒng)還提供REST代理,可通過(guò)HTTP和JSON輕松集成。Kafka還通過(guò)Kafka的融合模式注冊(cè)(ConfluentSchema Registry)支持Avro模式。Avro和模式注冊(cè)允許客戶以多種編程語(yǔ)言制作和讀取復(fù)雜的記錄,并允許記錄的變化。

 

Kafka的用途

 

Kafka支持構(gòu)建實(shí)時(shí)流數(shù)據(jù)管道。Kafka支持內(nèi)存微服務(wù)(比如actors,Akka,Baratine.io,QBit,reactors,reactive,,Vert.x,RxJava,Spring Reactor)。Kafka支持構(gòu)建實(shí)時(shí)流應(yīng)用程序,進(jìn)行實(shí)時(shí)數(shù)據(jù)分析,轉(zhuǎn)換,響應(yīng),聚合、加入實(shí)時(shí)數(shù)據(jù)流以及執(zhí)行CEP。

 

Kafka可以用來(lái)協(xié)助收集度量標(biāo)準(zhǔn)或KPI,從多個(gè)來(lái)源收集統(tǒng)計(jì)信息并實(shí)現(xiàn)eventsourcing(將應(yīng)用狀態(tài)的所有更改捕獲為事件序列)。可以將它與內(nèi)存微服務(wù)和actor系統(tǒng)一起使用,以實(shí)現(xiàn)內(nèi)中服務(wù)(分布式系統(tǒng)的外部提交日志)。

 

Kafka可以用來(lái)在節(jié)點(diǎn)之間復(fù)制數(shù)據(jù),為節(jié)點(diǎn)重新同步以及恢復(fù)狀態(tài)。雖然Kafka主要用于實(shí)時(shí)數(shù)據(jù)分析和流處理,但也可以將其用于日志聚合,消息傳遞,跟蹤點(diǎn)擊流,審計(jì)跟蹤等等。

 

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的記錄保留

 

Kafka集群保留所有公布的記錄。如果沒(méi)有設(shè)置限制,它將保留所有記錄直到磁盤空間不足??梢栽O(shè)置基于時(shí)間的限制(可配置的保留期限),也可以基于空間的限制(可根據(jù)存儲(chǔ)空間進(jìn)行配置)或精簡(jiǎn)(保留最新版本的記錄)。除非被時(shí)間,空間或精簡(jiǎn)等策略刪除,主題日志中的記錄一直處于可用狀態(tài)。由于Kafka總是在主題日志的末尾寫入,所以它的消費(fèi)速度不會(huì)受到大小的影響。

 

作者:Jean-Paul Azar

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多