爲什麼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 送你一份技術課程大禮包!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章