中間件是什么【轉】


 

 

引言

中間件(middleware)一詞每天都被不同的人群所提及,中間件的產品也大量出現在軟件市場,但中間件的定義卻一直比較模糊,導致中間件的分類也不很統一。也許正因為如此,才使人們不斷地設計和開發新的產品,並冠以中間件的標簽,推動着中間件的內涵和市場不斷地向前發展。

相信大家看這篇文章的初心就是單純想了解一下 中間件是啥?能干啥?我為什么要學它?公司中為啥要有做中間件的程序員?我平時學的dubbo等 屬於中間件的什么類型?中間件有分類嗎?這個答案在網絡上一直沒有一個准確的回答,這篇文章帶你了解 中間件
推薦一個Process on上的總結中間件很好的大佬

一. 中間件是什么?

應用中間件(Application Middleware),又名中間件,一種獨立的系統軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源。中間件位於客戶機/ 服務器的操作系統之上,管理計算機資源和網絡通訊。是連接兩個獨立應用程序或獨立系統的軟件。相連接的系統,即使它們具有不同的接口,但通過中間件相互之間仍能交換信息。執行中間件的一個關鍵途徑是信息傳遞。通過中間件,應用程序可以工作於多平台或OS環境。

中間件是為應用提供通用服務和功能的軟件。數據管理、應用服務、消息傳遞、身份驗證和 API 管理通常都要通過中間件。

中間件可以幫助開發人員更有效地構建應用。它就如同是應用、數據與用戶之間的紐帶

對於具有多雲和容器化環境的企業而言,中間件可以助您大規模、經濟高效地開發和運行應用

二. 中間件能干啥?

中間件的作用簡單來說就是試圖通過屏蔽各種復雜的技術細節使技術問題簡單化。

    1. 中間件屏蔽了底層操作系統的復雜性,使程序開發人員面對一個簡單而統一的開發環境,減少程序設計的復雜性,將注意力集中在自己的業務上,不必再為程序在不同系統軟件上的移植而重復工作,從而大大減少了技術上的負擔。所以說中間件帶給應用系統的,不只是開發的簡便、開發周期的縮短,同時也減少了系統的維護、運行和管理的工作量,還減少了計算機總體費用的投入。
    1. 中間件作為新層次的基礎軟件,其重要作用是將不同時期、在不同操作系統上開發的應用軟件集成起來,彼此像一個天衣無縫的整體協調工作,這是操作系統、數據庫管理系統本身做不了的。

2.1 中間件在應用開發中擔任的角色

經過精心設計,現代業務應用可以在本地或跨雲端大規模運行。為了構建這些應用,開發人員需要一種具備統一基礎功能的應用環境。中間件正是打造這種環境的關鍵。

我們可以將這些功能分為四層,外加相應的工具:

容器層

中間件的這一層將以統一的方式管理應用生命周期的交付。它提供帶有 CI/CD 的 DevOps 能力、容器管理功能以及服務網格功能。

運行時層

該層包含了自定義代碼的執行環境。中間件可以為高度分布式雲環境(例如微服務)、內存中緩存(用於快速訪問數據)和消息傳遞(用於快速數據傳輸)提供輕量級運行時和框架。

集成層

集成中間件可提供相關服務,以通過消息傳遞、集成和 API 來連接自定義與購買的應用及 SaaS 資產,從而形成功能正常的系統。此外,它還可以提供內存數據庫和數據緩存服務、數據/事件流以及 API 管理功能。

流程自動化和決策管理層

這是開發中間件的最后一層,旨在強化關鍵智能,實現優化和自動化,以及加強決策管理。

工具

除了上述四層中間件之外,還有相應的應用開發工具。它允許團隊使用預設的模板和容器來構建應用,並促進了有效的代碼共享和聯合開發。這些工具可在本地和雲端提供連貫一致的應用開發和交付體驗。

三. 中間件特點

  1. 應用支撐

中間件的最終目的是解決上層應用系統的問題,而且也是軟件技術發展到今天對應用軟件提供最完善徹底的解決方案。現代面向服務的中間件在4個方面形成了很高地應用支撐能力,分別為軟件的結構、模型、開發方法以及互操作,而要最終解決軟件的靈活應變問題、效率問題、質量問題、互操作問題這四大問題,需要在軟件技術的內在結構、架構層面進行思考。

  1. 耦合關系

中間件基於SOA架構,在松耦和解耦過程中演變成了境界。而傳統軟件將軟件之中核心三部分數據轉換、網絡連接和業務邏輯所有的都耦合在一個整體,產生為鐵板一塊的軟件,然后動一點而動全身,這樣的軟件就很難適應市場的需求。而分布式對象技術可以分離連接邏輯,消息中間件異步處理連接邏輯,形成了很大的靈活性。中間件分離分布式對象與消息代理的數據轉換。SOA架構以服務的封裝,解耦實現了業務邏輯、數據轉換與網絡連接等。

  1. 互操作性

傳統中間件在軟件的互操作方面,通過標准化的API完成了同類系統之間的調用互操作,但是連接互操作離不開原有的特定的訪問協議,比如CORBA用於的IIOP,JAVA用於的RMI等。而SOA以支持Internet、標准化及操作系統無關的SOAP協議完成了連接互操作。並且服務的封裝一般使用XML協議,它有自定義及自解析的特性,因此基於SOA的中間件能夠完成語義互操作。

  1. 軟件復用

軟件復用也稱為軟件的重用,是指在一定范圍內不修改或者略有修改都屬於重復使用。其實說白了其意思就是不斷提升抽象級別,然后擴展復用的范圍。最早使用的復用技術一般是子程序,自從發明子程序之后,人們就可以在不同系統之間進行軟件復用。但子程序只是最原始的復用,因為這種復用范圍只是在一個可執行程序內中的復用,靜態開發期的復用,一旦子程序被修改,那么就需要重新對所有調用這個子程序的程序進行編譯、測試以及發布。

  1. 平台化

我們所說的平台是指能夠獨立運行並且自主存在的,能支撐上層系統和應用提供運行所依賴的環境。顯然,不是所有的系統或者應用都可以稱之為平台的。中間件是一個平台,因此中間件是必須獨立存在,它在操作的系統軟件,為上層的網絡應用系統提供一個運行支撐環境,同時圍繞標准的接口與API來隔離系統,完成其獨立,也就是平台性。總的來說,中間件在完整業務復用、靈活業務組織方面的發展趨勢集中體現在服務化,其核心技術是提升IT基礎設施的業務敏捷性。中間件因此將成為SOA的主要實現平台。

四. 中間件的分類

從廣義上講,中間件涵蓋了從 Web 服務器,到身份驗證系統,再到消息傳遞工具等一切內容。以下是現代化開發中一些常見的中間件用例。
紅帽官網的這幾張圖完美解決了這個疑惑:

F0D56454-48E1-4B45-9427-9F3184F9B51D.jpeg
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

看到這里應該就可以解決大家的大多數問題了,下面就是在百度百科上找的分類,我個人感覺寫的大同小異!!!

目前,針對不同的應用涌現出各具特色的中間件產品。從不同的角度和層次對中間件有不同的分類。根據中間件在系統中所起的作用和采用的技術不同,可以把中間件大致划分為以下幾種:

  1. 數據訪問中間件(Data Access Middieware)

在分布式系統中,重要的數據都集中存放在數據服務器中,它們可以是關系型、復合文檔型、具有各種存放格式的多媒體型,或者是經過加密或壓縮存放的,數據訪問中間件是在這種系統中建立數據應用資源互操作的模式,實現異構環境下的數據庫聯接或文件系統聯接的中間件,從而為在網絡上虛擬緩沖存取、格式轉換、解壓等帶來方便。數據訪問中間件在所有的中間件中是應用最廣泛、技術最成熟的一種。一個最典型的例子就是ODBC,ODBC是一種基於數據庫的中間件標准,它允許應用程序和本地或者異地的數據庫進行通信,並提供了一系列的應用程序接口API,當然,在多數情況下這些API都是隱藏在開發工具中,不被程序員直接使用。不過在數據訪問中間件處理模型中,數據庫是信息存貯的核心單元,中間件完成通信的功能,這種方式雖然是靈活的,但是並不適合於一些要求高性能處理的場合,因為它需要大量的數據通信,而且當網絡發生故障時,系統將不能正常工作。

  1. 遠程過程調用中間件(RPC)

遠程過程調用是另外一種形式的中間件,它在客戶/服務器計算方面,比數據庫中間件又邁進了一步。通過這種遠程過程調用機制,程序員編寫客戶方的應用,需要時可以調用位於遠端服務器上的過程。它的工作方式如下:當一個應用程序A需要與遠程的另一個應用程序B交換信息或要求B提供協助時,A在本地產生一個請求,通過通訊鏈路通知B接收信息或提供相應的服務,B完成相關處理后將信息或結果返回給A。RPC的靈活特性使得它有比數據庫中間件更廣泛的應用,它可以應用在更復雜的客戶/服務器計算環境中。遠程過程調用的靈活性還體現在它的跨平台性方面,它不僅可以調用遠端的子程序,而且這種調用是可以跨不同操作系統平台的,而程序員在編程時並不需要考慮這些細節。RPC也有一些缺點,主要是因為RPC一般用於應用程序之間的通信,而且采用的是同步通信方式,因此對於比較小型的簡單應用還是比較適合的,因為這些應用通常不要求異步通信方式。但是對於一些大型的應用,這種方式就不是很適合了,因為此時程序員需要考慮網絡或者系統故障,處理並發操作、緩沖、流量控制以及進程同步等一系列復雜問題。

  1. 面向消息中間件(MOM)

消息中間件能在不同平台之間通信,實現分布式系統中可靠的、高效的、實時的跨平台數據傳輸,它常被用來屏蔽掉各種平台及協議之間的特性,實現應用程序之間的協同;其優點在於能夠在客戶和服務器之間提供同步和異步的連接,並且在任何時刻都可以將消息進行傳送或者存儲轉發,這也是它比遠程過程調用更進一步的原因。另外消息中間件不會占用大量的網絡帶寬,可以跟蹤事務,並且通過將事務存儲到磁盤上實現網絡故障時系統的恢復。當然和遠程過程調用相比,消息中間件不支持程序控制的傳遞。消息中間件適用於需要在多個進程之間進行可靠的數據傳送的分布式環境。它是中間件中唯一不可缺少的,也是銷售額最大的中間件產品,目前在Windows2000操作系統中已包含了其部分功能。

  1. 面向對象的中間件

面向對象的中間件(Object Oriented Middieware)。當前開發大型應用軟件通常采用基於組件技術,在分布系統中,還需要集成各節點上的不同系統平台上的組件或新老版本的組件;組件的含義通常指的是一組對象的集成,其種類有數百萬種,但這些組件面臨着缺乏標准而不能相互操作,各廠家的組件只能在各自的平台上運行。為此,連接這些組件環境的面向對象的中間件便應運而生。面向對象的中間件是對象技術和分布式計算發展的產物,它提供一種通訊機制,透明地在異構的分布計算環境中傳遞對象請求,而這些對象可以位於本地或者遠程機器。在這些面向對象的中間件中,功能最強的是CORBA,可以跨任意平台,但是太龐大;JavaBeans較靈活簡單,很適合於作瀏覽器,但運行效率差;DCOM模型主要適合Windows平台,已廣泛使用。但是DCOM和CORBA這兩種標准相互競爭,而且兩者之間有很大的區別,這在一定程度上阻礙了面向對象中間件的標准化進程。當前國內新建系統實際上主要是UNIX(包括LINUX)和Windows,因此針對這兩個平台建立標准的面向對象中間件是很有必要的。

  1. 事務處理中間件(TPM)

事務處理中間件是在分布、異構環境下提供保證交易完整性和數據完整性的一種環境平台;它是針對復雜環境下分布式應用的速度和可靠性要求而實現的。它給程序員提供了一個事務處理的API,程序員可以使用這個程序接口編寫高速而且可靠的分布式應用程序——基於事務處理的應用程序。事務處理中間件向用戶提供一系列的服務,如應用管理、管理控制、已經應用於程序間的消息傳遞等。常見的功能包括全局事務協調、事務的分布式兩段提交(准備階段和完成階段)、資源管理器支持、故障恢復、高可靠性、網絡負載平衡等等。

  1. 網絡中間件

它包括網管、接入、網絡測試、虛擬社區、虛擬緩沖等,也是當前研究的熱點。
終端仿真/屏幕轉換中間件
它的作用在於實現客戶機圖形用戶接口與已有的字符接口方式的服務器應用程序之間的互操作。

以上就是關於中間件的全部內容,歡迎大家關注我!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM