關於 MyCat 的鋪墊文章已經寫了兩篇了:數據庫
今天是最後一次鋪墊,後面就能夠迎接大 Boss 了!後端
<!--more-->服務器
原本今天就該講 MyCat 了,可是我發現還有一個概念值得和你們聊一下,那就是 Java 中間件!微信
由於 MyCat 是一個分佈式數據庫中間件,要理解 MyCat ,那你就得先知道到底什麼是中間件!框架
鬆哥去年在一次外訓中專門講過中間件,原本想直接和你們分享一下講稿,可是沒找到,因此又動手敲了下。前後端分離
提及中間件,不少人首先想到的就是消息中間件,那麼除了消息中間件呢?其實咱們平常開發中,接觸到的中間件太多了,咱們來看維基百科上的一段介紹:分佈式
中間件(英語:Middleware),又譯中間件、中介層,是提供系統軟件和應用軟件之間鏈接的軟件,以便於軟件各部件之間的溝通。在現代信息技術應用框架如 Web 服務、面向服務的體系結構等項目中應用比較普遍。如數據庫、Apache 的 Tomcat ,IBM 公司的 WebSphere ,BEA 公司的 WebLogic 應用服務器,東方通公司的 Tong 系列中間件,以及 Kingdee 公司的等都屬於中間件。
看到這個,你可能會大吃一驚,原來咱們不知不覺不知不覺中已經用過這麼多中間件了!甚至連 Tomcat 也是一箇中間件!微服務
中間件,顧名思義,就是鏈接在兩個軟件之間的東西,是軟件之間的一個粘合劑,一個膠水同樣的東西。它位於操做系統和咱們的應用程序之間,可讓開發者方便地處理通訊、輸入和輸出,使開發者可以專一於本身的業務邏輯開發。性能
這麼一說,好像 Tomcat 確實還有點像中間件!位於咱們的操做系統和應用程序之間!網站
中間件有不少,早在 1998 年 IDC 公司就將中間件分紅了 6 大類,國內 2005 年以前出版的中間件相關的書上,不少都是按照這 6 大類來分的,分別是:
這裏邊除了消息中間件和交易中間件你們可能據說過以外,其餘的中間件估計都不多據說,這是由於時代在變化,有的中間件慢慢被淘汰了(例如 終端仿真/屏幕轉換 中間件),有的則慢慢合併到其餘框架中去了(例如 遠程過程調用中間件)。
那麼什麼是數據庫中間件呢?
前面文章咱們提到,若是數據量比較大的話,咱們須要對數據進行分庫分表,分完以後,本來存在一個數據庫中的數據,如今就存在多個數據庫中了,那麼咱們的項目結構可能就是下面這個樣子了:
咱們要在 Java 代碼中配置複雜的多數據源,配置讀寫分離,數據查詢的時候還要進行數據的預處理,例如從多個 DB 上加載到的數據要先進行排序、過濾等等操做,這樣咱們的 Java 代碼就參雜了不少業務無關的方法,並且這些參雜進來的代碼,大多數都仍是重複的。
爲了使開發人員,將更多精力放到業務上,咱們引入數據庫中間件,像下面這樣:
這張圖很是形象的說明了什麼是中間件!一個介於兩個應用程序之間的東西。引入 MyCat 中間件以後,咱們的應用程序將只須要鏈接 MyCat 就好了,再由 MyCat 去操做各類不一樣的 DB,各個分佈式數據庫的排序、結果集合並、數據過濾等操做都在 MyCat 中完成,這樣咱們的 Java 應用又能夠專一於業務的開發了,那些繁瑣的重複的操做,又交給 MyCat 去完成。
若是沒有數據庫中間件,那麼咱們的 Java 應用程序將直接面對分片集羣,數據源切換、事務處理、數據聚合等等衆多問題,這樣本來該是專一於業務的 Java 應用程序,將會花大量的工做來處理分片後的問題,並且大部分的代碼又都是重複的!
有了數據庫中間件,應用只須要集中與業務處理,大量的通用的數據聚合,事務,數據源切換都由中間件來處理,中間件的性能與處理能力將直接決定應用的讀寫性能,因此在項目中選擇一款好的數據庫中間件相當重要。
好了,本文就簡單介紹下中間件的基本概念,下文就能夠正式開始聊分佈式數據庫中間件了!
若是小夥伴以爲鬆哥本身寫的技術文章還過得去的話,歡迎積極轉發,鬆哥每隔 15 天會根據微信後臺數據,選一個分享轉發最多的一位小夥伴,送一本鬆哥本身的簽名書或者 Java 領域的經典書籍,歡迎你們積極參與,下一次開獎時間在下週。
參考資料:
關注公衆號【江南一點雨】,專一於 Spring Boot+微服務以及先後端分離等全棧技術,按期視頻教程分享,關注後回覆 Java ,領取鬆哥爲你精心準備的 Java 乾貨!