了解中间件与消息中间件
該筆記大部分搬運B站學相伴的RabbitMQ,順便把圖文合并記錄,便于回顧,僅用于學習!
視頻地址:https://www.bilibili.com/video/BV1dX4y1V73G 作者真的非常好,別白嫖,記得三連
如有侵權,請聯系刪除!
1. 什么是中間件
-
我國企業從20世紀80年代開始就逐漸進行信息化建設,由于方法和體系的不成熟,以及企業業務和市場需求的不斷變化,一個企業可能同時運行著多個不同的業務系統,這些系統可能基于不同的操作系統、不同的數據庫、異構的網絡環境?,F在的問題是,如何把這些信息系統結合成一個有機地協同工作的整體,真正實現企業跨平臺、分布式應用。中間件便是解決之道,它用自己的復雜換取了企業應用的簡單。
-
中間件(Middleware)是處于操作系統和應用程序之間的軟件,也有人認為它應該屬于操作系統中的一部分。人們在使用中間件時,往往是一組中間件集成在一起,構成一個平臺(包括開發平臺和運行平臺),但在這組中間件中必須要有一個通信中間件,即中間件=平臺+通信,這個定義也限定了只有用于分布式系統中才能稱為中間件,同時還可以把它與支撐軟件和使用軟件區分開來。
舉例:
2. 為什么需要使用消息中間件
具體地說,中間件屏蔽了底層操作系統的復雜性,使程序開發人員面對一個簡單而統一的開發環境,減少程序設計的復雜性,將注意力集中在自己的業務上,不必再為程序在不同系統軟件上的移植而重復工作,從而大大減少了技術上的負擔,中間件帶給應用系統的,不只是開發的簡便、開發周期的縮短,也減少了系統的維護、運行和管理的工作量,還減少了計算機總體費用的投入。
為什么要使用MQ消息中間件?它解決了什么問題?
https://www.jianshu.com/p/2820561158c4
3. 中間件特點
為解決分布異構問題,人們提出了中間件(middleware)的概念。中間件是位于平臺(硬件和操作系統)和應用之間的通用服務,如下圖所示,這些服務具有標準的程序接口和協議。針對不同的操作系統和硬件平臺,它們可以有符合接口和協議規范的多種實現。
也許很難給中間件一個嚴格的定義,但中間件應具有如下的一些特點:
(1)滿足大量應用的需要
(2)運行于多種硬件和OS平臺
(3)支持分布計算,提供跨網絡、硬件和OS平臺的透明性的應用或服務的交互
(4)支持標準的協議
(5)支持標準的接口
由于標準接口對于可移植性和標準協議對于互操作性的重要性,中間件已成為許多標準化工作的主要部分。對于應用軟件開發,中間件遠比操作系統和網絡服務更為重要,中間件提供的程序接口定義了一個相對穩定的高層應用環境,不管底層的計算機硬件和系統軟件怎樣更新換代,只要將中間件升級更新,并保持中間件對外的接口定義不變,應用軟件幾乎不需任何修改,從而保護了企業在應用軟件開發和維護中的重大投資。
簡單說:中間件有個很大的特點,是脫離于具體設計目標,而具備提供普遍獨立功能需求的模塊。這使得中間件一定是可替換的。如果一個系統設計中,中間件時不可替代的,不是架構、框架設計有問題,那么就是這個中間件,在別處可能是個中間件,在這個系統內是引擎。
4. 在項目中什么時候使用中間件技術
在項目的架構和重構中,使用任何技術和架構的改變我們都需要謹慎斟酌和思考,因為任何技術的融入和變化都可能人員,技術,和成本的增加,中間件的技術一般現在一些互聯網公司或者項目中使用比較多,如果你僅僅還只是一個初創公司建議還是使用單體架構,最多加個緩存中間件即可,不要盲目追求新或者所謂的高性能,而追求的背后一定是業務的驅動和項目的驅動,因為一旦追求就意味著你的學習成本,公司的人員結構以及服務器成本,維護和運維的成本都會增加,所以需要謹慎選擇和考慮。
但是作為一個開放人員,一定要有學習中間件技術的能力和思維,否則很容易當項目發展到一個階段在去掌握估計或者在面試中提及,就會給自己帶來不小的困擾,在當今這個時代這些技術也并不是什么新鮮的東西,如果去掌握和挖掘最關鍵的還是自己花時間和花精力去探討和研究。
5. 中間件技術及架構的概述
知識圖譜
6. 什么是消息中間件
6.1 單體架構
在實際的項目中,大部分的企業項目開發中,在早起都采用的是單體的架構模式
在企業開發當中,大部分的初期架構都采用的是單體架構的模式進行架構,而這種架構的典型的特點:就是把所有的業務和模塊,源代碼,靜態資源文件等都放在一個工程中,如果其中的一個模塊升級或者迭代發生一個很小的變動都會重新編譯和重新部署項目。這種這狗存在的問題是:
這樣就有后續的分布式架構系統。 如下:
6.2 分布式架構
何謂分布式系統:
通俗一點:就是一個請求由服務器端的多個服務(服務或者系統)協同處理完成
和單體架構不同的是,單體架構是一個請求發起 jvm調度線程(確切的是 tomcat線程池)分配線程 Thread來處理請求直到釋放,而分布式系統是:一個請求時由多個系統共同來協同完成,jvm和環境都可能是獨立。如果生活中的比喻的話,單體架構就像建設一個小房子很快就能夠搞定,如果你要建設一個鳥巢或者大型的建筑,你就必須是各個環節的協同和分布,這樣目的也是項目發展到后期的時候要去部署和思考的問題。我們也不難看出來:分布式架構系統存在的特點和問題如下:
存在問題:
好處:
6.3 基于消息中間件的分布式系統的架構
沒有加一層解決不了的事情!
從上圖中可以看出來,消息中間件的是
7. 消息中間件應用的場景
比如你有一個數據要進行遷移或者請求并發過多的時候,比如你有10 W的并發請求下訂單,我們可以在這些訂單入庫之前,我們可以把訂單請求堆積到消息隊列中,讓它穩健可靠的入庫和執行
8. 常見的消息中間件
ActiveMQ、RabbitMQ、Kafka、RocketMQ等
9. 消息中間件的本質及設計
它是一種接受數據、接受請求、存儲數據、發送數據等功能的技術服務
MQ消息隊列:負責數據的傳接受,存儲和傳遞,所以性能要高于普通服務和技術
誰來生產消息,存儲消息和消費消息呢?
10. 消息中間件的核心組成部分
11. 小結
其實不論選擇單體架構還是分布式架構都是項目開發的一個階段,在什么階段選擇合適的架構方式,而不能盲目追求,最后造成的后果和問題都需要自己買單。但作為一個開發人員學習和探討新的技術使我們每個程序開發者都應該去保持和思考的問題。當我們沒辦法去改變社會和世界的時候,我們為了生活和生存那就必須要迎合企業和市場的需求,發揮你的價值和所學的才能,創造價值和實現自我。
總結
以上是生活随笔為你收集整理的了解中间件与消息中间件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqldeveloper修改jdk配置
- 下一篇: 讯闪