共同探索企业级数据库架构之道路
2018云棲大會南京峰會企業(yè)級互聯(lián)網(wǎng)架構(gòu)專場,阿里巴巴高級數(shù)據(jù)架構(gòu)師黃歡歡帶來題為企業(yè)級數(shù)據(jù)架構(gòu)探索之路的演講。主要從企業(yè)數(shù)據(jù)庫的發(fā)展現(xiàn)狀、存在的問題以及企業(yè)級架構(gòu)的需求開始談起,針對其存在的問題提出了對應(yīng)的解決方案,最后對企業(yè)級產(chǎn)品的架構(gòu)以及滿足企業(yè)及架構(gòu)的需求問題做了詳細(xì)的分析。
數(shù)十款阿里云產(chǎn)品限時折扣中,趕快點擊這里,領(lǐng)券開始云上實踐吧!
直播視頻請點擊
以下為精彩視頻及ppt內(nèi)容整理:
企業(yè)數(shù)據(jù)庫現(xiàn)狀
說起企業(yè)級數(shù)據(jù)庫架構(gòu)體系,在2010年阿里巴巴還沒有一個完整的數(shù)據(jù)庫架構(gòu)體系且存在著很多問題,問題大致可以分為一下幾點:
- 業(yè)務(wù)快速發(fā)展,如何才能做到彈性擴(kuò)展、且性能滿足要求:單體的IOE架構(gòu)已經(jīng)不能滿足業(yè)務(wù)快速發(fā)展的需求,所以需要我們?nèi)プ鰪椥缘臄U(kuò)展,也就是既可以彈性擴(kuò)容也可以彈性縮容的。
- 數(shù)據(jù)是最重要的資產(chǎn),但數(shù)據(jù)孤島卻是現(xiàn)狀:現(xiàn)如今應(yīng)用都在做服務(wù)化,應(yīng)用做服務(wù)話以后在每個地方都存在自己的數(shù)據(jù),那么數(shù)據(jù)之間是如何流通的呢?以及怎樣避免數(shù)據(jù)孤島等問題值得思考。
- 穩(wěn)定和高可用,已經(jīng)成為企業(yè)數(shù)據(jù)庫系統(tǒng)的最大挑戰(zhàn):對于企業(yè)級來說,這是一個普遍的問題,數(shù)據(jù)庫的穩(wěn)定性、高可用性是企業(yè)級數(shù)據(jù)庫最基礎(chǔ)的一個功能。
- 業(yè)務(wù)的多樣化,單一的數(shù)據(jù)存儲無法有效滿足需求:我們發(fā)現(xiàn)業(yè)務(wù)正逐漸的多元化,單一的數(shù)據(jù)庫已經(jīng)不能很好的滿足業(yè)務(wù)發(fā)展的需求,那么我們在統(tǒng)一化的支撐和個性化的支持下如何做權(quán)衡也是我們要考慮的問題。
- 研究人員眾多,數(shù)據(jù)安全、效率、規(guī)范的挑戰(zhàn)很大。
企業(yè)級架構(gòu)的基本訴求
結(jié)合以上問題,總結(jié)了企業(yè)及數(shù)據(jù)庫的一些基本訴求:
1)可擴(kuò)展性:可擴(kuò)展性與容量的擴(kuò)展并不完全相同,更多指的是架構(gòu)上的可擴(kuò)展以及彈性的需求。
2)穩(wěn)定可靠:系統(tǒng)的穩(wěn)定性和高可用。
3)高效:可分為兩層含義理解,首先企業(yè)級架構(gòu)數(shù)據(jù)庫之后,我們?nèi)绾胃咝У亍⒆詣拥厝ミ\(yùn)維數(shù)據(jù)庫;其次,研發(fā)的人員越來越多,如何利用自己的平臺去提升研發(fā)效率是我們需要考慮的問題。
4)安全:數(shù)據(jù)安全是企業(yè)的生命線,安全問題絕不能夠在出現(xiàn)問題之后再去考慮安全問題。
如何提升系統(tǒng)的擴(kuò)展性
提升系統(tǒng)擴(kuò)展性或者提升系統(tǒng)的容量有很多方法,比如可以去做Scale Up,也可以升級數(shù)據(jù)庫版本以及數(shù)據(jù)庫硬件的配置,但是這是有限的。所以要進(jìn)一步結(jié)合業(yè)務(wù)做一些垂直拆分,例如應(yīng)用做服務(wù)化,那么商品的應(yīng)用、交易的應(yīng)用或者庫存的應(yīng)用需要拆開來,其對應(yīng)的數(shù)據(jù)庫也需要拆開來,這樣做垂直拆分以后,對于單個應(yīng)用來說我們需要做更進(jìn)一步的擴(kuò)展性,慢慢我們發(fā)現(xiàn)會遇到瓶頸,尤其是在寫上面的擴(kuò)展性。這時就需要做Scale Out,也就是說水平拆分線性的擴(kuò)展。需要注意的是水平拆分的線性擴(kuò)展不是一次性的,對系統(tǒng)進(jìn)行擴(kuò)展以后需要對彈性的縮容。
Scale Out解決方案
- 利用DRDS進(jìn)行水平拆分,線性擴(kuò)展:
- 彈性的擴(kuò)容能力
- 超高性能,滿足業(yè)務(wù)極致需求
Scale Out解決方案現(xiàn)在最成熟的技術(shù)就是分庫分表的解決方案,當(dāng)一張物理庫或一張物理表已支撐不了業(yè)務(wù)寫入的時候,我們就對它按照不同的維度去做水平的分庫分表拆分。DRDS所做的事情就是在分庫分表表的基礎(chǔ)上,把它揉合成邏輯庫和邏輯表的概念,其優(yōu)勢在于進(jìn)行分庫分表后,對于用戶來說看到是還是一張邏輯庫或邏輯表。
彈性擴(kuò)展解決方案
- 利用云上計算資源,輕松應(yīng)對業(yè)務(wù)高峰
- 按需使用云資源,高峰結(jié)束后快速釋放
- 一站式服務(wù),簡單易用
SDM混合數(shù)據(jù)管控所做的事情就是實現(xiàn)一鍵的數(shù)據(jù)庫彈到云上去,之后做一個云上與云下混合的數(shù)據(jù)庫,通過統(tǒng)一的管控平臺,對云上的和云下的數(shù)據(jù)庫進(jìn)行統(tǒng)一的管理。
如何保證系統(tǒng)的穩(wěn)定可靠
- 提供多種數(shù)據(jù)庫容災(zāi)方案:考量:RPO,RTO,成本,擴(kuò)展性。
- 覆蓋數(shù)據(jù)庫容災(zāi)的各種需求:容災(zāi)建設(shè),監(jiān)控,容災(zāi)演練,容災(zāi)切換,數(shù)據(jù)校驗及修復(fù)。
- 構(gòu)建數(shù)據(jù)庫異地容災(zāi)的完整體系
多層級高可用方案:
1)備份上傳:采用單點寫入方式,RPO為最后一次成功上傳的備份的時間點到崩潰時間,RTO為小時級甚至天級,通過常規(guī)的數(shù)據(jù)庫備份,將備份集上傳至云端OSS存儲。
2)DBS備份上云:采用單點寫入方式,RPO為秒級,RTO為小時級,通過捕獲數(shù)據(jù)庫變化日志持續(xù)將數(shù)據(jù)庫增量備份到云端,保有數(shù)據(jù)庫最新的數(shù)據(jù)。
3)單向?qū)崟r同步:采用單店寫入方式,RPO為小于1秒,RTO為秒級到分鐘級,其特點在于持續(xù)增量同步數(shù)據(jù)變化到容災(zāi)端數(shù)據(jù)庫,容災(zāi)端數(shù)據(jù)庫為讀寫打開狀態(tài),但邏輯上不接受應(yīng)用寫入。
4)異地多活:采用多點寫入方式,RPO為小于1秒,RTO僅應(yīng)用流量切換時間,多活架構(gòu),數(shù)據(jù)多點寫入,數(shù)據(jù)變化雙向復(fù)制。需要做多點間數(shù)據(jù)寫入的隔離,防止記錄在多點被更新。
對于現(xiàn)在阿里的數(shù)據(jù)庫架構(gòu)來說四種方案均能夠支持,并且主要采用異地多活的方案。對于前面所提到的應(yīng)用做了服務(wù)化這個問題,一些數(shù)據(jù)是需要依賴其他數(shù)據(jù)的,這時候如何實現(xiàn)數(shù)據(jù)之間的相互實時流轉(zhuǎn),且滿足業(yè)務(wù)需求的,這時候就需要數(shù)據(jù)同步來實現(xiàn)。
讓數(shù)據(jù)成為架構(gòu)的動脈
針對數(shù)據(jù)自由流轉(zhuǎn)這個問題,列舉了幾個典型的實踐案例:
1)上云遷移:(同異構(gòu))數(shù)據(jù)在云上和云下自由流轉(zhuǎn)。
2)在離線:在線的數(shù)據(jù)庫同步到離線,進(jìn)行實時分析。
3)多活同步:單元之間的實時雙向同步,滿足異地容災(zāi)需求。
4)下游消費(fèi):通過訂閱實時增量消息,滿足搜索等下游業(yè)務(wù)。
5)實時大屏:在線數(shù)據(jù),流經(jīng)實時計算,大屏展示。
兼顧數(shù)據(jù)安全和效率
保證數(shù)據(jù)安全的前提下,怎樣保證效率是每個研發(fā)者所要考慮的問題,DBA已經(jīng)成為瓶頸。我們所做出的解決方案是通過DMS企業(yè)版平臺,此平臺主要解決兩個問題,第一個就是研發(fā)效率的問題,讓研發(fā)者對數(shù)據(jù)庫的操作不在成為瓶頸;第二個問題就是數(shù)據(jù)安全問題,我們會對權(quán)限進(jìn)行非常精細(xì)以及明確的管控,我們對權(quán)限定義的力度可以細(xì)化到某一個庫、某一個表或某一個列的程度。
接下來簡單介紹下DMS數(shù)據(jù)庫平臺,現(xiàn)如今數(shù)據(jù)庫類型眾多,但DMS平臺支持多種數(shù)據(jù)庫類型,在數(shù)據(jù)庫控制層之上有一個安全控制層,也就是前面所提到的數(shù)據(jù)安全。若沒有數(shù)據(jù)安全,我們會遭受很多風(fēng)險與挑戰(zhàn)。此外還有核心功能層,面向研發(fā)時對數(shù)據(jù)庫的操作全部通過自助的方式來實現(xiàn),用戶則更多的是面向研發(fā)同學(xué)、運(yùn)營以及后臺同學(xué)來看的。
在解決數(shù)據(jù)安全和效率的問題之后,我們還面臨著另一個問題,即業(yè)務(wù)個性化的權(quán)衡問題,對于數(shù)據(jù)庫的管理人員來說,更希望一個數(shù)據(jù)庫能夠支撐所有的業(yè)務(wù),在統(tǒng)一化、規(guī)模化運(yùn)維的時候是最方便的。但實際上業(yè)務(wù)需求是很多元化的,這時一種數(shù)據(jù)庫就很可能無法包含整個業(yè)務(wù)。例如淘寶上有上千個應(yīng)用,有些文檔型的應(yīng)用結(jié)構(gòu)定義常常會發(fā)生變化,又比如有一些IOT的用戶,在IOT場景下很多時候是偏向時序的分析,時序數(shù)據(jù)分析的時候或日記類的數(shù)據(jù)分析的時候我們把這些數(shù)據(jù)放到哪里呢?為了解決這些問題我們提供了多種數(shù)據(jù)庫引擎,如下圖顯示。
雖然提供了很多數(shù)據(jù)庫類引擎,但是在統(tǒng)一運(yùn)維上面也并沒有做太多的妥協(xié),數(shù)據(jù)庫引擎眾多,但數(shù)據(jù)庫中臺是能夠很好的包容這些產(chǎn)品的。
產(chǎn)品總結(jié)
為了滿足企業(yè)架構(gòu)的需求,我們采用分布式數(shù)據(jù)庫Scale Out實現(xiàn)彈性擴(kuò)展,此外還有多樣化存儲引擎滿足業(yè)務(wù)需求,讓每個數(shù)據(jù)庫都能發(fā)揮它最大的作用;同時通過數(shù)據(jù)流轉(zhuǎn),打通任督二脈;以及多層級的容災(zāi)保證系統(tǒng)高可用性,提出了高效的數(shù)據(jù)庫DevOps和數(shù)據(jù)安全方案。
本文由云棲志愿小組毛鶴整理編輯
總結(jié)
以上是生活随笔為你收集整理的共同探索企业级数据库架构之道路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以太坊Dapp项目-网页钱包开发手册
- 下一篇: MYSQL 5.7 解压版 window