組件分享之后端組件——基于Golang的數(shù)據(jù)庫集群系統(tǒng)vitess
背景
近期正在探索前端孵坚、后端、系統(tǒng)端各類常用組件與工具,對其一些常見的組件進行再次整理一下药蜻,形成標準化組件專題正压,后續(xù)該專題將包含各類語言中的一些常用組件欣福。歡迎大家進行持續(xù)關注。
組件基本信息
- 組件:vitess
- 開源協(xié)議:Apache-2.0 license
內容
本節(jié)我們分享一個基于Golang的數(shù)據(jù)庫集群系統(tǒng)vitess焦履,用于通過通用分片對 MySQL 進行水平擴展拓劝。
通過封裝分片路由邏輯,Vitess 允許應用程序代碼和數(shù)據(jù)庫查詢對數(shù)據(jù)在多個分片上的分布保持不可知性嘉裤。使用 Vitess郑临,您甚至可以隨著需求的增長拆分和合并分片,原子切換步驟僅需幾秒鐘屑宠。
自 2011 年以來厢洞,Vitess 一直是 YouTube 數(shù)據(jù)庫基礎架構的核心組件,并且已經(jīng)發(fā)展到包含數(shù)以萬計的 MySQL 節(jié)點典奉。
有關 Vitess 的更多信息躺翻,請訪問vitess.io。
Vitess 擁有一個不斷壯大的社區(qū)卫玖。您可以在 此處查看采用者列表公你。
特點:
擴展性
Vitess集Mysql數(shù)據(jù)庫的很多重要特性和NoSQL數(shù)據(jù)庫的可擴展性于一體。其內建拆分分片功能使您能夠對您的MySQL數(shù)據(jù)庫集群無限水平擴展假瞬,同時無需為應用添加分片邏輯陕靠。
性能
Vitess自動重寫對數(shù)據(jù)庫性能有損害的查詢。它還使用緩存機制來調解查詢脱茉,并防止重復查詢同時到達您的數(shù)據(jù)庫剪芥。通過每夜的基準來監(jiān)控性能表現(xiàn)。
管理
Vitess可以支持自動處理主故障轉移和備份等功能芦劣。它使用分布式元數(shù)據(jù)服務來跟蹤和管理服務器粗俱,使您的應用程序無需關心數(shù)據(jù)庫拓撲變化。
連接池
Vitess避免了MySQL連接的高內存開銷虚吟。 Vitess服務器輕松地一次處理數(shù)千個連接寸认。
分片管理
MySQL本身并不提供拆分分片功能,但是您的業(yè)務數(shù)據(jù)量增大到一定程度是您是需要增加集群的串慰。Vitess提供在線拆分功能偏塞,只需要很少的時間就完成新集群的切換,無需您在應用程序中添加任何拆分邏輯邦鲫。
工作流
Vitess會跟蹤有關集群配置的所有元數(shù)據(jù)灸叼,以便集群拓撲始終是最新的神汹,對不同的客戶端保持一致。
Vitess支持MySQL 5.6+和MariaDB 10.0+古今。我們建議使用MySQL 5.7屁魏。
具體安裝和使用方式可以持續(xù)關注我的文檔,更多內容可以參考其官方網(wǎng)站文檔
本文聲明:
知識共享許可協(xié)議
本作品由 cn華少 采用 知識共享署名-非商業(yè)性使用 4.0 國際許可協(xié)議 進行許可捉腥。