What?Tomcat-竟然也算中介軟體?

江南一點雨發表於2019-06-29

關於 MyCat 的鋪墊文章已經寫了兩篇了:

  1. MySQL 只能做小專案?鬆哥要說幾句公道話!
  2. 北冥有 Data,其名為鯤,鯤之大,一個 MySQL 放不下!

今天是最後一次鋪墊,後面就可以迎接大 Boss 了!

本來今天就該講 MyCat 了,但是我發現還有一個概念值得和大家聊一下,那就是 Java 中介軟體!

因為 MyCat 是一個分散式資料庫中介軟體,要理解 MyCat ,那你就得先知道到底什麼是中介軟體!

鬆哥去年在一次外訓中專門講過中介軟體,本來想直接和大家分享一下講稿,但是沒找到,所以又動手敲了下。

中介軟體簡介

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

中介軟體(英語: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. 物件中介軟體

這裡邊除了訊息中介軟體和交易中介軟體大家可能聽說過之外,其他的中介軟體估計都很少聽說,這是因為時代在變化,有的中介軟體慢慢被淘汰了(例如 終端模擬/螢幕轉換 中介軟體),有的則慢慢合併到其他框架中去了(例如 遠端過程呼叫中介軟體)。

資料庫中介軟體

那麼什麼是資料庫中介軟體呢?

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

What?Tomcat-竟然也算中介軟體?

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

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

What?Tomcat-竟然也算中介軟體?

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

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

有了資料庫中介軟體,應用只需要集中與業務處理,大量的通用的資料聚合,事務,資料來源切換都由中介軟體來處理,中介軟體的效能與處理能力將直接決定應用的讀寫效能,所以在專案中選擇一款好的資料庫中介軟體至關重要。

結語

好了,本文就簡單介紹下中介軟體的基本概念,下文就可以正式開始聊分散式資料庫中介軟體了!

如果小夥伴覺得鬆哥自己寫的技術文章還過得去的話,歡迎積極轉發,鬆哥每隔 15 天會根據微信後臺資料,選一個分享轉發最多的一位小夥伴,送一本鬆哥自己的簽名書或者 Java 領域的經典書籍,歡迎大家積極參與,下一次開獎時間在下週。

參考資料:

  1. MyCat 官方文件
  2. 曾憲傑.大型網站系統與Java中介軟體實踐[M].北京:電子工業出版社,2014.

關注公眾號【江南一點雨】,專注於 Spring Boot+微服務以及前後端分離等全棧技術,定期視訊教程分享,關注後回覆 Java ,領取鬆哥為你精心準備的 Java 乾貨!

What?Tomcat-竟然也算中介軟體?

相關文章