在大數(shù)據(jù)中,使用了大量的數(shù)據(jù)。 關(guān)于數(shù)據(jù),我們有兩個(gè)主要挑戰(zhàn)。第一個(gè)挑戰(zhàn)是如何收集大量的數(shù)據(jù),第二個(gè)挑戰(zhàn)是分析收集的數(shù)據(jù)。 為了克服這些挑戰(zhàn),您必須需要一個(gè)消息系統(tǒng)。
Kafka專為分布式高吞吐量系統(tǒng)而設(shè)計(jì)。 Kafka往往工作得很好,作為一個(gè)更傳統(tǒng)的消息代理的替代品。 與其他消息傳遞系統(tǒng)相比,Kafka具有更好的吞吐量,內(nèi)置分區(qū),復(fù)制和固有的容錯(cuò)能力,這使得它非常適合大規(guī)模消息處理應(yīng)用程序。
消息系統(tǒng)負(fù)責(zé)將數(shù)據(jù)從一個(gè)應(yīng)用程序傳輸?shù)搅硪粋€(gè)應(yīng)用程序,因此應(yīng)用程序可以專注于數(shù)據(jù),但不擔(dān)心如何共享它。 分布式消息傳遞基于可靠消息隊(duì)列的概念。 消息在客戶端應(yīng)用程序和消息傳遞系統(tǒng)之間異步排隊(duì)。 有兩種類型的消息模式可用 - 一種是點(diǎn)對(duì)點(diǎn),另一種是發(fā)布 - 訂閱(pub-sub)消息系統(tǒng)。 大多數(shù)消息模式遵循 pub-sub 。
在點(diǎn)對(duì)點(diǎn)系統(tǒng)中,消息被保留在隊(duì)列中。 一個(gè)或多個(gè)消費(fèi)者可以消耗隊(duì)列中的消息,但是特定消息只能由最多一個(gè)消費(fèi)者消費(fèi)。 一旦消費(fèi)者讀取隊(duì)列中的消息,它就從該隊(duì)列中消失。 該系統(tǒng)的典型示例是訂單處理系統(tǒng),其中每個(gè)訂單將由一個(gè)訂單處理器處理,但多個(gè)訂單處理器也可以同時(shí)工作。 下圖描述了結(jié)構(gòu)。
在發(fā)布 - 訂閱系統(tǒng)中,消息被保留在主題中。 與點(diǎn)對(duì)點(diǎn)系統(tǒng)不同,消費(fèi)者可以訂閱一個(gè)或多個(gè)主題并使用該主題中的所有消息。 在發(fā)布 - 訂閱系統(tǒng)中,消息生產(chǎn)者稱為發(fā)布者,消息使用者稱為訂閱者。 一個(gè)現(xiàn)實(shí)生活的例子是Dish電視,它發(fā)布不同的渠道,如運(yùn)動(dòng),電影,音樂(lè)等,任何人都可以訂閱自己的頻道集,并獲得他們訂閱的頻道時(shí)可用。
Apache Kafka是一個(gè)分布式發(fā)布 - 訂閱消息系統(tǒng)和一個(gè)強(qiáng)大的隊(duì)列,可以處理大量的數(shù)據(jù),并使您能夠?qū)⑾囊粋€(gè)端點(diǎn)傳遞到另一個(gè)端點(diǎn)。 Kafka適合離線和在線消息消費(fèi)。 Kafka消息保留在磁盤上,并在集群內(nèi)復(fù)制以防止數(shù)據(jù)丟失。 Kafka構(gòu)建在ZooKeeper同步服務(wù)之上。 它與Apache Storm和Spark非常好地集成,用于實(shí)時(shí)流式數(shù)據(jù)分析。
以下是Kafka的幾個(gè)好處 -
可靠性 - Kafka是分布式,分區(qū),復(fù)制和容錯(cuò)的。
可擴(kuò)展性 - Kafka消息傳遞系統(tǒng)輕松縮放,無(wú)需停機(jī)。
耐用性 - Kafka使用分布式提交日志
,這意味著消息會(huì)盡可能快地保留在磁盤上,因此它是持久的。
性能 - Kafka對(duì)于發(fā)布和訂閱消息都具有高吞吐量。 即使存儲(chǔ)了許多TB的消息,它也保持穩(wěn)定的性能。
Kafka非???,并保證零停機(jī)和零數(shù)據(jù)丟失。
Kafka可以在許多用例中使用。 其中一些列出如下 -
指標(biāo) - Kafka通常用于操作監(jiān)控?cái)?shù)據(jù)。 這涉及聚合來(lái)自分布式應(yīng)用程序的統(tǒng)計(jì)信息,以產(chǎn)生操作數(shù)據(jù)的集中饋送。
日志聚合解決方案 - Kafka可用于跨組織從多個(gè)服務(wù)收集日志,并使它們以標(biāo)準(zhǔn)格式提供給多個(gè)服務(wù)器。
流處理 - 流行的框架(如Storm和Spark Streaming)從主題中讀取數(shù)據(jù),對(duì)其進(jìn)行處理,并將處理后的數(shù)據(jù)寫入新主題,供用戶和應(yīng)用程序使用。 Kafka的強(qiáng)耐久性在流處理的上下文中也非常有用。
Kafka是一個(gè)統(tǒng)一的平臺(tái),用于處理所有實(shí)時(shí)數(shù)據(jù)Feed。 Kafka支持低延遲消息傳遞,并在出現(xiàn)機(jī)器故障時(shí)提供對(duì)容錯(cuò)的保證。 它具有處理大量不同消費(fèi)者的能力。 Kafka非常快,執(zhí)行2百萬(wàn)寫/秒。 Kafka將所有數(shù)據(jù)保存到磁盤,這實(shí)質(zhì)上意味著所有寫入都會(huì)進(jìn)入操作系統(tǒng)(RAM)的頁(yè)面緩存。 這使得將數(shù)據(jù)從頁(yè)面緩存?zhèn)鬏數(shù)骄W(wǎng)絡(luò)套接字非常有效。
更多建議: