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