天天看點

中間件

中間件簡介

說起中間件,很多人首先想到的就是消息中間件,那麼除了消息中間件呢?其實我們日常開發中,接觸到的中間件太多了,我們來看維基百科上的一段介紹:

中間件(英語:Middleware),又譯中間件、中介層,是提供系統軟體和應用軟體之間連接配接的軟體,以便于軟體各部件之間的溝通。在現代資訊技術應用架構如 Web 服務、面向服務的體系結構等項目中應用比較廣泛。如資料庫、Apache 的 Tomcat ,IBM 公司的 WebSphere ,BEA 公司的 WebLogic 應用伺服器,東方通公司的 Tong 系列中間件,以及 Kingdee 公司的等都屬于中間件。

看到這個,你可能會大吃一驚,原來我們不知不覺不知不覺中已經用過這麼多中間件了!甚至連 Tomcat 也是一個中間件!

中間件,顧名思義,就是連接配接在兩個軟體之間的東西,是軟體之間的一個粘合劑,一個膠水一樣的東西。它位于作業系統和我們的應用程式之間,可以讓開發者友善地處理通信、輸入和輸出,使開發者能夠專注于自己的業務邏輯開發。

這麼一說,好像 Tomcat 确實還有點像中間件!位于我們的作業系統和應用程式之間!

中間件分類

中間件有很多,早在 1998 年 IDC 公司就将中間件分成了 6 大類,國内 2005 年之前出版的中間件相關的書上,很多都是按照這 6 大類來分的,分别是:

  1. 終端仿真/螢幕轉換
  2. 資料通路中間件(UDA)
  3. 遠端過程調用中間件(RPC)
  4. 消息中間件(MOM)
  5. 交易中間件(TPM)
  6. 對象中間件

這裡邊除了消息中間件和交易中間件大家可能聽說過之外,其他的中間件估計都很少聽說,這是因為時代在變化,有的中間件慢慢被淘汰了(例如 終端仿真/螢幕轉換 中間件),有的則慢慢合并到其他架構中去了(例如 遠端過程調用中間件)。

資料庫中間件

那麼什麼是資料庫中間件呢?

前面文章我們提到,如果資料量比較大的話,我們需要對資料進行分庫分表,分完之後,原本存在一個資料庫中的資料,現在就存在多個資料庫中了,那麼我們的項目結構可能就是下面這個樣子了:

中間件

我們要在 Java 代碼中配置複雜的多資料源,配置讀寫分離,資料查詢的時候還要進行資料的預處理,例如從多個 DB 上加載到的資料要先進行排序、過濾等等操作,這樣我們的 Java 代碼就參雜了很多業務無關的方法,而且這些參雜進來的代碼,大多數都還是重複的。

為了使開發人員,将更多精力放到業務上,我們引入資料庫中間件,像下面這樣:

中間件

這張圖非常形象的說明了什麼是中間件!一個介于兩個應用程式之間的東西。引入 MyCat 中間件之後,我們的應用程式将隻需要連接配接 MyCat 就行了,再由 MyCat 去操作各種不同的 DB,各個分布式資料庫的排序、結果集合并、資料過濾等操作都在 MyCat 中完成,這樣我們的 Java 應用又可以專注于業務的開發了,那些繁瑣的重複的操作,又交給 MyCat 去完成。

如果沒有資料庫中間件,那麼我們的 Java 應用程式将直接面對分片叢集,資料源切換、事務處理、資料聚合等等衆多問題,這樣原本該是專注于業務的 Java 應用程式,将會花大量的工作來處理分片後的問題,而且大部分的代碼又都是重複的!

有了資料庫中間件,應用隻需要集中與業務處理,大量的通用的資料聚合,事務,資料源切換都由中間件來處理,中間件的性能與處理能力将直接決定應用的讀寫性能,是以在項目中選擇一款好的資料庫中間件至關重要。

自己的第一篇部落格就統統抄别人的,開始覺得自己是那麼不用心,在時間那麼緊湊和自我認識不足的的情況下,從抄做起,把别人的知識轉化為自己的知識,進而寫出自己的東西。

上一篇: 中間件
下一篇: 中間件