1. 程式人生 > >為什麼CynosDB叫真正的雲原生資料庫?

為什麼CynosDB叫真正的雲原生資料庫?

本文由騰訊雲資料庫發表

注:本文摘自2018年11月22日騰訊雲資料庫CynosDB新品釋出會的演講實錄。隨著網際網路資訊的發展,大家也對雲這個詞彙也不是特別陌生了,作為全球首選的雲服務廠商之一的騰訊雲,依託騰訊多年的業務積累和技術沉澱,我們推出了高效能、低成本、安全可靠的整體資料服務解決方案。並且隨著客戶資料日益增長,也做了相關的調研和分析,推出了騰訊雲新一代自研資料庫。我這裡先賣一個關子,由我們這邊的技術嘉賓給大家揭曉我們相關的資料庫內容。

——————————我是分割線————————

img

大家下午好!我是騰訊雲資料庫產品中心NewSQL的產品負責人,我叫劉峰。我想在座的各位有誰瞭解什麼叫NewSQL?我給出一個比較狹義的定義,NewSQL其實就是SQL加上NoSQL。我們說資料庫有三個比較重要的歷史階段,第一是SQL標準的引入,第二個是NoSQL的流行,第三個是NewSQL的誕生。如果前兩個重要的歷史時期你們錯過了,那麼此時此刻是第三個重要的時刻,騰訊雲自研的NewSQL資料庫的誕生。

我們首先來看一下雲資料庫有哪些型別,有兩種,搬遷和雲原生。雲端計算時代的到來,廠商需要提供給客戶雲資料庫服務,一個比較直接的想法是,作為雲廠商我們可以把傳統的資料庫搬到雲上來,給客戶以租用的方式提供服務。這是大多數我們的雲廠商提供服務的方式。當我們做了這件事情以後,我們發現傳統資料庫在雲上有很多的問題,而這些問題是傳統資料庫既有的問題,在雲上並沒有得到解決。同時,我們發現傳統資料庫也不能適應雲在擴充套件性、可靠性和規模化的優勢。這個時候,就迫使我們雲廠商來考慮,如何將傳統的資料庫和雲資料庫、雲端計算做一個融合,這個融合的點,我們稱之為雲原生。

舉一個比較恰當的例子,大家可以理解為傳統的資料庫搬到雲來提供雲資料庫服務是一種搬家模式,而云原生資料庫提供的是一種“拎包入住”的方式。

剛才我們提到了傳統資料庫有很多問題。現在大家看一下傳統資料庫有哪些問題。

第一個問題,備份回檔慢。這是一個經典的利用傳統資料庫在雲上的備份回檔的結構,如果要做備份回檔我們需要把原有的資料拷貝一份到雲端儲存上,同時將雲端儲存的資料拷貝到使用者資料庫的實體上。1T的資料需要使用3個小時,2T的資料需要6個小時,如果備份回檔3T的資料,就是今天晚上我就可以先下班了。

第二個問題,故障恢復慢,單獨的資料庫支撐的可能性是很低的,如果資料庫宕機了,業務就中斷了。通常的說法是,我們在主資料庫邊上會掛一個從資料庫,從資料庫會從主資料庫來同步資料,但很不幸的是,大多數情況下,如果你的主資料庫壓力比較大的時候,從資料庫是不能得到及時的資料更新的。舉一個不恰當的例子是,在雙十一購物高峰的時候你從購物網站選很多禮物放在購物車,而恰巧主資料庫宕掉了,即使有從資料庫,但卻沒有及時得到主資料庫更新的資料,所以你會發現你購物車裡的那些東西都已經不見了。我們認為在傳統資料庫上這種故障恢復慢的問題還是比較嚴重的。

第三和第四個問題,是縱向擴充套件弱、橫向擴充套件弱。傳統資料庫是盒子,裡面裝的是資料,如果想擴充套件傳統資料庫需要一個更大的盒子。舉一個更形象的例子,比如說我們自己開發了一款遊戲,剛開始的時候我們認為這個遊戲沒有多少使用者玩兒,我們用了一款資料庫是1個CPU、2G記憶體100G儲存空間,很幸運的是我這款遊戲大賣了,這時候發現CPU的記憶體不夠用了,需要擴充套件,傳統資料庫的做法是什麼?是建立一個4核、8G、1T的資料庫,之後把資料庫搬遷到這裡。這涉及到資料庫遷移的問題,那麼1T資料3個小時,2T資料6個小時,3T資料我今天也幹不完,明天再接著幹。相信這種服務提供給客戶,客戶也不會滿意的,同樣橫向擴充套件是相同的問題。

第五個問題,維護成本高。為什麼說維護成本高呢?如果使用傳統資料庫,既要人為地進行手動資料備份回檔,又要參與橫向和縱向的擴容,又要做故障恢復,人工參與的成本是很高的,同時加上原有架構的效率非常低,也導致時間成本和人工成本非常高,所以說我們的維護成本非常高。

第六個問題,資源利用率低。傳統資料庫是大盒子,盒子裡面裝CPU、記憶體和硬碟。但我需要很大的CPU、記憶體和硬碟嗎?並不永遠是這樣的,有時候我們只需要更高的CPU、更大的記憶體,有時候需要更大的硬碟,難以滿足使用者在三個維度方面不同的需求正是傳統資料庫很大的問題,很多資源用不了那麼多的時候就造成了資源的浪費。

第七個問題,可用性低。舉一個上個月發生的例子,一家被微軟高價收購的全球性的社交程式設計和程式碼託管網站,由於它用傳統資料庫主從架構在兩個資料中心做了高可用性,美國政府更換了兩個中心中間的光纜,中斷了43秒,就是這43秒造成了整個網站24小時的宕機和癱瘓。大家可以想像,利用傳統資料庫架構,即便是這樣的高科技公司都遇到了服務不可用的問題,何況是我們身邊的企業。

為了解決傳統資料庫的問題,我們作為雲服務廠商提供了一個完整的一站式的解決方案——騰訊雲自研的資料庫產品CynosDB。CynosDB源於單詞Cynosure,是古希臘神話中北極星的名字,就是北天小熊座最亮的一顆星,現譯為引人注目的人或物、天生的焦點。CynosDB是騰訊雲自研的高效能、高可用、企業級雲資料庫,相容開源資料庫MySQL和PostgreSQL。

我們來看一下我們當初是怎麼考慮要設計這樣一款資料庫的。借用當下比較流行的詞叫“C位”,我們在CynosDB設計之初考慮了與C相關的設計特性。

CynosDB核心設計理念:

第一,Comprehensive ”兼”容幷包,即全面相容新版開源資料庫MySQL和PostgreSQL,而目前業內廠商大多隻能相容一種。我們相容了兩款主流的開源資料庫,這樣做可以幫助企業實現平滑遷移。

第二,Creative分而治之。傳統的資料庫架構其實就是一個大盒子,怎麼分才能把這個記憶體、CPU和磁碟進行合理的分配,減少資源浪費呢?我們的實現方式是分而治之,將計算與儲存分離。不放在一個盒子裡,放在多個盒子裡面。實現了這種結構,就相當於我們需要在計算層和儲存層之間進行通訊。通訊是通過網路來進行的,這使得我們需要減少網路通訊的流量,所以騰訊的CynosDB實現了一個“日誌即資料庫”的架構。

第三,Cloud Native應“雲”而生。我們的資料庫是搭建在騰訊雲現有的高效穩定的雲服務之上,所以我們能快速地搭建出高效能、高可用、高可靠的一套雲資料庫。

第四,Cost Effective事半功”倍”。我們需要一個在效能上能超過傳統資料庫的雲資料庫,並且可以給客戶減少成本壓力,因為雲端計算的本身其實是要給客戶一個很實惠的服務,所以我們是說,可以實現真正的按量計費和彈性的擴增容。

第五,Cohesive相“輔”相成。極簡的軟體優化釋放硬體紅利。我們每年都會關心蘋果手機的釋出會,釋出會上其實蘋果每年都會講我們今年有更高的CPU,我們有更大的儲存量,大家有沒有想過有一天,我們的蘋果手機會執行得越來越慢,但蘋果告訴你通過軟體的優化,讓原來的iPhone4、iPhone5、iPhoneSE,不需要升級到更快的CPU,更大的記憶體就可以用所有的AppStore的App呢?也許有一天蘋果會做到這個,但CynosDB今天已經做到了。

現在看一下基於核心設計理念建構的CynosDB的產品架構。我們把盒子拆分了,我們將計算層獨立出來,而儲存層是用雲自帶的分散式儲存來實現的。中間的通訊是通過網路進行計算層和儲存層的通訊。我們的架構實現了真正的相容多種資料庫引擎,因為我們將計算層獨立出來之後,我們的計算層就可以相容多個數據庫引擎。計算與儲存分離之後,儲存是一塊獨立的服務,大家可以理解計算是一層服務,儲存是一層服務,外圍我們接了雲網絡安全服務,不同的維度來保證安全可靠。我們給客戶提供軟體優化與新硬體相結合的解決方案,可以基於普通硬體來滿足自己高效能、高可用的需求。如果有更高的要求,因為我們是一個企業級的資料庫,我們可以結合新硬體,比如說我們基於SSD的SPDK的驅動和RDMA的網絡卡提供效能更高的資料庫服務,這個選擇權我們交給了客戶。

所以我們說,CynosDB產品架構是基於雲服務和普通硬體的資料庫架構,我們釋放硬體紅利、不轉嫁硬體成本。

後面重磅介紹一下我們CynosDB的一個核心部件叫做CynosFS可計算智慧儲存,這是騰訊獨創的一個儲存系統。我們在國內率先實現了“日誌即資料庫“的體系架構。什麼意思呢?大家看到左邊其實是傳統資料庫的一個體系架構。當傳統資料庫發生了一個寫操作的時候,計算和儲存之間需要進行諸多的IO寫入。我在儲存和儲存備份之間也要同樣地進行IO操作,其實是極大地增加了系統的負載。而CynosDB是右邊的做法,我們將諸多的IO合併減少為只寫日誌,所以我們稱它是日誌即資料庫,也就是說在我們的系統裡只存在於資料的日誌,我們稱之為極簡IO。這相當於我們把繁忙的北京二環改造成了一個全方位的、立體的軌道交通,極大地提高了系統的執行效率。除此之外,CynosDB還實現了儲存的運維自動化,大家可以看到日誌寫完了之後是可以返回的,可是在儲存底層,我們自動把資料存成三個副本,是通過分散式一致性協議來維護的。特殊的情況下,如果一個副本產生了錯誤我們會從另外兩個副本自動地拷貝資料到損壞的副本上來修復資料。同時,藍色的部分是我們的資料頁,如果系統需要訪問資料頁,我們會義務地將日誌轉化成資料,並且這套系統實現了自動擴縮容,所以我們稱之為運維自動化的分散式儲存系統。

我們來看一下CynosDB利用這種獨創的架構和獨有的產品創造的能力

首先,我們是業內首家相容多個數據庫引擎的雲資料庫。

第二,效能突破100萬大關,實現了商用資料庫同等級別的極速效能。

第三,儲存容量達到了128TB,實現了國外雲資料庫領先廠商一倍的效能和儲存量。

第四,告別分鐘進入秒級時代,之前提到了資料庫的種種痛點,我們有恢復慢、主備切換不可控的問題,而CynosDB將整個計算節點、故障節點恢復的時間從分鐘級帶到秒級。我們在計算層和儲存層分離之後可以實現快速的恢復,讓故障節點高可用。

第五,秒級備份,剛才講到備份回檔1T資料需要的時間,CynosDB在這個痛點上進行了極大的提升,基於快照的備份和回檔,實現了秒級的飛躍,比傳統的備份回檔的速度提高了180倍。

講到上面的這些產品能力,我們要看一看CynosDB的使用者價值,這是使用者最關心的。

第一,降低成本,提供了一款具有超高性價比的資料庫產品。我們是基於普通硬體和軟體的極簡優化才做到這一點。達到效能與可用性與商用資料庫相當的水平,成本只有約1/15。

1)從顯性成本來講,雲端儲存降低了硬體採購的成本,且我們的成本是低於國外商用資料庫一個數量級。2)CynosDB將儲存計算分離之後,儲存實現了真正的池化。大家知道,規模化可以降低邊界成本,並且產生邊際效應,我們通過分散式計算儲存將儲存實現了真正的無伺服器架構,實現了一個儲存層的智慧角度,極大地降低了儲存的成本。也就是說,你可以根據自己的使用量來分配你的成本,不像我們原來需要一個盒子或者是需要一個更大的盒子。3),剛才我們講到實現了諸多的自動運維的功能來減少人工干預,這相當於是降低了我們使用者使用的隱性成本。

綜合三個維度的成本的節約,我們的成本只有傳統商業資料庫的1/15。

第二,靈活的彈效能力。大家如果有在現在的雲上面購買資料庫的經歷會知道,我們如果買一個數據庫第一是需要多少CPU,第二是需要多大的記憶體,第三是需要多大的硬碟。要有CynosDB就不需要這三步操作了,不需要知道你要多大的硬碟,購買完之後需要10T,付10T的錢,需要百T付百T的錢,如果不需要儲存可以不用花錢。找到了真正的自動擴縮容而按使用量付費。

第三,平滑上雲。全面相容MySQL5.7和PostgreSQ10,這是兩個目前更新的開源資料庫的版本,原有應用零改動,實現了企業的平滑遷移和快速上雲。

第四,安全可靠。我從三個維度來給大家講一下我們怎麼樣做到安全可靠的。這是我們雲資料庫乃至雲服務的一個生命線。1)縱向維度,CynosDB儲存實現了一個自動的多版本維護,就像剛才我講到,我們寫一份資料在我的儲存其實是可以自動維護三個副本,在縱向上是增加了資料得多副本;2)我們提供了跨區域的高可用,你可以多新增幾個副本到另外的資料中心區,即便是這個資料中心的資料宕了,那個資料還可以提供,我們提供了高可用性,進一步保障安全可靠;3)同時支援騰訊雲現有的安全組和VPC進行網路隔離,騰訊雲現在的閘道器服務可以抵擋黑客攻擊和DDOS攻擊。

我們將剛才所列舉的諸多使用者價值放在具體的應用場景來看,我們如何能解決企業的問題。

第一,高效能、高可用的企業應用。我們可以平滑上雲,保證業務連續高效運轉,可以降低企業的運營成本,可以通過自動運維減少人工干預。這裡給大家爆一個料,我們的可計算智慧儲存將來會朝著人工智慧領域發展,我們將來會將人工干預減少到最低。所以我說,CynosDB天生適用於傳統企業,支撐傳統企業的關鍵核心業務。

第二,網際網路和遊戲業務。1)應對峰值業務。我的同事也介紹到了,無論是電商還是遊戲,網際網路業務經常有很大的業務量的峰值變化。CynosDB靈活的計算擴充套件天生適合應對峰值業務。遊戲領域我們經常會做衝線上使用者數的活動。傳統情況下,運維人員會提前一個月購置裝置,等活動結束這個裝置就不需要了,還需要把這些設備註銷掉,可是CynosDB不需要這項工作。2)快速備份回檔。剛才講到我們將備份回檔的速度提高了180倍,可以想像當你的遊戲版本出現問題的時候,你比競爭對手更快地修復問題,會給客戶提供更快的遊戲服務。3)海量可擴充套件儲存,CynosDB是一個分散式的共享儲存,遊戲的公司可以利用它來實現混服和合服的操作,同時不需要用多個例項來支撐遊戲業務了。所以CynosDB天生適合應用於網際網路公司、遊戲和小程式。

此文已由作者授權騰訊雲+社群釋出,更多原文請點選

搜尋關注公眾號「雲加社群」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!