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

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)

分享創造快樂