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