組件分享之后端組件——基于Golang的數(shù)據(jù)庫集群系統(tǒng)vitess
背景
近期正在探索前端、后端、系統(tǒng)端各類常用組件與工具,對(duì)其一些常見的組件進(jìn)行再次整理一下,形成標(biāo)準(zhǔn)化組件專題,后續(xù)該專題將包含各類語言中的一些常用組件。歡迎大家進(jìn)行持續(xù)關(guān)注。
組件基本信息
- 組件:vitess
- 開源協(xié)議:Apache-2.0 license
內(nèi)容
本節(jié)我們分享一個(gè)基于Golang的數(shù)據(jù)庫集群系統(tǒng)vitess,用于通過通用分片對(duì) MySQL 進(jìn)行水平擴(kuò)展。
通過封裝分片路由邏輯,Vitess 允許應(yīng)用程序代碼和數(shù)據(jù)庫查詢對(duì)數(shù)據(jù)在多個(gè)分片上的分布保持不可知性。使用 Vitess,您甚至可以隨著需求的增長拆分和合并分片,原子切換步驟僅需幾秒鐘。
自 2011 年以來,Vitess 一直是 YouTube 數(shù)據(jù)庫基礎(chǔ)架構(gòu)的核心組件,并且已經(jīng)發(fā)展到包含數(shù)以萬計(jì)的 MySQL 節(jié)點(diǎn)。
有關(guān) Vitess 的更多信息,請(qǐng)?jiān)L問vitess.io。
Vitess 擁有一個(gè)不斷壯大的社區(qū)。您可以在 此處查看采用者列表。
特點(diǎn):
擴(kuò)展性
Vitess集Mysql數(shù)據(jù)庫的很多重要特性和NoSQL數(shù)據(jù)庫的可擴(kuò)展性于一體。其內(nèi)建拆分分片功能使您能夠?qū)δ腗ySQL數(shù)據(jù)庫集群無限水平擴(kuò)展,同時(shí)無需為應(yīng)用添加分片邏輯。
性能
Vitess自動(dòng)重寫對(duì)數(shù)據(jù)庫性能有損害的查詢。它還使用緩存機(jī)制來調(diào)解查詢,并防止重復(fù)查詢同時(shí)到達(dá)您的數(shù)據(jù)庫。通過每夜的基準(zhǔn)來監(jiān)控性能表現(xiàn)。
管理
Vitess可以支持自動(dòng)處理主故障轉(zhuǎn)移和備份等功能。它使用分布式元數(shù)據(jù)服務(wù)來跟蹤和管理服務(wù)器,使您的應(yīng)用程序無需關(guān)心數(shù)據(jù)庫拓?fù)渥兓?/p>
連接池
Vitess避免了MySQL連接的高內(nèi)存開銷。 Vitess服務(wù)器輕松地一次處理數(shù)千個(gè)連接。
分片管理
MySQL本身并不提供拆分分片功能,但是您的業(yè)務(wù)數(shù)據(jù)量增大到一定程度是您是需要增加集群的。Vitess提供在線拆分功能,只需要很少的時(shí)間就完成新集群的切換,無需您在應(yīng)用程序中添加任何拆分邏輯。
工作流
Vitess會(huì)跟蹤有關(guān)集群配置的所有元數(shù)據(jù),以便集群拓?fù)涫冀K是最新的,對(duì)不同的客戶端保持一致。
Vitess支持MySQL 5.6+和MariaDB 10.0+。我們建議使用MySQL 5.7。
具體安裝和使用方式可以持續(xù)關(guān)注我的文檔,更多內(nèi)容可以參考其官方網(wǎng)站文檔
本文聲明:

知識(shí)共享許可協(xié)議
本作品由 cn華少 采用 知識(shí)共享署名-非商業(yè)性使用 4.0 國際許可協(xié)議 進(jìn)行許可。