MyCat教程一:MyCat的簡單介紹


MyCat教程二:mysql主從複製實現
MyCat教程三:安裝及配置介紹
MyCat教程四:實現讀寫分離
MyCat教程五:實現分庫分表
MyCat教程六:全局序列號-全局主鍵的自增加前端

1、MyCat簡介

1. 什麼是MyCat

  MyCat 是目前最流行的基於 java 語言編寫的數據庫中間件,是一個實現了 MySQL 協議的服務器,前端用戶能夠把它看做是一個數據庫代理,用 MySQL 客戶端工具和命令行訪問,而其後端能夠用 MySQL 原生協議與多個 MySQL 服務器通訊,也能夠用 JDBC 協議與大多數主流數據庫服務器通訊,其核心功能是分庫分表。配合數據庫的主從模式還可實現讀寫分離
  MyCat 是基於阿里開源的 Cobar 產品而研發,Cobar 的穩定性、可靠性、優秀的架構和性能以及衆多成熟的使用案例使得 MyCat 變得很是的強大。
  MyCat 發展到目前的版本,已經不是一個單純的 MySQL 代理了,它的後端能夠支持MySQL、SQL Server、Oracle、DB二、PostgreSQL 等主流數據庫,也支持 MongoDB 這種新型NoSQL 方式的存儲,將來還會支持更多類型的存儲。而在最終用戶看來,不管是那種存儲方式,在 MyCat 裏,都是一個傳統的數據庫表,支持標準的 SQL 語句進行數據的操做,這樣一來,對前端業務系統來講,能夠大幅下降開發難度,提高開發速度。
  MyCat 官網: www.mycat.io/java

2. MyCat的結構

在這裏插入圖片描述

3. 使用MyCat的好處

3.1 數據量級

  單一的 MySQL 其數據存儲量級和操做量級有限.
  Mycat 能夠管理若干 MySQL 數據庫,同時實現數據的存儲和操做.mysql

3.2 開源性質

  1. Mycat 是 java 編寫的中間件. 開源,免費.
  2. 有很是多的人和組織對 Mycat 實行開發,維護,管理,更新.
  3. Mycat 版本提高較快,能夠跟隨環境發展.若是有問題,能夠快速解決.
  4. Mycat 有開源網站和開源社區.且有官方發佈的電子書籍.
  5. Mycat 是阿里原應用 corba 轉型而來的.

3.3 市場應用

  MyCat 在互聯網應用中佔比很是高.nginx

2、MyCat中的概念介紹

1. 切分

  邏輯上的切分. 在物理層面,是使用多庫[database],多表[table]實現的切分.程序員

1.1 縱向切分/垂直切分

  就是把本來存儲於一個庫的數據存儲到多個庫上
  因爲對數據庫的讀寫都是對同一個庫進行操做,因此單庫並不能解決大規模併發寫入的問題。例如,咱們會創建定義數據庫 workDB、商品數據庫 payDB、用戶數據庫 userDB、日誌數據庫 logDB 等,分別用於存儲項目數據定義表、商品定義表、用戶數據表、日誌數據表等。redis

優勢算法

  1. 減小增量數據寫入時的鎖對查詢的影響。
  2. 因爲單表數量降低,常見的查詢操做因爲減小了須要掃描的記錄,使得單表單次查詢所需的檢索行數變少,減小了磁盤 IO,時延變短。

缺點:沒法解決單表數據量太大的問題。sql

1.2橫向切分/水平切分

  把本來存儲於一個表的數據分塊存儲到多個表上。
  當一個表中的數據量過大時,咱們能夠把該表的數據按照某種規則,進行劃分,而後存儲到多個結構相同的表,和不一樣的庫上。例如,咱們 userDB 中的 userTable 中數據量很大,那麼能夠把 userDB 切分爲結構相同的多個 userDB:part0DB、part1DB 等,再將 userDB 上的 userTable,切分爲不少userTable:userTable0、userTable1 等,而後將這些表按照必定的規則存儲到多個 userDB 上。數據庫

優勢後端

  1. 單表的併發能力提升了,磁盤 I/O 性能也提升了。
  2. 若是出現高併發的話,總表能夠根據不一樣的查詢,將併發壓力分到不一樣的小表裏面。

缺點:沒法實現錶鏈接查詢。

2. 邏輯庫-Schema

  Mycat 中定義的 database.是邏輯上存在的.可是物理上是不存在的.主要是針對縱向切分提供的概念.

3. 邏輯表-table

  Mycat 中定義的 table.是邏輯上存在,物理上是不存在的.主要是針對橫向切分提供的概念.

4. 默認端口

應用 端口
MySQL 3306
Mycat 8066
tomcat 8080
Oracle 1521
nginx 80
http 80
redis 6379

5. 數據主機 - dataHost

  物理 MySQL 存放的主機地址.可使用主機名,IP,域名定義.

6. 數據節點 - dataNode

  配置物理的 database. 數據保存的物理節點.就是 database.

7. 分片規則

  當控制數據的時候,如何訪問物理 database 和 table.就是訪問 dataHost 和 dataNode 的算法. 在 Mycat 處理具體的數據 CRUD 的時候,如何訪問 dataHost 和 dataNode 的算法.如:哈希算法,crc32 算法等.



關注微信公衆號【程序員的夢想】,專一於Java,SpringBoot,SpringCloud,微服務,Docker以及先後端分離等全棧技術。

在這裏插入圖片描述
相關文章
相關標籤/搜索