想了解MQ,讀這篇就夠了

2022-10-09 13:30:14 字數 990 閱讀 5601

mq全稱為message queue-訊息佇列,是一種應用程式對應用程式的訊息通訊,一端只管往佇列不斷發布資訊,另一端只管往佇列中讀取訊息,發布者不需要關心讀取訊息的誰,讀取訊息者不需要關心發布訊息的是誰,各幹各的互不干擾。

市場上現在常用的訊息佇列有:rabbitmq、rocketmq、kafka,activemq

使用訊息mq後,只需要保證訊息格式不變,不需要關心發布者及消費者之間的關係,這兩者不需要彼此聯絡

在一些不需要即時(同步)的返回結果操作,通過訊息佇列來實現非同步。

在大量請求時(秒殺場景),使用訊息佇列做緩衝處理,削弱峰值流量,防止系統在短時間內被峰值流量沖垮。

場景:在大量流量湧入高峰,如資料庫只能抗住2000的併發流量,可以使用mq控制2000到資料庫中

日誌儲存在訊息佇列中,用來處理日誌,比如kafka。

在還未引進mq之前,系統只需要關係生產端與消費端的介面一致性就可以了,現在引進後,系統需要關注生產端、mq與消費端三者的穩定性,這增加系統的負擔,系統運維成本增加。

引入了mq,需要考慮的問題就增加了,如何保障訊息的一致性,消費不被重複消費等問題,

a系統傳送完訊息直接返回成功,但是bcd系統之中若有系統寫庫失敗,則會產生資料不一致的問題。

冪等性:就是使用者對於同一操作發起的一次請求或者多次請求的結果是一致的,不會因為多次點選而產生了***

問題出現原因

我們先來了解一下產生訊息重複消費的原因,對於mq的使用,有三個角色:生產者、mq、消費者,那麼訊息的重複這三者會出現:

解決方案

在正常情況下,生產者是客戶,我們很難避免出現使用者重複點選的情況,而mq是允許存在多條一樣的訊息,但消費者是不允許出現消費兩條一樣的資料,所以冪等性一般是在消費端實現的:

解決思路

在生產端發布訊息時,每次法發布訊息都把上一條訊息的id記錄到訊息體中,消費者接收到訊息時,做如下操作

了解 HTTPS,讀這篇文章就夠了

今天接到個活兒,讓我科普 https 講 http 我都 方 想要通俗易懂的說完 https,我有點 圓 在講什麼是 https 之前,我們先來看個漫畫。於阮一峰的網路日誌 漫畫中其實就是 https 的握手過程,但是我相信大段的英文你看著也不怎麼流暢,下面就由我簡單講解下吧。https 是在 ht...

了解VueRouter,這篇解析就夠了

將元件 components 對映到路由 routes 然後告訴 vue router 在 渲染它們 定義兩個元件 const foo const bar 形成路由對映 const routes 建立路由 const router new vuerouter 將路由繫結到檢視 router 如果乙個...

Dockerfile看這篇就夠了

dockerfile是用來構建docker映象的構建檔案,是由一系列命令和引數構成的指令碼。構建三步驟 1.編寫dockerfile檔案 2.docker build 3.docker run 1 每條保留字指令都必須為大寫字母且後面要跟隨至少乙個引數 2 指令按照從上到下,順序執行 3 表示注釋 ...