MyCat教程一:MyCat的簡單介紹



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

一、MyCat簡介

1. 什么是MyCat

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

2. MyCat的結構

在這里插入圖片描述

3. 使用MyCat的好處

3.1 數據量級

  單一的 MySQL 其數據存儲量級和操作量級有限.
  Mycat 可以管理若干 MySQL 數據庫,同時實現數據的存儲和操作.

3.2 開源性質

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

3.3 市場應用

  MyCat 在互聯網應用中占比非常高.

二、MyCat中的概念介紹

1. 切分

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

1.1 縱向切分/垂直切分

  就是把原本存儲於一個庫的數據存儲到多個庫上
  由於對數據庫的讀寫都是對同一個庫進行操作,所以單庫並不能解決大規模並發寫入的問題。例如,我們會建立定義數據庫 workDB、商品數據庫 payDB、用戶數據庫 userDB、日志數據庫 logDB 等,分別用於存儲項目數據定義表、商品定義表、用戶數據表、日志數據表等。

優點

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

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

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以及前后端分離等全棧技術。

在這里插入圖片描述


免責聲明!

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



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