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