歡迎光臨
每天分享高質量文章

Kubernetes助力CNCF Vitess實現MySQL擴展

一項由YouTube開發的旨在跨多個服務器實現MySQL分片的技術,Vitess,成為Cloud Native Computing Foundation第16個專案。
Vitess是為“熱愛MySQL功能,卻顧忌它擴展性的人們創建的”,Sugu Sougoumarane在The New Stack採訪中說道。他是Vitess創始人之一,現在是PlanetScale Data,一家以Vitess為中心的低調的創業公司聯合創始人和CTO。
他說:“人們使用MySQL時會顧慮它沒有很好的擴展性,但現在有了Vitess,這個問題被解決了。”
Vitess用戶分成兩個陣營,Sougoumarane解釋道。一個陣營是重度MySQL用戶,他們知道如何在多個服務器間分片MySQL來提高性能,但是他們依然選擇Vitess而不是自己維護軟體。第二個陣營往往是較小的組織,單個MySQL實體滿足不了他們的需求。
CNCF技術監督委員會(TOC)在本周投票贊成這項新技術,Vitess被CNCF採用表明CNCF TOC在認真考慮雲原生運行面臨的持久化儲存的挑戰。上周TOC也投票通過了Rook雲原生儲存專案。

Vitess架構

Vitess是一個資料庫集群系統,用來水平擴展MySQL,一個由Oracle主導的開源關係資料庫管理系統。Vitess將資料庫在不同的服務器間分片,內部封裝分片路由。應用程式使用Vitess API驅動程式而不是Oracle的MySQL驅動程式,這時MySQL實際上成為雲原生資料庫。 用戶可以根據需要分割和合併分片。在此基礎上,Vitess依靠CNCF開源Kubernetes容器編排引擎,通過使用容器集群加速自動擴展。
Vitess還支持其他的雲原生功能,比如支持故障自動恢復、副本和滾動升級。Vitess支持多個分片方案,用戶也可以創建自己的方案,它還附帶master管理和性能管理工具。

Vitess在保持了MySQL基於SQL的一致性模型的同時還帶來了NoSQL資料庫的大規模可擴展性。在過去十年中,許多用戶放棄了MySQL和其它兼容SQL的資料庫,他們提供ACID資料一致性保證,轉而選擇更寬鬆、更容易擴展的NoSQL資料儲存。
這些用戶認為他們不需要實務屬性,但是“當你遇到越來越多的用例,你希望從資料中獲得更好的保證”Sougoumarane說。結果很多人最終在應用程式本身實現了所需的事務屬性,“這些應用程式最終比他們期望的要複雜得多”他說。
當然,並非所有用戶都使用NoSQL。許多組織(如Slack或Facebook)都傾向於使用MySQL,雖然它們需要更多的可擴展性,而不是資料庫系統提供的自行管理能力。有一些方法可以擴展標準的關係資料庫,但是會導致維護工作不斷增加。最初,可以通過複製副本來擴展資料庫,以便可以從多個副本中讀取相同的資料。最終,寫入性能成為棘手問題,因此下一步就是將不同的表分配到不同的服務器,並且最終必須將一個表分割到多個服務器上,這是一個令人頭疼的問題,隨著時間的推移越來越糟糕。
Vitess旨在隱藏所有這些複雜性。去年,AWS工程化自己的類MySQL的資料庫服務Aurora,它具有多主資料庫讀寫功能,高效地為服務提供了幾乎無限的橫向擴展能力。 像Vitess這樣的技術可以提供相同的功能,但它不會將最終用戶限制到特定的雲服務廠商。


經過生產測試,Kubernetes已就緒

Vitess開始於2010年,作為內部YouTube專案構建一個代理服務器(現在稱為VTGate),設計目的是池化鏈接(MySQL中的弱點),並緩衝可能導致MySQL實體宕機的查詢。
最初Vitess運行在裸機上。但是,當YouTube在2013-14年遷移到Google Cloud時,開發人員需要調整該軟體以便在容器化環境中運行,而容器管理軟體非常類似於Kubernetes。 因此開發人員抽象、構建API到Vitess中,以便它可以在這樣的環境中工作。
因此,“我們在Kubernetes發佈後幾乎已經準備好了在上面運行”Sougoumarane說。在Kubernetes幫助下,Vitess可以擴展多達數萬個節點。 “如果沒有Kubernetes,你將不得不編寫大量的自定義啟動腳本來部署。 “如果服務器出現故障,Kubernetes可以將故障節點調度到其它地方,併在新配置中重新平衡應用程式。
後端組件是用Go編寫的,該軟體支持MySQL5.6版本,以及MySQL派生的MariaDB10版本。支持網絡檔案服務器或BLOB儲存實現備份。
Vitess是繼Kubernetes、Prometheus、OpenTracing、Fluentd、Linkerd、gRPC、CoreDNS、containerd、rkt、CNI、Envoy、Jaeger之後CNCF的第16個專案。根據CNCF畢業標準v1.0,Vitess已被接受為孵化水平專案。
任何CNCF孵化專案的要求之一是,至少被三名獨立終端用戶在生產環境中成功使用。現在Vitess已經滿足了:BetterCloud、Flipkart、Quiz of Kings、Slack、Square Cash和Stitch Labs都使用該軟體,除了YouTube本身。使用範圍涵蓋移動應用程式,游戲公司,金融機構,零售和其他企業。
例如,Stitch Labs在Kubernetes上運行數百個分片,每秒處理數千個查詢(QPS),Sougoumarane說。Slack是部署Vitess的另一個組織。該公司希望繼續使用MySQL,儘管其快速增長的服務需要每天處理數十億次MySQL事務。“我們需要一種能夠提供熟悉的、完全滿足SQL接口的解決方案,並且希望繼續使用MySQL作為後端儲存以保持我們的操作知識和舒適度,”Slack高級工程師Michael Demmer在一份宣告中表示。“基於這個目的,Vitess是自然選擇,迄今為止我們的表現非常好。”
Booking.com、GitHub、HubSpot、Slack和Square都積极參与該專案。
原文鏈接:https://thenewstack.io/cncf-host-vitess

Kubernetes 實戰培訓

本次培訓內容包括:Docker容器的原理與基本操作;容器網絡與儲存解析;Kubernetes的架構與設計理念詳解;Kubernetes的資源物件使用說明;Kubernetes 中的開放接口CRI、CNI、CSI解析;Kubernetes監控、網絡、日誌管理;容器應用的開發流程詳解等,點擊識別下方二維碼加微信好友瞭解具體培訓內容

3月23日開始上課,點擊閱讀原文鏈接即可報名。
赞(0)

分享創造快樂