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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

了解中间件与消息中间件

發布時間:2023/12/29 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 了解中间件与消息中间件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該筆記大部分搬運B站學相伴的RabbitMQ,順便把圖文合并記錄,便于回顧,僅用于學習!
視頻地址:https://www.bilibili.com/video/BV1dX4y1V73G 作者真的非常好,別白嫖,記得三連
如有侵權,請聯系刪除!

1. 什么是中間件

  • 我國企業從20世紀80年代開始就逐漸進行信息化建設,由于方法和體系的不成熟,以及企業業務和市場需求的不斷變化,一個企業可能同時運行著多個不同的業務系統,這些系統可能基于不同的操作系統、不同的數據庫、異構的網絡環境?,F在的問題是,如何把這些信息系統結合成一個有機地協同工作的整體,真正實現企業跨平臺、分布式應用。中間件便是解決之道,它用自己的復雜換取了企業應用的簡單。

  • 中間件(Middleware)是處于操作系統和應用程序之間的軟件,也有人認為它應該屬于操作系統中的一部分。人們在使用中間件時,往往是一組中間件集成在一起,構成一個平臺(包括開發平臺和運行平臺),但在這組中間件中必須要有一個通信中間件,即中間件=平臺+通信,這個定義也限定了只有用于分布式系統中才能稱為中間件,同時還可以把它與支撐軟件和使用軟件區分開來。

舉例:

  • RMI(Remote Method Invocations, 遠程調用)
  • Load Balancing(負載均衡,將訪問負荷分散到各個服務器中)
  • Transparent Fail-over(透明的故障切換)
  • Clustering(集群,用多個小的服務器代替大型機)
  • Back-end-Integration(后端集成,用現有的、新開發的系統如何去集成遺留的系統)
  • Transaction事務(全局/局部)全局事務(分布式事務)局部事務(在同一數據庫聯接內的事務)
  • Dynamic Redeployment(動態重新部署,在不停止原系統的情況下,部署新的系統)
  • System Management(系統管理)
  • Threading(多線程處理)
  • Message-oriented Middleware面向消息的中間件(異步的調用編程)
  • Component Life Cycle(組件的生命周期管理)
  • Resource pooling(資源池)
  • Security(安全)
  • Caching(緩存)
  • 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和環境都可能是獨立。如果生活中的比喻的話,單體架構就像建設一個小房子很快就能夠搞定,如果你要建設一個鳥巢或者大型的建筑,你就必須是各個環節的協同和分布,這樣目的也是項目發展到后期的時候要去部署和思考的問題。我們也不難看出來:分布式架構系統存在的特點和問題如下:

    存在問題:

  • 學習成本高,技術棧過多
  • 運維成本和服務器成本增高
  • 人員的成本也會增高
  • 項目的負載度也會上升
  • 面臨的錯誤和容錯性也會成倍增加
  • 占用的服務器端口和通訊的選擇的成本高
  • 安全性的考慮和因素逼迫可能選擇 RMI/MQ相關的服務器端通訊
  • 好處:

  • 服務系統的獨立,占用的服務器資源減少和占用的硬件成本減少,確切的說是:可以合理的分配服務資源,不造成服務器資源的浪費
  • 系統的獨立維護和部署,耦合度降低,可插拔性
  • 系統的架構和技術棧的選擇可以變的靈活(而不是單純地選擇 java)
  • 彈性的部署,不會造成平臺因部署造成的癱瘓和停服的狀態
  • 6.3 基于消息中間件的分布式系統的架構

    沒有加一層解決不了的事情!

    從上圖中可以看出來,消息中間件的是

  • 利用可靠的消息傳遞機制進行系統和系統直接的通訊
  • 通過提供消息傳遞消息的派對機制,它可以在分布式系統環境下擴展進程間的通訊
  • 7. 消息中間件應用的場景

  • 跨系統數據傳遞
  • 高并發的流量削峰
  • 數據的并發和異步處理
  • 大數據分析與傳遞
  • 分布式事務
  • 比如你有一個數據要進行遷移或者請求并發過多的時候,比如你有10 W的并發請求下訂單,我們可以在這些訂單入庫之前,我們可以把訂單請求堆積到消息隊列中,讓它穩健可靠的入庫和執行


    8. 常見的消息中間件

    ActiveMQ、RabbitMQ、Kafka、RocketMQ等

    9. 消息中間件的本質及設計

    它是一種接受數據、接受請求、存儲數據、發送數據等功能的技術服務

    MQ消息隊列:負責數據的傳接受,存儲和傳遞,所以性能要高于普通服務和技術

    誰來生產消息,存儲消息和消費消息呢?

    10. 消息中間件的核心組成部分

  • 消息的協議
  • 消息的持久化機制
  • 消息的分發策略
  • 消息的高可用,高可靠
  • 消息的容錯機制
  • 11. 小結

    其實不論選擇單體架構還是分布式架構都是項目開發的一個階段,在什么階段選擇合適的架構方式,而不能盲目追求,最后造成的后果和問題都需要自己買單。但作為一個開發人員學習和探討新的技術使我們每個程序開發者都應該去保持和思考的問題。當我們沒辦法去改變社會和世界的時候,我們為了生活和生存那就必須要迎合企業和市場的需求,發揮你的價值和所學的才能,創造價值和實現自我。

    總結

    以上是生活随笔為你收集整理的了解中间件与消息中间件的全部內容,希望文章能夠幫你解決所遇到的問題。

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