0 mq(gold_axe)

各種消息中間件

性能比較 差->好

都支持消息持久化,但是都有性能損耗
協(xié)議AMQP: rabitmq就是為AMQP而生的,ActiveMQ也支持, 但是性能就不好了
小公司并發(fā)低用前個(gè)就好了,

ActiveMQ

太老了, 江河日下
唯一優(yōu)點(diǎn)是java寫的

RabbitMQ

erlang寫的,語言很難 ,很難看源碼難以深入研究, 有問題難解決

erlang 高可用 99.999%

RocketMQ

誕生最晚,社區(qū)活躍度低,資料少
支持語言少 Java php
Java寫的, 并發(fā)可以
運(yùn)維難度大對(duì)技術(shù)有自信的公司可以用,
延遲隊(duì)列實(shí)現(xiàn)方便(RabbitMQ要延遲隊(duì)列就比較繞),可以做限時(shí)訂單

Kafka

很強(qiáng)大, 很強(qiáng)的技術(shù)維護(hù)
使用是簡單,需要強(qiáng)的開發(fā)團(tuán)隊(duì), JVM調(diào)優(yōu) 操作系統(tǒng)調(diào)優(yōu)
需要 大數(shù)據(jù),流計(jì)算 時(shí)用
一般就記記日志簡單用下

定義

其實(shí)并沒有標(biāo)準(zhǔn)定義。一般認(rèn)為:
分布式系統(tǒng)中一個(gè)子系統(tǒng),
關(guān)注于數(shù)據(jù)的發(fā)送和接收,
利用高效可靠的異步消息傳遞機(jī)制對(duì)分布式系統(tǒng)中的其余各個(gè)子系統(tǒng)進(jìn)行集成。

關(guān)鍵:

  • 高效: 一定要快
  • 可靠: 持久化,不丟失
  • 異步: 發(fā)成功了就行,不用一定等人收

為什么用

低耦合,擴(kuò)展性

不管是程序還是模塊之間,使用消息中間件進(jìn)行間接通信。


沒有mq是高耦合的, 要知道彼此
加入mq, 只管發(fā), 加了接收者的話 發(fā)送者不用改,不用知道
彼此有關(guān)系->只和mq關(guān)系
物流系統(tǒng)掛了, 交易系統(tǒng)也不會(huì)被影響

擴(kuò)展性: 增加新的業(yè)務(wù)產(chǎn)品時(shí),不需改動(dòng)既有業(yè)務(wù)功
這是設(shè)計(jì)模式中的開閉原則(對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉)在架構(gòu)層面的一個(gè)原則。

異步

異步通信能力,使得子系統(tǒng)之間得以充分執(zhí)行自己的邏輯而無需等待。
發(fā)到mq就成功了, 不用等消費(fèi)者真的消費(fèi)完

使用場景: 讓用戶少等點(diǎn)時(shí)間, 優(yōu)化了, 因?yàn)榘l(fā)到mq就可以返回用戶完成了


如果通知用戶成功了, 后面的消費(fèi)者服務(wù)掛了, 沒成功怎么辦:
沒事,消息還在mq里面, 大不了加班, 最終事件還是能完成,不會(huì)丟, 只是異步的時(shí)間更久

緩沖

緩沖能力,消息中間件像是一個(gè)巨大的蓄水池,將高峰期大量的請(qǐng)求存儲(chǔ)下來慢慢交給后臺(tái)進(jìn)行處理,

對(duì)于秒殺業(yè)務(wù)來說尤為重要。

伸縮性

通過不斷向集群中加入服務(wù)器
來緩解不斷上升的用戶并發(fā)訪問壓力和不斷增長的數(shù)據(jù)存儲(chǔ)需求。
不要了 ,可以拆掉

具體使用

  • 異步,讓用戶減少等待
  • 應(yīng)用解耦, 不會(huì)一個(gè)掛全部掛
  • 日志系統(tǒng)


  • 高效通訊: 純的消息通訊。點(diǎn)對(duì)點(diǎn)消息隊(duì)列,或者聊天室(同一個(gè)生產(chǎn)者)
  • 削峰


    不是mq,DB就撐不住掛了

和RPC 區(qū)別

這是RPC



對(duì)開發(fā)人員,看起來好像和單體調(diào)用本進(jìn)程的方法是一樣的

不同:

  • mq異步

  • RPC依賴性,mq松耦合


相同:
都是分布式下的 的通信方式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容