2021年大数据Kafka(一):❤️消息队列和Kafka的基本介绍❤️
全網最詳細的大數據Kafka文章系列,強烈建議收藏加關注!?
新文章都已經列出歷史文章目錄,幫助大家回顧前面的知識重點。
目錄
消息隊列和Kafka的基本介紹
一、什么是消息隊列
二、消息隊列的應用場景
異步處理
應用耦合
限流削峰
消息驅動系統
三、消息隊列的兩種方式
點對點模式
發布/訂閱模式
四、常見的消息隊列的產品
五、Kafka的基本介紹
系列歷史文章
2021年大數據Kafka(十二):??Kafka配額限速機制??
2021年大數據Kafka(十一):??Kafka的消費者負載均衡機制和數據積壓問題??
2021年大數據Kafka(十):kafka生產者數據分發策略
2021年大數據Kafka(九):kafka消息存儲及查詢機制原理
2021年大數據Kafka(八):Kafka如何保證數據不丟失
2021年大數據Kafka(七):Kafka的分片和副本機制
2021年大數據Kafka(六):??安裝Kafka-Eagle??
2021年大數據Kafka(五):??Kafka的java API編寫??
2021年大數據Kafka(四):??kafka的shell命令使用??
2021年大數據Kafka(三):??Kafka的集群搭建以及shell啟動命令腳本編寫??
2021年大數據Kafka(二):??Kafka特點總結和架構??
2021年大數據Kafka(一):??消息隊列和Kafka的基本介紹??
消息隊列和Kafka的基本介紹
一、什么是消息隊列
消息隊列,英文名:Message Queue,經常縮寫為MQ。從字面上來理解,消息隊列是一種用來存儲消息的隊列 。來看一下下面的代碼上述代碼,創建了一個隊列,先往隊列中添加了一個消息,然后又從隊列中取出了一個消息。這說明了隊列是可以用來存取消息的
總結: 消息隊列指的就是將數據放置到一個隊列中, 從隊列一端進入, 然后從另一端流出的過程
二、消息隊列的應用場景
消息隊列在實際應用中包括如下四個場景:1、應用耦合:
多應用間通過消息隊列對同一消息進行處理,避免調用接口失敗導致整個過程失敗;2、異步處理:
多應用對消息隊列中同一消息進行處理,應用間并發處理消息,相比串行處理,減少處理時間;3、 限流削峰:
廣泛應用于秒殺或搶購活動中,避免流量過大導致應用系統掛掉的情況;4、消息驅動的系統:
系統分為消息隊列、消息生產者、消息消費者,生產者負責產生消息,消費者(可能有多個)負責對消息進行處理 下面詳細介紹上述四個場景以及消息隊列如何在上述四個場景中使用異步處理
具體場景:用戶為了使用某個應用,進行注冊,系統需要發送注冊郵件并驗證短信。對這兩個操作的處理方式有兩種:串行及并行。 1) 串行方式: 新注冊信息生成后 , 先發送注冊郵件, 再發送驗證短信 注意: 在這種方式下,需要最終發送驗證短信后再返回給客戶端?2) 并行處理:新注冊信息寫入后,由發短信和發郵件并行處理
注意: 在這種方式下,發短信和發郵件 需處理完成后再返回給客戶端。
假設以上三個子系統處理的時間均為50ms,且不考慮網絡延遲,則總的處理時間: 串行:50+50+50=150ms ? 并行:50+50 = 100ms 如果引入消息隊列, 在來看整體的執行效率: 在寫入消息隊列后立即返回成功給客戶端,則總的響應時間依賴于寫入消息隊列的時間,而寫入消息隊列的時間本身是可以很快的,基本可以忽略不計,因此總的處理時間相比串行提高了2倍,相比并行提高了一倍;應用耦合
具體場景: 用戶使用QQ相冊上傳一張圖片,人臉識別系統會對該圖片進行人臉識別,一般的做法是,服務器接收到圖片后,圖片上傳系統立即調用人臉識別系統,調用完成后再返回成功,如下圖所示:如果引入消息隊列, 在來看整體的執行效率 該方法有如下缺點: 1) 人臉識別系統被調失敗,導致圖片上傳失敗; 2) 延遲高,需要人臉識別系統處理完成后,再返回給客戶端,即使用戶并不需要立即知道結果; 3) 圖片上傳系統與人臉識別系統之間互相調用,需要做耦合; 若使用消息隊列:?此時圖片上傳系統并不需要關心人臉識別系統是否對這些圖片信息的處理、以及何時對這些圖片信息進行處理。
事實上,由于用戶并不需要立即知道人臉識別結果,人臉識別系統可以選擇不同的調度策略,按照閑時、忙時、正常時 間,對隊列中的圖片信息進行處理。限流削峰
具體場景: 購物網站開展秒殺活動,一般由于瞬時訪問量過大,服務器接收過大,會導致流量暴增,相關系統無法處理請求甚至崩潰。而加入消息隊列后,系統可以從消息隊列中取數據,相當于消息隊列做了一次緩沖。 該方法有如下優點: 請求先入消息隊列,而不是由業務處理系統直接處理,做了一次緩沖,極大地減少了業務處理系統的壓力; 隊列長度可以做限制,事實上,秒殺時,后入隊列的用戶無法秒殺到商品,這些請求可以直接被拋棄,返回活動已結束或商品已售完信息;消息驅動系統
具體場景: 用戶新上傳了一批照片, 人臉識別系統需要對這個用戶的所有照片進行聚類,聚類完成后由對賬系統重新生成用 戶的人臉索引(加快查詢)。這三個子系統間由消息隊列連接起來,前一個階段的處理結果放入隊列中,后一個階段從隊列中獲取消息繼續處理。 該方法有如下優點: 避免了直接調用下一個系統導致當前系統失敗; 每個子系統對于消息的處理方式可以更為靈活,可以選擇收到消息時就處理,可以選擇定時處理,也可以劃分時間 段按不同處理速度處理;三、消息隊列的兩種方式
點對點模式
點對點模式下包括三個角色- 消息隊列
- 發送者 (生產者)
- 接收者(消費者)
- 每個消息只有一個接收者(Consumer)(即一旦被消費,消息就不再在消息隊列中);
- 發送者和接收者間沒有依賴性,發送者發送消息之后,不管有沒有接收者在運行,都不會影響到發送者下次發送消息;
- 接收者在成功接收消息之后需向隊列應答成功,以便消息隊列刪除當前接收的消息;
發布/訂閱模式
發布/訂閱模式下包括三個角色:- 角色主題(Topic)
- 發布者(Publisher)
- 訂閱者(Subscriber)
- 每個消息可以有多個訂閱者;
- 發布者和訂閱者之間有時間上的依賴性。針對某個主題(Topic)的訂閱者,它必須創建一個訂閱者之后,才能消費發布者的消息。
- 為了消費消息,訂閱者需要提前訂閱該角色主題,并保持在線運行;
四、常見的消息隊列的產品
1) RabbitMQ RabbitMQ 2007年發布,是一個在AMQP(高級消息隊列協議)基礎上完成的,可復用的企業消息系統,是當前最主 流的消息中間件之一。 2) activeMQ: ActiveMQ是由Apache出品,ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規范的 JMS Provider實現。它非常快速 ,支持多種語言的客戶端和協議,而且可以非常容易的嵌入到企業的應用環境中,并有許多高級功能,目前市場的活躍 度比較低, 在java領域正在被RabbitMQ替代 3) RocketMQ RocketMQ出自 阿里公司的開源產品,用 Java 語言實現,在設計時參考了 Kafka,并做出了自己的一些改進,消息可靠性上比 Kafka 更好。RocketMQ在阿里集團被廣泛應用在訂單,交易,充值,流計算,消息推送,日志流式處理 等 4) kafka Apache Kafka是一個分布式消息發布訂閱系統。它最初由LinkedIn公司基于獨特的設計實現為一個分布式的提交日志系統( a distributed commit log),之后成為Apache項目的一部分。Kafka系統快速、可擴展并且可持久化。它的分區特性,可復制和可容錯都是其不錯的特性。 各種消息隊列產品的對比圖:五、Kafka的基本介紹
官網:http://kafka.apache.org/ kafka是最初由linkedin公司開發的,使用scala語言編寫,kafka是一個分布式,分區的,多副本的,多訂閱者的日 志系統(分布式MQ系統),可以用于搜索日志,監控日志,訪問日志等 Kafka is a distributed,partitioned,replicated commit logservice。它提供了類似于JMS的特性,但是在設計實現上完全不同,此外它并不是JMS規范的完整實現。kafka對消息保存時根據Topic進行歸類,發送消息者成為Producer,消息 接受者成為Consumer,此外kafka集群有多個kafka實例組成,每個實例(server)成為broker。無論是kafka集群,還是producer和consumer都依賴于zookeeper來保證系統可用性集群保存一些meta信息kakfa的特點:
- 可靠性: 分布式, 分區 , 復制 和容錯等
- 可擴展性: kakfa消息傳遞系統輕松縮放, 無需停機
- 耐用性: kafka使用分布式提交日志, 這個意味著消息會盡可能快速的保存在磁盤上, 因此它是持久的
- 性能: kafka對于發布和訂閱消息都具有高吞吐量, 即使存儲了許多TB的消息, 他也爆出穩定的性能-kafka非常快: 保證零停機和零數據丟失
- Kafka版本為2.4.1,是2020年3月12日發布的版本。
- 可以注意到Kafka的版本號為:kafka_2.12-2.4.1,因為kafka主要是使用scala語言開發的,2.12為scala的版本號。
- 📢博客主頁:https://lansonli.blog.csdn.net
- 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創,首發于 CSDN博客🙉
- 📢大數據系列文章會每天更新,停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活?
總結
以上是生活随笔為你收集整理的2021年大数据Kafka(一):❤️消息队列和Kafka的基本介绍❤️的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据HBase(十七):❤️
- 下一篇: 2021年大数据Kafka(二):❤️K