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

来源:https://www.cnblogs.com/qcloud1001/archive/2018/12/04/10064587.html
-Advertisement-
Play Games

本文由騰訊雲資料庫發表 註:本文摘自2018年11月22日騰訊雲資料庫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 送你一份技術課程大禮包!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 參考資料:https://www.thegeekstuff.com/2012/12/linux tr command/ 簡介 tr命令用於轉換、刪除或者去除重覆字元。它從STDIN中讀取數據並且將其寫入SDTOUT。 因此它的用法是這樣的。從用戶鍵入的STDIN中讀取。 或者這樣的。通過輸入重定向來 ...
  • 與more的區別 more在man手冊中的英文原文是文件熟讀過濾器(file perusal filter),其實可以理解為一種文本查看器。 它存在一些缺點: 必須事先載入完整個文件。因此在遇到大文件的時候,需要等待。 翻閱到文件尾部的時候自動退出。 man手冊也有說明more這個命令已經是比較遠古 ...
  • 創建資料庫 ...
  • 前言 在一個陽光明媚的下午,電腦右下角傳來一片片郵件提醒,同時伴隨著微信釘釘的震動,打開一看,應用各種出錯,天兔告警,資料庫伺服器記憶體爆紅,Mysql資料庫實例掛掉了。 排查 先交代一下資料庫版本: 崩潰故障排除絕不是一項有趣的任務,特別是如果MySQL沒有報告崩潰的原因。例如,當MySQL記憶體不足 ...
  • mysql教程導出資料庫教程幾種方法 方法一 cmd 到mysql bin目錄下用 如下命令 mysqldump --opt -h192.168.0.156 -uusername -ppassword --skip-lock-tables databasename>database.sql 把ip改 ...
  • oracle 總結第二篇,主要總結了oracle的表管理中相關註意的問題 ...
  • redis是一種開源的、基於記憶體的、可持久化的、高性能的Key-Value數據存儲系統。 redis能做什麼? 持久化存儲 高速緩存 消息中間件 2.Redis 安裝配置 高性能(記憶體存儲、僅在需要時持久化到硬碟) 數據類型豐富 (string Hash List Set SortedSet) 支持 ...
  • 項目中需要存儲用戶信息(用戶昵稱有表情符號),自然就遇到了emoji等表情符號如何被mysql DB支持的問題 這裡引用先行者博文:https://segmentfault.com/a/1190000000616820 如果UTF8字元集且是Java伺服器的話,當存儲含有emoji表情時,會拋出類似 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...