前言php
公有云服務本質上是用戶和傳統 IT 基礎設施的鏈接器,經過將傳統 IT 繁重的流程、低效的工做方式、不透明的價格以及糟糕的用戶體驗打碎,重構出諸如雲主機、雲對象存儲/CDN 、雲數據庫等產品,讓用戶方便地獲取計算和存儲能力,同時保持使用習慣不變。算法
通過近十年的發展,一個愈來愈明顯的趨勢是公有云服務正逐漸從基於傳統 IT 基礎設施的包裝和組合式創新,演進爲圍繞公有云場景、計算和存儲能力的從新進化和升級。諸如容器雲和 Serverless 架構、AWS Aurora 雲數據庫、UCloud 安全屋等,即是這一趨勢的典型表明。數據庫
由此,咱們能夠對公有云的發展進程作一個兩階段的歸納。雲計算 1.0 的關鍵詞是鏈接,經過互聯網和公有云來鏈接用戶和計算存儲能力;而云計算 2.0 的關鍵詞是進化,圍繞公有云場景,從新看待全社會使用計算和存儲資源的問題,對現有 IT 基礎設施、模式作進一步的升級和進化。緩存
站在雲計算 1.0 向 2.0 進化和升級的檔口, UCloud 雲數據庫團隊將用一系列文章來梳理過去、剖析當下、想象將來, 以此來全面展示 UCloud 雲數據庫服務( UCloud DataBase Service,簡稱 UDB )能力,分享咱們過去的經驗和對將來的思考。安全
基因服務器
考察一個雲計算服務的發展猶如觀察一顆種子落地後的生長。傳統 IT 設施向雲端變遷的趨勢是雲服務生長所需的陽光和雨露,但一顆種子可否長成參天大樹,除了足夠的陽光雨露, 還要考察這顆種子的基因和成色。網絡
在 UCloud 公司的四大價值觀裏,「客戶爲先」是放在首位的價值觀。 這體現了 UClouders 一以貫之的理念:只有爲客戶創造出真正的價值,企業纔可以生存和發展。創造真正的用戶價值是 UCloud 全部產品的基因,也是 UDB 產品和雲數據庫團隊的基因。架構
對於 UDB 產品而言,創造真正的用戶價值體如今兩個方面:框架
1.需求驅動的產品研發和運營
需求驅動產品設計,技術評估實現可行性,必要時非標快速定製,定製逐漸沉澱爲標準產品,整個過程按部就班。小步快走,是互聯網研發和運營的要領,也是公有云服務的要領。less
以 UDB 跨地域跨可用區容災爲例,從單機版 UDB 開始,不斷有用戶因跨可用區容災場景提出建跨機房從庫的需求,中大型互聯網客戶尤其強烈。起初,以一種非標形式來提供能力的支持。後期因 VPC 2.0 上線,技術也越發成熟,現已將這種非標能力轉化爲標準能力,即多可用區高可用 UDB 產品,同時也將 UDB 由可用區級提高爲地域級,產品形態獲得一次質的提高,傳統模式下須要付出極高成本才能構建的異地容災方案,經過 UDB 產品能夠輕鬆得到,用戶價值進一步被創造。
2.一切以客戶價值爲歸依,舍小我成就大我
雲計算產品是 IT 基礎設施類產品,技術人員在雲服務的研發中起主導做用。但技術並不直接等同於用戶價值。即便再先進的技術,離真正的用戶價值仍是會有一段距離。這段距離則須要用作產品的匠心來來彌補。
所謂的產品匠心,很是重要的兩點是對需求的洞察和對技術的取捨。技術人員常見的一個毛病是先入爲主,將本身以爲酷的牛的技術點等同於用戶價值。但事實每每證實不必定。真正的用戶價值創造,要打破技術人員思惟的藩籬,洞察到用戶需求的本質,從需求角度出發作技術選型,必要時勇於放下本身的喜愛甚至利益,成就真正的用戶價值。
UDB 產品在硬件架構上選擇了物理機+ Docker 的方案,而不是業界廣泛的雲主機方案,是這方面的經典案例。
雲數據庫是雲主機以後出現的產品。若是基於雲主機來構建雲數據庫產品,可以充分複用雲主機成熟的能力,雲數據庫團隊只須要關心硬件層面之上的問題。另外,選擇雲主機來構建,可以下降研發成本,快速推出雲數據庫產品。
但細究下來,雲主機的方案存在很多問題。最大的問題是 IO 性能。雲主機基於虛擬化技術,擁有完整的 OS 內核,這就致使 IO 協議棧太長, IO 有額外開銷;而 Docker 利用 Linux 的機制作隔離,自己處於用戶態, Docker 內進程的 IO 操做,由物理機 OS 內核統一管理,性能接近於原生物理機,遠勝於雲主機方案。在 IO 的穩定性上,雲主機的 IO 管理涉及三個層次( Guest OS 、 Hypervisor 、宿主機 OS ),而 Docker 的 IO 由物理機內核直接管理,所以在 IO 穩定性上的表現,雲主機亦不如物理機+ Docker 的架構。
所以,爲了更好的 IO 性能和穩定性, UDB 從一開始就選擇了物理機+ Docker (前期是 CGroup , 14 年全面轉向 Docker )的架構。事實證實,這是一個明智的選擇。橫向對比各大公有云廠商的雲數據庫產品,在性能上 UDB 每次都是完勝。
三重境界
王國維在《人間詞話》二六節寫到:古今之成大事業、大學問者,必通過三種之境界。「昨夜西風凋碧樹,獨上高樓,望盡天涯路」,此第一境也。「衣帶漸寬終不悔,爲伊消得人憔悴」,此第二境也。「衆裏尋他千百度,回頭驀見,那人正在燈火闌珊處」,此第三境也。此等語皆非大詞人不能道。然遽以此意解釋諸詞,恐晏、歐諸公所不準也。
如同任何偉大的事業, UDB 的成長之路,也經歷三個階段,細分爲三重境界。這三個階段互相獨立,又存在一個內在的邏輯,將它們牢靠地鏈接在一塊兒。 這個內在邏輯,就是 UDB 的基因:創造真正用戶價值。 UDB 在每個階段的萌芽、發展、躍遷,無一不是這個基因和理念在發揮做用。
1.作透一個點:取代自建數據庫
UDB 產品第一階段要比拼的是可否比用戶自建數據庫(基於雲主機或者自建 IDC ),具有更大的用戶價值。只有創造出更大價值,造成更高的價值勢能,才能吸引用戶將業務遷移到雲數據庫。因此 UDB 的第一個目標就是把「取代自建數據庫」這一個點給作透。
2.構建功能網:全方位覆蓋用戶需求
作透「取代自建數據庫」這個點,本質上是公有來運營 DBMS 軟件,創造出快速交付、運維託管等全新價值點。但僅僅有這一點還不夠。事實上,過去幾十年來,圍繞 DBMS 出現了從容災、遷移、安全到讀寫分離、數據拆分等解決方案和軟件,對應用戶業務的各類需求。這些解決方案和軟件一樣須要雲化,而且須要利用公有云的優點產生比自建更大的價值。如此,才能不斷強化雲數據庫的價值勢能,服務好已有用戶並吸引更多用戶向公有云轉化。
所以, UDB 產品第二階段要作的是構建一張雲數據庫功能網。在第一階段的基礎上,繼續將用戶須要的各個功能點作透。衆多功能點以及功能點的組合,最終構成一張大網,全方位地覆蓋用戶的各類需求。
3.三位一體融合平臺:雲計算 2.0 下的內生進化
無論是第一階段的作透一個點,仍是第二階段的構建功能網,對新價值的創造都是基於成熟的軟件或解決方案,利用公有云來實現功能的隨手可得、快速部署和彈性擴展。這種模式清晰明確,但並不意味着雲數據庫價值創造的終點。
雲計算 2.0 時代,公有云開始擺脫傳統 IT 基礎設施和軟件的藩籬。在產品和技術上,圍繞自身業務場景開啓獨立進化。其中,如何解決全社會大規模用雲時的成本、效率和智能問題,是這場進化的核心。而 UCloud 雲數據庫團隊也須要進一步去思考,是否能提供更加廉價優質、高效智能的雲數據庫產品。
帶着問題和思考, UCloud 雲數據庫團隊內部作了屢次探討,最終達成這樣一個認知:雲計算 2.0 下的雲數據庫服務,必然會是對內架構同一化,對外需求支持多樣化以及數據庫運維智能化這樣三位一體的組合。
在接下來的內容中,將就作透一個點、構建功能網、架構統一的多樣化數據處理體系展開詳細介紹,用具體的例子來勾勒 UDB 發展的三個層次,三層境界。
>>作透一個點:取代自建數據庫
取代自建數據庫,提及來好像很簡單。可是若是列出取代自建數據庫須要考慮的五個價值點:
> a、可靠性
> b、穩定性
> c、高性能
> d、零維護
> e、性價比
並逐個剖析,你會發現要將這些點作好,並不是易事。 UDB 產品通過幾年的努力,完美地實現了 作透一個點:取代自建數據庫 這一目標。
a、可靠性
雲數據庫的可靠性強調數據安全性包括兩方面:一是DB數據;二是備份數據。DB數據落盤的持久性一般要求99.9999%及以上,代表數據保持存儲狀態不丟失的機率。此類數據主要是指用戶存儲在數據庫中的數據,不包括緩存和臨時存儲。DB數據本地盤採用 RAID10或者 RAID50 作好冗餘,如果高可用機型,則再有實例級冗餘。備份數據要求異地存儲,多副本存儲。
b、穩定性
這裏強調的是單機穩定性。咱們能夠看下如何自建一套數據庫,在數據中心的電力、物理網絡、機架、物理服務器等基礎設施之上,部署操做系統和補丁,安裝數據庫軟件和補丁,運行數據庫軟件,啓用數據庫服務。若是是採用虛擬化部署,則額外涉及計算、網絡、存儲虛擬化。這是一套龐大的系統,各個環節都存在不可預知的故障風險。 UDB 通過多年的運營積累了諸多經驗,在多方面多層次保障其足夠穩定。
c、高性能
如何經過軟硬件結合使單機數據庫的性能發揮到極致?高性能 UDB 機型底層採用 PCI-E/NVMe SSD 存儲硬件,定製化宿主機 Linux 內核專門適配最新型硬件。採用自研 IO 調度算法,可良好保障實例級的 IO 隔離。數據庫層面經過參數調優、內核定製優化,使數據庫發揮出最優性能。一般狀況下,數據庫的性能瓶頸會出如今磁盤 IO 。採用虛擬機自建存在諸多弊端,例如 IO 路徑過長、 IO 穩定性較差、 IO 競爭等。 UDB 採用高性能物理機+ Docker 架構 + 自研 IO 調度算法,打造出強勁的 IO 性能,持續保障穩定性和隔離性。
上圖是去年某技術博客關於三大雲數據庫( UCloud 、阿里雲、騰訊雲)的評測數據(原文地址:https://www.felix021.com/blog/read.php?2163)。一樣配置下, UCloud 雲數據庫的性能( Sysbench 測試)遠超競品數倍。這個評測在當時也引起了一場業界關於雲數據庫性能的大討論和優化。
d、零維護
一般狀況下,數據庫是後臺服務框架裏最爲核心的組件,重要性不言而喻,平常運維工做慎之又慎。在第一個階段, UDB 提供的是數據庫的全託管運維能力,包括一鍵部署、保活、容災、備份、恢復、遷移、配置、漏洞修復、升級、監控與告警、巡檢等等一系列的後臺運維類操做,解放了客戶的 DBA 人力/精力。自己在 UDB 產品上集成了上述多數的控制檯操做,使客戶對數據庫基本可控。
e、性價比
客戶對雲數據庫買不買帳,性價比成爲很是重要的因素。可靠、穩定、高性能、高可用、零維護等基礎能力做爲 UDB 的價值基礎,在 UDB 產品上更是提供豐富的配置組合,自定義存儲(普通盤 or SSD 盤)、內存大小、 VPC 網絡、可用區等,靈活多配,按需付費,一鍵交付。按業務增加,彈性擴容。客戶徹底省去自建數據庫的一切環節,規劃 IDC ,規劃資源、採購、上架、交付部署以及後期一切運維工做。對於一些商業數據庫(如SQL Server )尤爲划算,省去自購官方 License 費用。
全景圖
最後,給出第一階段 UDB 的系統架構和產品全景圖:
從下往上,能夠看到一個雲數據庫產品的生長曆程:
1. UCloud全球數據中心是 UDB 開展全部工做的基礎。截止 2017 年 7 月份, UCloud 目前已有 21 個數據中心,其中 9 個海外數據中心遍及三大洲 10 個國家和地區,均部署有 UDB 產品。
2. UDB 數據中心自動化管理系統以及 DBA 和數據庫運維繫統是支撐 UDB 產品現網運營的兩大基礎系統。 UDB 全球任何一個數據中心的數據庫資源和現網運行問題,最終都落實到這兩個系統和負責團隊之上。而 UCloud 公司級支撐平臺則包括但不限於:運營平臺、運維平臺、監控和告警平臺、質量管理平臺、發佈和配置系統、變動系統、資產管理系統等,這些系統爲 UDB 團隊的平常運營提供強有力支撐。同時, UDB 充分藉助了兄弟部門的雲服務來簡化 UDB 管理流程,優化管理質量,這些系統包括:對象存儲 UFile 、分佈式文件系統 UFS 、監控系統 UMonitor 等。
3.基於物理機的 Docker 虛擬化是 UDB 產品的硬件基礎。物理機+ Docker 的硬件架構,其優勢已在上面充分說明,在此不作贅述。
4.多品類的數據庫產品。基於物理機的 Docker 結合 UCloud SDN 基礎網絡,各類數據庫軟件得以部署。目前 UDB 產品已經支持 MySQL、Percona、MariaDB、PG、MongDB、SQL Server 六大主流數據庫。更多的數據庫產品,還在不斷擴充中。
小結
UDB 團隊將推出一系列文章來介紹 UDB 產品的現有能力,並分享作產品的經驗和對將來的思考。本文做爲這個系列的第一篇,以全景概覽的方式爲你們介紹了 UDB 產品的基因,三個發展階段,並就第一個階段(取代自建數據庫)進行了詳細論述。
在下一篇文章,咱們將展開對 UDB 產品發展第2、三階段的討論。後續將進一步深刻, 推出涵蓋 UDB 高可用和容災、讀寫分離、分佈式數據庫等具體功能點的技術、產品文章,敬請期待。