當前位置:
首頁 > 最新 > TXSQL是什麼?雲計算時代資料庫核彈頭

TXSQL是什麼?雲計算時代資料庫核彈頭

背景:5月23-24日,以「煥啟」為主題的騰訊「雲+未來」峰會在廣州召開,廣東省各級政府機構領導、海內外業內學術專家、行業大咖及技術大牛等在現場共議雲計算與數字化產業創新發展。

騰訊MySQL內核研發專家張青林在騰訊「雲+未來」峰會的「開發者專場」做了主題為「TXSQL:雲計算時代資料庫核彈頭」的技術內容分享,本次分享從五個方介紹TXSQL:


騰訊雲作為國內雲計算領先公司,在全球建立了500多個數據中心,供數於萬計的開發者使用。

CDB產品是騰訊雲提供的TXSQL產品,CDB產品提供了一整套的解決方案,包括用戶上雲,數據遷移、備份、恢復、升級等操作,相比於傳統用戶來構建MySQL服務,減少了投入的同時也方便使用。

騰訊雲的CDB服務滲透到了各行各業,包括銀行、證券、物流,還有傳統企業等都有騰訊雲的客戶,用戶購買 CDB 後,會分配相應的主機、埠、用戶名、密碼等信息,用戶通過這些信息可以直接聯接到後台的資料庫。

CDB服務目前分為本地盤和網盤,TXSQL是基礎架構部資料庫內核團隊獨立維護的MySQL 分支,對外通過CDB服務提供給客戶。可以看到TXSQL是內核,也是底層提供數據服務的位置。


我們來詳細看看構建TXSQL的必要性:

從2016到2017年,存儲規模達到了4倍以上,並且隨著雲計算市場的不斷成熟,行業覆蓋率也得到了前所未有的發展,整個實例級別已經達到了10萬+。

當用戶自己構建資料庫服務的時候,跑在自己的伺服器上,一年可能只會遇到一兩個問題,但是如果有數十萬個伺服器在同時運行,那麼每天遇到問題的概率是很大的,所以我們遇到了三個挑戰:

第一,客戶使用了CDB產品,他會把資料庫的請求返回交給上層應用,如果資料庫出現問題,可用性基本上得不到保障,所以隨著規模的不斷增長,我們必須能夠快速定位和解決客戶遇到的問題。

第二,來自業務的需求,隨著行業覆蓋率的不斷擴展,比如金融或者對數據要求比較高的行業,他們就會對數據安全等功能有多元化的需求,所以需要具備滿足客戶需求的開發能力。

第三,關於性能,我們知道電商在大促或者遊戲有活動的時候,資料庫所受到的壓力很大,這時候為了提升單機的性能,讓用戶花最少的錢買最好的服務。

綜上所述,面臨著三大挑戰,一個是穩定性,一個是新的業務需求,還有一個是性能的提升。

基於此,騰訊雲需要有一個自己的內核團隊來快速定位客戶問題,來幫助客戶解決問題,並且最大速度的提升單機性能。


B3M是我們的代碼設計模型,可以讓客戶操作的時候更方便,更好的解決問題,也可以幫助客戶實現一些新的需求。

用戶可能會問, MySQL作為一個基礎軟體,有幾百萬代碼,門檻比較高,怎麼保持修改後的MySQL版本的穩定性呢?

我們不是隨意改MySQL,我們改的每一處地方都要經過嚴格的測試。

首先,我們會進行需求分析,需求分析主要來源於幾個方面,一個是資料庫在運行過程中出現的問題,比如官方的BUG,另外是用戶需求相關的東西,幫助他們更好的使用資料庫,再就是做性能調優,用戶在使用MySQL過程中,我們也逐漸提升性能和競爭力。

經過需求分析之後會做設計,然後再進行代碼編寫的工作,編寫之後我們會嚴格把控代碼質量,每一個步驟都會經過嚴格測試,比如代碼覆蓋率測試和單元測試,我們基本每兩到三個月會發布一個資料庫內核版本,每一個版本都要跑穩定測試和性能測試,以及崩潰恢複測試,從而保證我們的代碼不會引入新的BUG。

在版本發布的時候,首先進行個別實例的發布,然後對新的TXSQL版本的實例進行進行秒級監控,沒有問題再進行小集群的發布,最後再進行全網發布,通過這種方式我們保證了MySQL版本的穩定性以及可靠性。


對於用戶來說,所使用CBD內核提供了哪些服務?

因為我們對MySQL的改動,是在MySQL的基礎上進行二次開發的,一種是性能調優,一種是線上問題的解決,還有功能開發,針對於新的業務需求來實現。

我們會通過在壓測過程中比較他們資源競爭的情況,比如說內存資源或鎖資源,下圖中的前三個是我們對redo log所做的性能調優,第一個是redo log,通過減少sync 盤的次數來提升性能,第二部分是通過多緩衝buffer,即Redo Log 在Sync的同時不影響其它事務日誌的寫入,第三個則可以保證事務在向系統緩衝區寫Redo 日誌時互不影響,提升並發性。Select offset limit 操作則是將計算下推到引擎層,降低 CPU資源消耗的同時,提升性能。

而在功能方面,我們實現了官方版本所沒有的功能,比如加密、審計、線程池,並行複製。首先是審計功能,官方的版本是沒有審計這個功能的,只有企業版才有,我們結合自己的實際情況,為了保證用戶的性能,我們做了一個audit的插件,從而保證性能的同時實現了用戶所需要的功能。

第三個是thread handling,我們在測試壓力測試的時候,隨著並發的加大,性能會首先提升,然後下降,原因則是系統內部各種資源的竟爭比較嚴重,TXSQL 通過把 Thread Pool 引入來解決這個問題,並且解決了以下幾個問題:

解決了Threadpool 情況下全局讀鎖所造成的死鎖問題

解決了 Dump 線程對於Thread Pool 的影響

添加新的 Information Schema 表來觀察ThreadPool內部的運行情況

當主庫壓力不斷變大的時候,我們備庫的消耗數趕不上主庫生產的時候,從5.1,5.5, 5.6,5.7,這個問題始終沒有得到很好的解決,5.6的時候雖然有一個並行演算法,但是並不能完全解決延遲問題,我們引入了自己的並行,從而很好解決了這個問題。當你主庫延遲的時候,主庫掛了,備庫沒有消費完累積的 RelayLog之前,伺服器是不能夠提供服務的,如果接受服務的話會有雙寫的問題。

無論是我們在上雲過程中還是服務用戶過程中,都遇到了各種各樣的困難。

比如我們在幫一個遊戲公司上雲過程中發現了他們的性能問題,我們對系統進行分析的時候對它進行了優化,調優了各種參數並升級內核,最終使用戶的性能從7萬上升到17萬。

第二案例比較突出的是遊戲客戶,他們的實例遇到了內存泄露的問題,佔用內存不斷上升,造成了機器的 OOM,這個問題我們花了將近一周的時間找到問題RootCause,然後用一周的時間進行灰度發布和測試,我們Fix Bug的速度一般是兩周,而官方受限於版本發布,一般都需要兩到三個月才能解決。

TXSQL只是作為內核版本來幫助用戶進行計算。我們的穩定性有幾個來保證,一個是全鏈路監控,一個是機器層面操作系統方面的監控,還有MySQL的秒級監控,以及人工的在線幫助。


在保持穩定性,性能調優和功能實現的基礎上,未來我們會以這幾個方向。

批量計算:對於可以讓 Engine做的事情,我們可以將計算下推到Engine層來做,減少消耗。

執行計劃緩存也是我們在不久將來要做的事情,之前做過一個測試,最簡單的基於主鍵的查詢就會有10%的性能提升。

為了解決存儲的問題,我們將RocksDB 引入到了TXSQL中,即 TXRocks,也會在近期推出這個產品,在支持事務操作的同時,可以極大的降低用戶成本。

-END-

騰訊雲助手,移動管理輕鬆上雲


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲加社區 的精彩文章:

誰可能會對智能設備上癮?AI也會畫摩登原始人了?
哇!我們常用的QQ視頻通話技術原來是這樣實現的

TAG:雲加社區 |