Kafka快速入門系列(1) | Kafka的簡單介紹(一文令你快速了解Kafka)

      網(wǎng)友投稿 995 2022-05-29

      自Flume快速入門系列結(jié)束后,博主決定后面幾篇博客為大家?guī)黻P(guān)于Kafka的知識(shí)分享作為快速入門Kafka系列的第一篇博客,本篇為大家?guī)淼氖荎afka的簡單介紹。

      目錄

      1. Kafka的定義

      2. 消息與消息隊(duì)列

      2.1 傳統(tǒng)消息隊(duì)列的應(yīng)用場景

      1. MQ傳統(tǒng)應(yīng)用場景之異步處理

      2. 流量消峰

      2.2 消息隊(duì)列的兩種模式

      1. 消息隊(duì)列內(nèi)部實(shí)現(xiàn)原理

      2 為什么需要消息隊(duì)列

      3. 什么是Kafka

      4. Kafka架構(gòu)

      5. Kafka的好處

      6. 分布式的發(fā)布與訂閱系統(tǒng)

      7. kafka的主要應(yīng)用場景

      1. Kafka的定義

      Kafka是一個(gè)分布式的基于發(fā)布/訂閱模式的消息隊(duì)列,主要應(yīng)用于大數(shù)據(jù)實(shí)時(shí)處理領(lǐng)域。

      2. 消息與消息隊(duì)列

      消息(Message)

      :是指在

      應(yīng)用之間傳送的數(shù)據(jù)

      ,消息可以非常簡單,比如只包含文本字符串,也可以更復(fù)雜,可能包含嵌入對(duì)象。

      消息隊(duì)列(Message Queue)

      :是

      一種應(yīng)用間的通信方式

      ,消息發(fā)送后可以立即返回,有消息系統(tǒng)來確保信息的可靠專遞,消息發(fā)布者只管把消息發(fā)布到MQ中而不管誰來取,消息使用者只管從MQ中取消息而不管誰發(fā)布的,這樣發(fā)布者和使用者都不用知道對(duì)方的存在。

      2.1 傳統(tǒng)消息隊(duì)列的應(yīng)用場景

      1. MQ傳統(tǒng)應(yīng)用場景之異步處理

      2. 流量消峰

      2.2 消息隊(duì)列的兩種模式

      1. 消息隊(duì)列內(nèi)部實(shí)現(xiàn)原理

      1. 點(diǎn)對(duì)點(diǎn)模式(一對(duì)一,消費(fèi)者主動(dòng)拉取數(shù)據(jù),消息收到后消息清除)

      點(diǎn)對(duì)點(diǎn)模式下包括三個(gè)角色:

      消息隊(duì)列

      發(fā)送者(生產(chǎn)者)

      == 接收者(消費(fèi)者)==

      點(diǎn)對(duì)點(diǎn)模型通常是一個(gè)基于拉取或者輪詢的消息傳送模型,這種模型從隊(duì)列中請(qǐng)求信息,而不是將消息推送到客戶端。這個(gè)模型的特點(diǎn)是發(fā)送到隊(duì)列的消息被一個(gè)且只有一個(gè)接收者接收處理,即使有多個(gè)消息監(jiān)聽者也是如此。

      點(diǎn)對(duì)點(diǎn)的特點(diǎn):

      1.每個(gè)消息只有一個(gè)接收者(Consumer)(即一旦被消費(fèi),消息就不再在消息隊(duì)列中);

      2.發(fā)送者和接收者間沒有依賴性,發(fā)送者發(fā)送消息之后,不管有沒有接收者在運(yùn)行,都不會(huì)影響到發(fā)送者下次發(fā)送消息;

      3.接收者在成功接收消息之后需向隊(duì)列應(yīng)答成功,以便消息隊(duì)列刪除當(dāng)前接收的消息;

      2. 發(fā)布/訂閱模式(一對(duì)多,消費(fèi)者消費(fèi)數(shù)據(jù)之后不會(huì)清除消息)

      發(fā)布/訂閱模式下包括三個(gè)角色

      角色主題(Topic)

      == 發(fā)布者(Publisher)==

      訂閱者(Subscriber)

      發(fā)布訂閱模型則是一個(gè)基于推送的消息傳送模型。發(fā)布訂閱模型可以有多種不同的訂閱者,臨時(shí)訂閱者只在主動(dòng)監(jiān)聽主題時(shí)才接收消息,而持久訂閱者則監(jiān)聽主題的所有消息,即使當(dāng)前訂閱者不可用,處于離線狀態(tài)。

      發(fā)布/訂閱模式特點(diǎn):

      1.每個(gè)消息可以有多個(gè)訂閱者;

      2.發(fā)布者和訂閱者之間有時(shí)間上的依賴性。針對(duì)某個(gè)主題(Topic)的訂閱者,它必須創(chuàng)建一個(gè)訂閱者之后,才能消費(fèi)發(fā)布者的消息。

      3.為了消費(fèi)消息,訂閱者需要提前訂閱該角色主題,并保持在線運(yùn)行;

      2 為什么需要消息隊(duì)列

      1.解耦:

      允許你獨(dú)立的擴(kuò)展或修改兩邊的處理過程,只要確保它們遵守同樣的接口約束。

      2.冗余:

      消息隊(duì)列把數(shù)據(jù)進(jìn)行持久化直到它們已經(jīng)被完全處理,通過這一方式規(guī)避了數(shù)據(jù)丟失風(fēng)險(xiǎn)。許多消息隊(duì)列所采用的"插入-獲取-刪除"范式中,在把一個(gè)消息從隊(duì)列中刪除之前,需要你的處理系統(tǒng)明確的指出該消息已經(jīng)被處理完畢,從而確保你的數(shù)據(jù)被安全的保存直到你使用完畢。

      3.擴(kuò)展性:

      因?yàn)橄㈥?duì)列解耦了你的處理過程,所以增大消息入隊(duì)和處理的頻率是很容易的,只要另外增加處理過程即可。

      4.靈活性 & 峰值處理能力:

      在訪問量劇增的情況下,應(yīng)用仍然需要繼續(xù)發(fā)揮作用,但是這樣的突發(fā)流量并不常見。如果為以能處理這類峰值訪問為標(biāo)準(zhǔn)來投入資源隨時(shí)待命無疑是巨大的浪費(fèi)。使用消息隊(duì)列能夠使關(guān)鍵組件頂住突發(fā)的訪問壓力,而不會(huì)因?yàn)橥话l(fā)的超負(fù)荷的請(qǐng)求而完全崩潰。

      5.可恢復(fù)性:

      系統(tǒng)的一部分組件失效時(shí),不會(huì)影響到整個(gè)系統(tǒng)。消息隊(duì)列降低了進(jìn)程間的耦合度,所以即使一個(gè)處理消息的進(jìn)程掛掉,加入隊(duì)列中的消息仍然可以在系統(tǒng)恢復(fù)后被處理。

      6.順序保證:

      在大多使用場景下,數(shù)據(jù)處理的順序都很重要。大部分消息隊(duì)列本來就是排序的,并且能保證數(shù)據(jù)會(huì)按照特定的順序來處理。(Kafka保證一個(gè)Partition內(nèi)的消息的有序性)

      7.緩沖:

      有助于控制和優(yōu)化數(shù)據(jù)流經(jīng)過系統(tǒng)的速度,解決生產(chǎn)消息和消費(fèi)消息的處理速度不一致的情況。

      8.異步通信:

      很多時(shí)候,用戶不想也不需要立即處理消息。消息隊(duì)列提供了異步處理機(jī)制,允許用戶把一個(gè)消息放入隊(duì)列,但并不立即處理它。想向隊(duì)列中放入多少消息就放多少,然后在需要的時(shí)候再去處理它們。

      3. 什么是Kafka

      在流式計(jì)算中,Kafka一般用來緩存數(shù)據(jù),Storm通過消費(fèi)Kafka的數(shù)據(jù)進(jìn)行計(jì)算。

      Kafka快速入門系列(1) | Kafka的簡單介紹(一文令你快速了解Kafka)

      1. Apache Kafka是一個(gè)開源消息系統(tǒng),由Scala寫成。是由Apache軟件基金會(huì)開發(fā)的一個(gè)開源消息系統(tǒng)項(xiàng)目。

      2. Kafka最初是由LinkedIn公司開發(fā),并于2011年初開源。2012年10月從Apache Incubator畢業(yè)。該項(xiàng)目的目標(biāo)是為處理實(shí)時(shí)數(shù)據(jù)提供一個(gè)統(tǒng)一、高通量、低等待的平臺(tái)。

      3. Kafka是一個(gè)分布式消息隊(duì)列。Kafka對(duì)消息保存時(shí)根據(jù)Topic進(jìn)行歸類,發(fā)送消息者稱為Producer,消息接受者稱為Consumer,此外kafka集群有多個(gè)kafka實(shí)例組成,每個(gè)實(shí)例(server)稱為broker。

      4. 無論是kafka集群,還是consumer都依賴于zookeeper集群保存一些meta信息,來保證系統(tǒng)可用性。

      4. Kafka架構(gòu)

      我們先來看下Kafka的整體架構(gòu)圖:

      Kafka的詳細(xì)架構(gòu)圖:

      1.Producer :消息生產(chǎn)者,就是向kafka broker發(fā)消息的客戶端;

      2.Consumer :消息消費(fèi)者,向kafka broker取消息的客戶端;

      3.Topic :可以理解為一個(gè)隊(duì)列;

      4.Consumer Group (CG):這是kafka用來實(shí)現(xiàn)一個(gè)topic消息的廣播(發(fā)給所有的consumer)和單播(發(fā)給任意一個(gè)consumer)的手段。一個(gè)topic可以有多個(gè)CG。topic的消息會(huì)復(fù)制(不是真的復(fù)制,是概念上的)到所有的CG,但每個(gè)partion只會(huì)把消息發(fā)給該CG中的一個(gè)consumer。如果需要實(shí)現(xiàn)廣播,只要每個(gè)consumer有一個(gè)獨(dú)立的CG就可以了。要實(shí)現(xiàn)單播只要所有的consumer在同一個(gè)CG。用CG還可以將consumer進(jìn)行自由的分組而不需要多次發(fā)送消息到不同的topic;

      5.Broker :一臺(tái)kafka服務(wù)器就是一個(gè)broker。一個(gè)集群由多個(gè)broker組成。一個(gè)broker可以容納多個(gè)topic;

      6.Partition:為了實(shí)現(xiàn)擴(kuò)展性,一個(gè)非常大的topic可以分布到多個(gè)broker(即服務(wù)器)上,一個(gè)topic可以分為多個(gè)partition,每個(gè)partition是一個(gè)有序的隊(duì)列。partition中的每條消息都會(huì)被分配一個(gè)有序的id(offset)。kafka只保證按一個(gè)partition中的順序?qū)⑾l(fā)給consumer,不保證一個(gè)topic的整體(多個(gè)partition間)的順序;

      7.Offset:kafka的存儲(chǔ)文件都是按照offset.kafka來命名,用offset做名字的好處是方便查找。例如你想找位于2049的位置,只要找到2048.kafka的文件即可。當(dāng)然thefirst offset就是00000000000.kafka。

      5. Kafka的好處

      可靠性:分布式的,分區(qū),復(fù)制和容錯(cuò)。

      可擴(kuò)展性:kafka消息傳遞系統(tǒng)輕松縮放,無需停機(jī)。

      耐用性:kafka使用分布式提交日志,這意味著消息會(huì)盡可能快速的保存在磁盤上,因此它是持久的。

      性能:kafka對(duì)于發(fā)布和訂閱消息都具有高吞吐量。即使存儲(chǔ)了許多TB的消息,它也能體現(xiàn)出穩(wěn)定的性能。

      kafka非???保證零停機(jī)和零數(shù)據(jù)丟失

      6. 分布式的發(fā)布與訂閱系統(tǒng)

      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和spark非常好的集成,應(yīng)用于實(shí)時(shí)流式數(shù)據(jù)分析。

      7. kafka的主要應(yīng)用場景

      指標(biāo)分析

      Kafka 通常用于操作監(jiān)控?cái)?shù)據(jù)。這設(shè)計(jì)聚合來自分布式應(yīng)用程序的統(tǒng)計(jì)信息, 以產(chǎn)生操作的數(shù)據(jù)集中反饋。

      日志聚合解決方案

      kafka可用于跨組織從多個(gè)服務(wù)器收集日志,并使他們以標(biāo)準(zhǔn)的合適提供給多個(gè)服務(wù)器。

      流式處理

      流式處理框架(spark,storm,?ink)從主題中讀取數(shù)據(jù),對(duì)其進(jìn)行處理,并將處理后的數(shù)據(jù)寫入新的主題,供 用戶和應(yīng)用程序使用,kafka的強(qiáng)耐久性在流處理的上下文中也非常的有用。

      本次的分享就到這里了,

      看 完 就 贊 , 養(yǎng) 成 習(xí) 慣 ! ! ! \color{#FF0000}{看完就贊,養(yǎng)成習(xí)慣?。?!} 看完就贊,養(yǎng)成習(xí)慣?。?!^ _ ^ ?? ?? ??

      碼字不易,大家的支持就是我堅(jiān)持下去的動(dòng)力。后不要忘了關(guān)注我哦!

      Kafka 分布式

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:prometheus的介紹及安裝
      下一篇:全新升級(jí)!華為云DAS2.0版本來襲
      相關(guān)文章
      国产成+人+综合+亚洲专| 亚洲国产精品yw在线观看| 亚洲国产美女福利直播秀一区二区 | 亚洲中文字幕久久精品蜜桃| 亚洲图片校园春色| 亚洲精品免费在线视频| 亚洲不卡中文字幕无码| 亚洲国产婷婷六月丁香| 亚洲色成人网站WWW永久| 亚洲伊人成无码综合网 | 亚洲成综合人影院在院播放| 亚洲色图综合网站| 91亚洲精品第一综合不卡播放| 亚洲国产综合专区在线电影 | 亚洲国产精品无码久久98| 亚洲AV综合色区无码一二三区| 亚洲中文字幕久久久一区| 亚洲男同gay片| 亚洲熟妇无码av另类vr影视| 亚洲人成色在线观看| 亚洲av无码偷拍在线观看| 亚洲av片在线观看| 亚洲AV中文无码乱人伦| 亚洲精品久久久www| 亚洲欧洲成人精品香蕉网| 亚洲AV无码专区在线播放中文 | 亚洲欧洲免费视频| 久久亚洲AV无码精品色午夜麻豆| 亚洲黄色免费观看| 亚洲人成伊人成综合网久久| 亚洲一级毛片免费在线观看| 亚洲日本一线产区和二线产区对比| 亚洲精品GV天堂无码男同| 另类图片亚洲校园小说区| 亚洲伊人久久综合中文成人网| 中文亚洲AV片在线观看不卡 | 精品亚洲一区二区| 亚洲AV无码专区亚洲AV伊甸园| 亚洲一区二区在线免费观看| 亚洲一区在线视频| 亚洲精品无码少妇30P|