YouTube是如何在云中實(shí)現(xiàn)MySQL彈性部署的
一個(gè)新的網(wǎng)站可能會(huì)以指數(shù)級(jí)速度飛速發(fā)展。不久之后,你就要開始計(jì)劃擴(kuò)容來滿足這種意想不到的需求。你當(dāng)然可以通過不斷地增加更多的前端服務(wù)器來解決問題,但最終,數(shù)據(jù)庫(kù)會(huì)成為你的瓶頸,這會(huì)導(dǎo)致你:
添加多個(gè)副本獲得更好的讀取吞吐量和數(shù)據(jù)耐久性
- 引入分區(qū)來擴(kuò)展你的寫入吞吐量,并且讓你的數(shù)據(jù)集增長(zhǎng)超過單臺(tái)機(jī)器
- 創(chuàng)建相互分離的副本池給批作業(yè)和備份來實(shí)現(xiàn)實(shí)時(shí)流量與副本的隔離
- 克隆整個(gè)部署到多個(gè)全世界范圍內(nèi)的數(shù)據(jù)中心中來滿足災(zāi)難恢復(fù)和更低延遲的需求
在YouTube,我們完成了擴(kuò)容MySQL的部署,它現(xiàn)在可以處理數(shù)以億計(jì)的日常視頻瀏覽量和每分鐘300小時(shí)新視頻的上傳量。為了實(shí)現(xiàn)這些需求,我們開發(fā)了Vitess平臺(tái),它可以解決擴(kuò)容挑戰(zhàn)且隱藏相關(guān)來自于應(yīng)用層復(fù)雜度。
Vitess是一個(gè)面向于縮放MySQL的存儲(chǔ)平臺(tái)。它優(yōu)化了MySQL在專用的硬件上的運(yùn)行效率,就像在云架構(gòu)里一樣。他結(jié)合了很多重要的MySQL里的特性和NoSQL數(shù)據(jù)庫(kù)的擴(kuò)展性。
Vitess是一個(gè)可用的開源項(xiàng)目,并且可以很好地運(yùn)行在容器環(huán)境下。如果你使用Kubernetes和Google Container Engine作為你的的容器集群管理器,上手Vitess會(huì)變得非常簡(jiǎn)單。我們給Vitess創(chuàng)建了一個(gè)單點(diǎn)開發(fā)部署配置,使它可以運(yùn)行在任何 Kubernetes支持的平臺(tái)上。
另外,為了更容易的部署容器集群,Vitess還充分利用了由容器集群管理器所帶來的好處,特別是:
- 水平擴(kuò)展:通過運(yùn)行更多的節(jié)點(diǎn)來增加能力而不是建一個(gè)巨大的節(jié)點(diǎn)
- 動(dòng)態(tài)布置:讓集群管理器調(diào)度Vitess容器到任何位置
- 聲明規(guī)格:描述你想要的最終狀態(tài),然后讓容器管理器去創(chuàng)建它
- 自愈組件:機(jī)器失敗自動(dòng)恢復(fù)
在這個(gè)環(huán)境下,Vitess提供了一個(gè)MySQL存儲(chǔ)層,包括提升持久性,擴(kuò)展性和易管理性。
我們也只是剛剛開始這樣的集成,但你已經(jīng)可以運(yùn)行Vitess在你自己的Kubernetes上。對(duì)于更多的關(guān)于Vitess的問題,請(qǐng)查詢我們的網(wǎng)站,在論壇里提出問題,或者到GitHub上加入討論。特別注意看一看我們的綜述,去理解相比于NoSQL的解決方案和像Google Cloud SQL一樣全面管理MySQL的解決方案,我們?cè)赩itess所做的權(quán)衡。
Vitess活躍開發(fā)于2011年,目前被用于YouTube的MySQL基礎(chǔ)設(shè)施的一個(gè)基礎(chǔ)部分,服務(wù)于每臺(tái)服務(wù)器成千上萬的每秒查詢率。如果你希望確定Vitess是否適合你的項(xiàng)目,請(qǐng)?jiān)L問vitess.io