消息中間件的常見問題-創(chuàng)新互聯(lián)

1、什么是消息中間件?
是利用高效可靠的消息傳遞機制進行異步的數(shù)據(jù)傳輸,并基于數(shù)據(jù)通信進行分布式系統(tǒng)的集成。通過提供消息隊列模型和消息傳遞機制,可以在分布式環(huán)境下擴展進程間的通信。

創(chuàng)新互聯(lián)建站長期為1000+客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為順昌企業(yè)提供專業(yè)的成都網(wǎng)站制作、做網(wǎng)站,順昌網(wǎng)站改版等技術服務。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

2、為什么要使用消息中間件?

系統(tǒng)解耦:
使用消息隊列來作為兩個系統(tǒng)的通訊方式。兩個系統(tǒng)不需要相互依賴,實現(xiàn)解耦。
請?zhí)砑訄D片描述
異步調用:
系統(tǒng)C給消息隊列發(fā)送消息后,可以非阻塞執(zhí)行其他任務。
請?zhí)砑訄D片描述
流量削峰:
高峰期積壓一些請求在MQ里,然后高峰期過了,由消費者自己控制消費速度,在一定時間內消費完畢.
請?zhí)砑訄D片描述
3、消息中間件有哪些傳遞模式?

消息中間件一般有兩種傳遞模式:
點對點模式:
一對一,消息生產(chǎn)者將消息發(fā)送到消息隊列中,消息消費者從隊列中接收消息。消息可以在消息隊列中進行異步傳輸。

發(fā)布/訂閱模式:
一對多,通過一個內容節(jié)點(主題topic)來發(fā)布和訂閱消息,消息發(fā)布者將消息發(fā)布到某個主題,消息訂閱者訂閱這個主題的消息。消息的發(fā)布與訂閱相互獨立。

4、如何保證消息不被重復消費?
Kafka內部:在每個 MQ 寫入隊列時,會給這條數(shù)據(jù)分配一個序號 offset,消費者在消費數(shù)據(jù)時,會把消費過的 offset序號 提交,下次從大于提交序號的最小數(shù)據(jù)開始消費。

5、Kafka的rebalance機制是什么?
消費者分區(qū)分配策略:輪詢分區(qū)、Sticky策略、Range范圍分區(qū)(默認)

什么時候會觸發(fā)?
只要數(shù)據(jù)量發(fā)生變化的時候,就會觸發(fā)rebalance機制。組員個數(shù)發(fā)生變化、訂閱topic個數(shù)發(fā)生變化、訂閱topic分區(qū)數(shù)發(fā)生變化

Kafka是pull?push?以及優(yōu)劣勢分析
Kafka遵循傳統(tǒng)設計:producer將消息推送到broker,consumer從broker拉取消息.
kafka選取傳統(tǒng)pull模式,push模式下當producer推送的速率遠大于consumer消費的速率時,consumer可能崩潰且pull模式下如果broker沒有可供消息的信息,導致consumer不斷在循環(huán)中輪詢,直到消息到達。其次,pull模式下的consumer可以自主決定是否批量從broker拉取數(shù)據(jù)。

Kafka消息丟失的場景有哪些?
生產(chǎn)者在生產(chǎn)過程中的消息丟失。ACK=0,producer發(fā)送一次就不發(fā)送了,不管是否發(fā)送成功。
broker在故障后的消息丟失。ACK=1(默認),吞吐量與可靠性的一個折中方案。
消費者在消費過程中的消息丟失。ACK=-1,生產(chǎn)和存儲不會丟失數(shù)據(jù),(消費丟失)
ACK機制為1、0、-1
OFFset機制:kafka消費者的三種消費語義
at-most-once:最多一次(可能丟數(shù)據(jù)?)
at-least-once:最少一次(可能重復消費數(shù)據(jù)+)
exact-once message:精確一次 1

kafka中zookeeper的作用是什么?
zookeeper是分布式協(xié)調,不是數(shù)據(jù)庫。
kafka使用zookeeper的分布式鎖和分布式配置及統(tǒng)一命名的分布式協(xié)調解決方案
kafka的broker集群中的controller的選擇,是通過zookeeper的臨時節(jié)點爭搶獲得的。
kafka中broker中的狀態(tài)數(shù)據(jù)存儲在zookeeper中,zookeeper不是數(shù)據(jù)庫,存儲的屬于元數(shù)據(jù)。

kafka中高性能如何保障?
性能的大瓶頸是IO,broker持久化數(shù)據(jù)時使用磁盤順序讀寫,再進一步優(yōu)化就是0拷貝的使用(從磁盤日志到消費者客戶端的數(shù)據(jù)傳遞),分布式系統(tǒng)做tradeoff,速度與可用性/可靠性.

6、RabbitMq的架構設計?
是單機的mq組件。是AMQP的實現(xiàn)。
Broker:提供一種傳輸服務,角色就是維護生產(chǎn)者到消費者的路線,保證數(shù)據(jù)能安裝指定的方式進行傳輸。
Exchange:消息交換機,指定消息按什么規(guī)則,路由到那個隊列。
Queue:消息載體,每個消息都會被偷到一個或多個隊列
Bindind:綁定,吧exchange和queue按照路由規(guī)則綁定起來
RoutingKey:路由關鍵字,exchange根據(jù)關鍵字消息投遞
vhost:虛擬主機,一個broker里有多個vhost,用于不同用戶權限分離
Producer:消息生產(chǎn)者,投遞消息的程序
Consomer:消息消費者,接受消息的程序
Channel:消息通道,在客戶端的每個連接里,可建立多個channel
核心:在mq領域中,producer將msg發(fā)送queue,consumer消費queue完成pc接口
kafka由producer決定msg發(fā)送到那個queue
rabbitmq由exchange決定msg怎樣發(fā)送到目標queue,這就是bingding及對應的策略。

7、RabbitMq的事務消息原理?
有事務、確認。確認是對一件事的確認,事務是對批量的確認。增刪改查中,事務是對于增刪改的保證。
發(fā)送方事務:開啟事務,發(fā)送多條數(shù)據(jù),事務提交|回滾是原子性的,要么都提交,要么都回滾.
消費方事務:消費方是讀取行為,ACK是要手動提交,最終確定以事務的提交|回滾決定。

8、RabbitMq的如何保證消息發(fā)送和消息接收?
消息發(fā)送確認:ConfirmCallback方法,消息發(fā)送到broker后回調,確認消息是否到達broker服務器(確認是否到達exchange)
returnCallBack方法,失敗返回,路由不到隊列時回調(可以不用,交換機和隊列在代碼里綁定)
消息確認模式:自動確認、根據(jù)情況確認、手動確認
消息接收確認:消息確認機制(ACK)默認自動確認,發(fā)送給消費者后立即確認,但存在丟失消息的可能,若消費端拋異常,回滾只保證數(shù)據(jù)的一致性,消息還是丟失。即沒有成功處理就丟失。
消息確認模式:確認當前信息、否定當前信息、拒絕當前信息

9、RabbitMq的死信隊列、延時隊列是如何實現(xiàn)的?
DLX:死信交換機。
死信隊列:當隊列中消息被拒絕、過期會變成死信,死信可以被重新發(fā)布到另一個交換機,這個交換機就是死信隊列。

原因:信息被拒接、過期、超時、超過子隊列的大長度
死信隊列中,可以為普通交換器綁定多個消息隊列,假設綁定過期時間為5分鐘、10分鐘和30分鐘,3個消息隊列,每個隊列設置DLX,并關聯(lián)一個死信隊列。過期后的消息轉存死信隊列,投遞指定消費者消費。

設置過期消息的兩種方式:
①x-message-ttl,所有消息相同過期時間;
②expiration屬性,每條消息過期時間不同,以過期時間小的為準。

消息到達過期時間沒有被消費,消息就變成死信消息。

延遲隊列:存儲延遲消息。消息發(fā)布后,指定時間之后再投遞消費者。如訂單30s內付款,超時后偷掉消費者處理超時訂單。

rabbitMQ沒有直接支持延遲隊列,可以通過死信隊列實現(xiàn)。

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

標題名稱:消息中間件的常見問題-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://muchs.cn/article36/cedcpg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、微信小程序、面包屑導航、企業(yè)建站、定制開發(fā)、響應式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化