自Redis快速入門系列結束後,部落客決定後面幾篇部落格為大家帶來關于Kafka的知識分享~作為快速入門Kafka系列的第一篇部落格,本篇為大家帶來的是消息隊列和Kafka的基本介紹~
碼字不易,先贊後看!

快速入門Kafka
1、消息隊列的介紹
2、Kafka消息隊列
3、消息隊列的應用場景
4、消息隊列的兩種模式
4.1 點對點模式
4.1 釋出/訂閱模式
5、Kafka的基本介紹
5.1 Kafka的基本介紹
5.2 Kafka的好處
5.3 分布式的釋出與訂閱系統
5.4 kafka的主要應用場景
消息(Message):是指在應用之間傳送的資料,消息可以非常簡單,比如隻包含文本字元串,也可以更複雜,可能包含嵌入對象。
消息隊列(Message Queue):是一種應用間的通信方式,消息發送後可以立即傳回,有消息系統來確定資訊的可靠專遞,消息釋出者隻管把消息釋出到MQ中而不管誰來取,消息使用者隻管從MQ中取消息而不管誰釋出的,這樣釋出者和使用者都不用知道對方的存在。
Apache Kafka是一個分布式消息釋出訂閱系統。它最初由LinkedIn公司基于獨特的設計實作為一個分布式的送出日志系統( a distributed commit log),,之後成為Apache項目的一部分。Kafka系統快速、可擴充并且可持久化。它的分區特性,可複制和可容錯都是其不錯的特性。
消息隊列在實際應用中包括如下四個場景:
應用耦合:多應用間通過消息隊列對同一消息進行處理,避免調用接口失敗導緻整個過程失敗;
異步處理:多應用對消息隊列中同一消息進行處理,應用間并發處理消息,相比串行處理,減少處理時間;
限流削峰:廣泛應用于秒殺或搶購活動中,避免流量過大導緻應用系統挂掉的情況;
消息驅動的系統:系統分為消息隊列、消息生産者、消息消費者,生産者負責産生消息,消費者(可能有多個)負責對消息進行處理;
下面詳細介紹上述四個場景以及消息隊列如何在上述四個場景中使用:
消息隊列包括兩種模式,點對點模式(point to point, queue)和釋出/訂閱模式(publish/subscribe,topic)。
點對點模式下包括三個角色:
消息隊列
發送者(生産者)
接收者(消費者)
關系大緻如下:
消息發送者生産消息發送到queue中,然後消息接收者從queue中取出并且消費消息。消息被消費以後,queue中不再有存儲,是以消息接收者不可能消費到已經被消費的消息。
點對點模式特點:
每個消息隻有一個接收者(Consumer)(即一旦被消費,消息就不再在消息隊列中);
發送者和接收者間沒有依賴性,發送者發送消息之後,不管有沒有接收者在運作,都不會影響到發送者下次發送消息;
接收者在成功接收消息之後需向隊列應答成功,以便消息隊列删除目前接收的消息;
釋出/訂閱模式下包括三個角色
角色主題(Topic)
釋出者(Publisher)
訂閱者(Subscriber)
釋出者将消息發送到Topic,系統将這些消息傳遞給多個訂閱者。
釋出/訂閱模式特點:
每個消息可以有多個訂閱者;
釋出者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須建立一個訂閱者之後,才能消費釋出者的消息。
為了消費消息,訂閱者需要提前訂閱該角色主題,并保持線上運作;
kafka是最初由linkedin公司開發的,使用scala語言編寫,kafka是一個分布式,分區的,多副本的,多訂閱者的日志系統(分布式MQ系統),可以用于搜尋日志,監控日志,通路日志等
<code>Kafka is a distributed,partitioned,replicated commit logservice。</code>
kafka對消息儲存時根據Topic進行歸類,發送消息者成為Producer,消息接受者成為Consumer,此外kafka叢集有多個kafka執行個體組成,每個執行個體(server)成為broker。無論是kafka叢集,還是producer和consumer都依賴于zookeeper來保證系統可用性叢集儲存一些meta資訊。
可靠性:分布式的,分區,複制和容錯。
可擴充性:kafka消息傳遞系統輕松縮放,無需停機。
耐用性:kafka使用分布式送出日志,這意味着消息會盡可能快速的儲存在磁盤上,是以它是持久的。
性能:kafka對于釋出和訂閱消息都具有高吞吐量。即使存儲了許多TB的消息,他也能展現出穩定的性能。
kafka非常快:保證零停機和零資料丢失
apache kafka是一個分布式釋出-訂閱消息系統和一個強大的隊列,可以處理大量的資料,并使能夠将消息從一個端點傳遞到另一個端點,kafka适合離線和線上消息消費。kafka消息保留在磁盤上,并在叢集内複制以防止資料丢失。kafka建構在zookeeper同步服務之上。它與apache和spark非常好的內建,應用于實時流式資料分析。
名額分析
Kafka 通常用于操作監控資料。這設計聚合來自分布式應用程式的統計資訊, 以産生操作的資料集中回報。
日志聚合解決方案
kafka可用于跨組織從多個伺服器收集日志,并使他們以标準的合适提供給多個伺服器。
流式處理
流式處理架構(spark,storm,flink)從主題中讀取資料,對其進行處理,并将處理後的資料寫入新的主題,供 使用者和應用程式使用,kafka的強耐久性在流處理的上下文中也非常的有用。
本篇部落格知識分享就到這裡,受益或對大資料技術感興趣的朋友可以點贊關注部落客,下一篇部落格将為大家介紹<code>Kafka叢集的搭建</code>,敬請期待|ू・ω・` )