日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

高并发架构系列:如何从0到1设计一个MQ消息队列

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高并发架构系列:如何从0到1设计一个MQ消息队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

消息隊列作為系統解耦,流量控制的利器,成為分布式系統核心組件之一。

如果你對消息隊列背后的實現原理關注不多,其實了解消息隊列背后的實現非常重要。

不僅知其然還要知其所以然,這才是一個優秀的工程師需要具備的特征。

今天,我們就一起來探討設計一個消息隊列背后的技術。

消息隊列整體設計思路

主要是設計一個整體的消息被消費的數據流。

這里會涉及到:消息生產Producer、Broker(消息服務端)、消息消費者Consumer。

1.Producer(消息生產者):發送消息到Broker。

2.Broker(服務端):Broker這個概念主要來自于Apache的ActiveMQ,特指消息隊列的服務端。

主要功能就是:把消息從發送端傳送到接收端,這里會涉及到消息的存儲、消息通訊機制等。

3.Consumer(消息消費者):從消息隊列接收消息,consumer回復消費確認。

Broker(消息隊列服務端)設計重點

1)消息的轉儲:在更合適的時間點投遞,或者通過一系列手段輔助消息最終能送達消費機。

2)規范一種范式和通用的模式,以滿足解耦、最終一致性、錯峰等需求。

3)其實簡單理解就是一個消息轉發器,把一次RPC做成兩次RPC,發送者把消息投遞到broker,broker再將消息轉發一手到接收端。

總結起來就是兩次RPC加一次轉儲,如果要做消費確認,則是三次RPC。

為了實現上述消息隊列的基礎功能:

1)消息的傳輸

2)存儲

3)消費

就需要涉及到如下三個方面的設計:

1)通信協議

2)存儲選擇

3)消費關系維護

通訊協議

消息Message:既是信息的載體,消息發送者需要知道如何構造消息,消息接收者需要知道如何解析消息,它們需要按照一種統一的格式描述消息,這種統一的格式稱之為消息協議。

傳統的通信協議標準有XMPP和AMQP協議等,現在更多的消息隊列從性能的角度出發使用自己設計實現的通信協議。

1.JMS

JMS(Java MessageService)實際上是指JMS API。JMS是由Sun公司早期提出的消息標準,旨在為java應用提供統一的消息操作,包括創建消息、發送消息、接收消息等。

JMS通常包含如下一些角色:

JMS提供了兩種消息模型:

1)點對點

2)以及publish-subscribe(發布訂閱)模型。

當采用點對點模型時,消息將發送到一個隊列,該隊列的消息只能被一個消費者消費。

而采用發布訂閱模型時,消息可以被多個消費者消費。

在發布訂閱模型中,生產者和消費者完全獨立,不需要感知對方的存在。

2.AMQP

AMQP是 Advanced Message Queuing Protocol,即高級消息隊列協議。

AMQP不是一個具體的消息隊列實現,而 是一個標準化的消息中間件協議。

目標是讓不同語言,不同系統的應用互相通信,并提供一個簡單統一的模型和編程接口。 目前主流的ActiveMQ和RabbitMQ都支持AMQP協議。

AMQP是一種協議,更準確的說是一種binary wire-level protocol(鏈接協議)。這是其和JMS的本質差別,AMQP不從API層進行限定,而是直接定義網絡交換的數據格式。

JMS和AMQP比較

JMS: 只允許基于JAVA實現的消息平臺的之間進行通信

AMQP: AMQP允許多種技術同時進行協議通信

**3.Kafka的通信協議
**
Kafka的Producer、Broker和Consumer之間采用的是一套自行設計的基于TCP層的協議。Kafka的這套協議完全是為了Kafka自身的業務需求而定制的。

存儲選型

對于分布式系統,存儲的選擇有以下幾種

1)內存

2)本地文件系統

3)分布式文件系統

4)nosql

5)DB

從速度上內存顯然是最快的,對于允許消息丟失,消息堆積能力要求不高的場景(例如日志),內存會是比較好的選擇。

DB則是最簡單的實現可靠存儲的方案,很適合用在可靠性要求很高,最終一致性的場景(例如交易消息),對于不需要100%保證數據完整性的場景,要求性能和消息堆積的場景,hbase也是一個很好的選擇。

理論上,從速度來看,文件系統>分布式KV(持久化)>分布式文件系統>數據庫,而可靠性卻截然相反。

還是要從支持的業務場景出發作出最合理的選擇,如果你們的消息隊列是用來支持支付/交易等對可靠性要求非常高,但對性能和量的要求沒有這么高,而且沒有時間精力專門做文件存儲系統的研究,DB是最好的選擇。

對于不需要100%保證數據完整性的場景,要求性能和消息堆積的場景,hbase也是一個很好的選擇,典型的比如 kafka的消息落地可以使用hadoop。

消費關系處理

現在我們的消息隊列初步具備了轉儲消息的能力。

下面一個重要的事情就是解析發送接收關系,進行正確的消息投遞了。

市面上的消息隊列定義了一堆讓人暈頭轉向的名詞,如JMS 規范中的Topic/Queue,Kafka里面的Topic/Partition/ConsumerGroup,RabbitMQ里面的Exchange等等。

拋開現象看本質,無外乎是單播與廣播的區別。

所謂單播,就是點到點;而廣播,是一點對多點。

為了實現廣播功能,我們必須要維護消費關系,通常消息隊列本身不維護消費訂閱關系,可以利用zookeeper等成熟的系統維護消費關系,在消費關系發生變化時下發通知。

消息隊列需要支持高級特性

1.消息的順序
2.投遞可靠性保證
3.消息持久化
4.支持不同消息模型
5.多實例集群功能
6.事務特性等

除了上述的消息隊列基本功能以外,消息隊列在某些特殊的場景還需要支持事務,消息重試等功能。

以上就是如何設計一個消息隊列MQ的介紹,由于篇幅關系,后續再詳解消息隊列需要支持的高級特性。

覺得有用請點贊支持,送你[架構學習資料包],資料包內容:

1.最新最全的架構師學習圖譜高清版:架構師知識點一目了然;

2.架構師學習專題88期資料合集:配合圖譜,學習更科學;

3.程序員高贊的架構師學習圖書9本。

總結

以上是生活随笔為你收集整理的高并发架构系列:如何从0到1设计一个MQ消息队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 猎艳山村丰满少妇 | 精人妻一区二区三区 | 亚洲精品成人在线 | 久久精品男人的天堂 | 国产伦精品一区二区三区高清版 | 91传媒在线免费观看 | 久久亚洲精 | 中文在线字幕免费观看 | 午夜888| 精品视频在线观看一区二区 | 黄瓜视频在线观看污 | 国产偷亚洲偷欧美偷精品 | 国产九九九九九 | 欧美最顶级a∨艳星 | 欧美国产精品一区二区三区 | 性色欲网站人妻丰满中文久久不卡 | 日韩久久久久久久久久 | 少妇在线视频 | 乱色精品无码一区二区国产盗 | 国产中文字幕乱人伦在线观看 | 成人一级片 | 成人免费无遮挡无码黄漫视频 | 亚洲欧美在线视频 | 麻豆福利影院 | 大肉大捧一进一出好爽 | 国产第一页在线播放 | 国精产品一区一区三区mba下载 | 农民人伦一区二区三区 | 天堂中文视频 | 亚洲综合视频在线观看 | 国产成人福利在线 | 一区二区三区不卡在线观看 | jizz中文字幕| 亚洲自拍偷拍精品 | 欧美自拍偷拍一区二区 | 欧美z○zo重口另类黄 | 精品一区不卡 | 99久在线精品99re8热 | 91浏览器在线观看 | 成年人晚上看的视频 | 日本吃奶摸下激烈网站动漫 | 脱美女衣服亲摸揉视频 | 我的丝袜美腿尤物麻麻 | www.三级.com| 一级黄色大毛片 | 亚洲国产免费看 | 久久国产精品99久久人人澡 | 午夜视频一区二区 | 久久综合九九 | 波多野结衣精品视频 | 美女久久久久久久久久 | 欧美在线视频网站 | 亚洲色中色 | 波多野结衣影片 | 久久婷婷热 | 黑名单上的人全集免费观看 | 深夜av| 在线免费中文字幕 | 日本视频在线播放 | 日韩成人av网站 | 成年人免费看视频 | www.四虎.| 欧美激情国产日韩精品一区18 | 日韩少妇一区二区 | 欧美精品18videosex性欧美 | 亚洲精品日韩综合观看成人91 | 成人免费视频一区二区三区 | 精品一区二区三区在线视频 | 日本免费无人高清 | 影音先锋成人资源网 | 精品国产不卡 | 99re超碰 | 色婷婷精品国产一区二区三区 | 日韩亚洲欧美在线 | 欧美巨大荫蒂茸毛毛人妖 | 黄色特级大片 | 黄色网页在线 | 99热这里精品 | 欧美一区二区人人喊爽 | 人人人超碰| 欧美国产一二三区 | 理论片久久| 最新色站| 亚洲欧美视频一区 | 国产人成精品 | 毛片在哪里看 | 久久精品66| 韩国三级在线视频 | 亚洲精品一 | 美女超碰在线 | 欧美激情综合色综合啪啪五月 | 免费黄色美女网站 | 香蕉在线看 | 九九精品视频在线观看 | 性视频欧美 | 中文字幕乱码人妻一区二区三区 | 美女搡bbb又爽又猛又黄www | 一级做a爱片久久 | 男女瑟瑟视频 |