Vitess云原生數(shù)據(jù)庫系統(tǒng)
Vitess 云原生數(shù)據(jù)庫系統(tǒng)是用于部署、擴展和管理大型 MySQL 實例集群的數(shù)據(jù)庫解決方案。它是一個分布式 MySQL 工具集,它可以自動分片存儲 MySQL 數(shù)據(jù)表,將單個 SQL 查詢改寫為分布式發(fā)送到多個 MySQL Server 上,支持行緩存(比 MySQL 本身緩存效率高)與復制容錯等。
Vitess 最初是 YouTube 于 2010 年創(chuàng)建的內部解決方案,2018 年進入 CNCF 孵化。GitHub、JD.com、Pinterest、Slack、Square、Stitch Labs 與 YouTube 等公司正在生產(chǎn)和部署的各個階段中使用 Vitess。
Vitess 可解決以下問題:
- 支持您對 MySQL 數(shù)據(jù)庫進行分片來擴展 MySQL 數(shù)據(jù)庫,應用程序無需做太多更改。
- 從物理機遷移到私有云或公共云。
- 部署和管理大量的 MySQL 實例。
特性
-
性能提升
- 連接池 - 將前端應用程序以多路復用的方式映射到MySQL連接池以優(yōu)化性能。
- 查詢結果重用 – 對于相同結果集的查詢,多個查詢并發(fā)查詢時,vttablet會識別和管理相同查詢,等待第一個查詢結果完成,并發(fā)送給所有的調用者。
- 事務管理 – 限制并發(fā)事務數(shù)、管理事務超時時間以優(yōu)化總體吞吐量。
-
保護機制
- 查詢重寫和清理 – 避免漫無目的的更新,對大查詢添加limits。
- 查詢黑名單 – 可通過自定義規(guī)則以防止可能存在問題的查詢命中數(shù)據(jù)庫。
- 查詢超時 – 可自定義查詢超時時間值,Vitess將干掉超時的查詢。
- 表別訪問權限控制定義 – 可以針對不同的接入用戶指定表的訪問控制權限 (ACLs)。
-
監(jiān)控
- 性能分析: Vitess提供工具可讓您監(jiān)控,診斷和分析數(shù)據(jù)庫性能。
- 流式查詢 – 使用傳入查詢列表來提供OLAP工作。
- 更新流 – 服務器流式傳輸數(shù)據(jù)庫中更改的行列表,可用作將更改傳播到其他數(shù)據(jù)存儲的機制。
-
拓撲管理工具
- Master管理工具(用于reparent處理)
- 基于Web GUI的管理端
- 可工作于多個數(shù)據(jù)中心/區(qū)域的設計
-
拆分
- 幾乎無縫的動態(tài)分片拆分
- 支持垂直和水平分片拆分
- 多種分片方案,支持自定義分片方案
架構
下圖說明了 Vitess 的組件
評論
圖片
表情
