為什麼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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...