🍅 Java學習路線:搬磚工逆襲Java架構師
🍅 簡介:Java領域優質創作者🏆、CSDN哪吒公眾號作者? 、Java架構師奮斗者
🍅 掃描主頁左側二維碼,一起學習、一起進步
🍅 歡迎點贊 👍 收藏 ?留言 📝
一、學習中間件的方式和技巧
- 理解中間件在專案架構中的作用,以及各中間件的底層實作
- 可以使用一些類比的生活概念去理解中間件
- 使用一些主流圖或者腦圖的方式去梳理各個中間件在架構中的作用
- 嘗試使用Java技術去實作中間件
- 靜下來去思考中間件在專案中設計和使用的原因
- 如何找到對應的替代方案
- 嘗試撰寫博客總結類同中間件技術的對比和使用場景
- 學會查看中間件的原始碼以及開源專案和博客
二、訊息中間件的應用場景
- 跨系統資料傳遞
- 高并發的流量削峰
- 資料的分發和異步處理
- 大資料分析與傳遞
- 分布式事務
比如你有一個資料需要進行遷移或者請求并發過多的時候,比如你有10W的并發請求訂單,我們可以在這些訂單入庫之前,把訂單請求堆積到訊息佇列中,讓它穩健可靠的入庫和執行,
訊息中間件負責資料的傳遞、存盤和分發,所以性能上要高于普通服務和技術,
三、訊息中間件的核心組成部分
- 訊息的協議
- 訊息的持久化機制
- 訊息的分發策略
- 訊息的高可用,高可靠
- 訊息的容錯機制
四、網路協議的三要素
- 語法,語法是用戶資料與控制資訊的結構與格式以及資料出現的順序,
- 語意,語意是解釋控制資訊每個部分的意義,它規定了需要發出何種控制資訊以及完成的動作與做出什么樣的回應,
- 時序,時序是對時間發生順序的詳細說明,
五、為什么訊息中間件不直接使用http協議呢?
- 因為http請求報文頭和回應報文頭是比較復雜的,包含了cookie,資料的加密解密,狀態碼,回應碼等附加的功能,但是對于一個訊息而言,我們并不需要這么復雜,也沒有這個必要性,它其實就是負責資料傳遞,存盤,分發就行,一定要追求高性能,盡量簡潔,快速,
- 大部分情況下http都是短連接,在實際的互動程序中,一個請求到回應很有可能會中斷,中斷以后就不會進行持久化,就會造成請求的丟失,這樣就不利于訊息中間件的業務場景,因為訊息中間件可能是一個長期的獲取訊息的程序,出現問題和故障要對資料或訊息進行持久化,目的是為了保證訊息和資料的高可靠性和穩健的運行,
六、AMQP協議
AMQP:全稱Advanced Message Queuing Protocol,是高級訊息佇列協議,由摩根大通集團聯合其他公司設計,是一個提供統一訊息服務的應用層標準高級訊息佇列協議,是應用層協議的一個開放標準,為面向訊息中間件設計,基于此協議的客戶端和訊息中間件可傳遞訊息,并不受客戶端或中間件或不同的開發條件的限制,
特性:
- 分布式事務支持
- 訊息的持久化支持
- 高性能和高可靠的訊息處理優勢
七、訊息的分發策略
1、MQ訊息佇列有如下幾個角色
- 生產者
- 存盤訊息
- 消費者
在發送訊息的程序中可能出現例外,或者網路抖動,故障等等原因,從而造成訊息無法消費,比如用戶下訂單,消費MQ接受,訂單系統出現故障,導致用戶支付失敗,那么這個時候就需要訊息中間件支持訊息重試機制策略,也就是支持:出現問題和故障的情況下,訊息不丟失還可以進行重發,
2、訊息分發策略的機制和對比
| ActiveMQ | RabbitMQ | Kafka | RocketMQ | |
| 發布訂閱 | 支持 | 支持 | 支持 | 支持 |
| 輪詢分發 | 支持 | 支持 | 支持 | / |
| 公平分發 | / | 支持 | 支持 | / |
| 重發 | 支持 | 支持 | / | 支持 |
| 訊息拉取 | / | 支持 | 支持 | 支持 |
八、訊息佇列高可用和高可靠
1、什么是高可用機制
高可用是指產品在規定的條件和規定的時刻或時間內處于可執行規定功能的能力,
當業務量增加時,請求也過大,一臺訊息中間件服務器會觸及硬體(CPU、記憶體、磁盤)的極限,一臺訊息服務器已經無法滿足業務的需求,所以訊息中間件必須支持集群部署,來達到高可用的目的,
2、集群模式
(1)Master-slave主從共享資料的部署模式

生產者消費發送到Master節點,所有的都連接這個訊息佇列共享這塊資料區域,Master節點負責寫入,一旦Master掛掉,slave節點繼續服務,從而形成高可用,
(2)Master-slave主從同步部署方式

這種模式寫入訊息同樣在Master主節點上,但是主節點同步資料到slave節點形成副本,和zookeeper或者redis主從機制很類似,這樣可以達到負載均衡的效果,如果消費者有多個這樣就可以取不同的節點進行消費,訊息的拷貝和同步會占用很大的寬帶和網路資源,在后續的rabbitmq中也會使用,
(3)多主集群同步部署模式

(4)多主集群轉發部署模式

如果插入的資料在broker1中,元資料資訊會存盤資料的相關描述和記錄存放的位置,
它會對元資料資訊進行同步,如果消費者在broker2中進行消費,但沒有找到對應的資訊,可以從對應的元資料資訊中去匹配,如果得到了,可以直接回傳,如果匹配不到,則轉發這個請求到別的服務器詢問,直到尋找到為止,
好處是減少資料資源的存盤,不造成空間的浪費,
(5)Master-slave與Broker-cluster組合方案

總結:
- 要么訊息共享
- 要么訊息同步
- 要么元資料共享
九、什么是高可靠機制
1、通過協議來保證系統間資料決議的正確性,
2、通過持久化保證訊息的可靠性,
🔥聯系作者,或者掃作者主頁二維碼加群,加入我們吧🔥
往期精彩內容
Java學習路線總結??搬磚工逆襲Java架構師??(全網最強,建議收藏)
??連續面試失敗后,我總結了57道面試真題??,如果時光可以倒流...(附答案,建議收藏)
10萬字208道Java經典面試題總結(附答案,建議收藏)
MySql基礎知識總結(2021版)
MySql基礎知識總結(SQL優化篇)
【Vue基礎知識總結 1】Vue入門
【100天演算法入門 - 每日三題 - Day1】二叉樹的中序遍歷、兩數之和、整數反轉
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/300733.html
標籤:java
