閱讀147 返回首頁    go 微信


DRDS產品概要__產品簡介_分布式關係型數據庫 DRDS-阿裏雲

業務麵臨的問題

單機數據庫到達瓶頸

單機數據庫在數據存儲容量、訪問容量、容災等方麵都會隨著業務的增長而到達瓶頸,無論哪一個,對業務來說是一項相當艱巨的挑戰。

存儲容量瓶頸問題,雖然可以通過在一個機器下麵掛很多塊磁盤,做到10T,20T,30T容量,然後使用一個MySQL實例支撐,但是數據備份、數據管理(DDL)、數據檢索與更新性能(DML)都會出現大幅下滑,讓我們不得不重新考慮容量問題的解決方案。

訪問容量瓶頸問題,通過增加CPU/內存/磁盤/網絡等硬件緩解,但是廉價X86 PC 做到幾十核目前就是頂配了,內存幾百G也塞不下幾十T數據的各種索引,磁盤IO畢竟比內存還是差點,通用網路也就到萬兆,本質上無法避免單機瓶頸

容災問題,單機總存在著0或者1的問題,所以做熱備冷備,以求出故障時能夠快速切換,但是數據庫並不是應用,數據庫數據存在狀態,存在事務,真正宕機切換對於核心業務來說真的是一個艱難決定。

更要命的是,也許我們能夠買到頂級容量的磁盤整列,上百核幾T內存的機器,做機房、同城、異地熱備冷備,但是由於數據庫軟件並不能充分利用硬件資源而功虧一簣,這也就是所謂的有錢也買不到符合需求的解決方案。

傳統數據庫成本高企

傳統的數據庫方案基於授權、基於服務谘詢,帶來相對安全、封閉的解決方案,但是因為缺少嚴格的價格對標、此種模式下存在的實施成本、銷售渠道的層層盤剝,讓業務付出相當高昂的代價。

所以業務每年付出幾十萬上百萬數據庫預算來支撐業務的時候,也許會思考是否有更加廉價的替代方案,省錢也好,用刀刃上也罷,仔細捋一下,產品方案挺多,但是要麼貴,要麼滿足不了需求。

NOSQL/開源方案的艱難選擇

上訴的種種原因,讓業務將目標對準了NOSQL、對準了開源,確實這些產品當中有些產品非常優秀,能夠解決數據庫瓶頸,並且免費或者付出很少的費用,但是同時也帶來了陣痛甚至是致命的隱患,這些隱患歸結起來以下幾個問題。

  1. 1.需要做適用於企業的管控等周邊係統。
  2. 2.需要fix產品的bug和開發滿足業務需求的功能。
  3. 3.需要在穩定性、性能問題做出保障。

最終,業務可能需要一整個團隊來完全理解並開發維護這個開源產品。這個時候也給業務帶來了3個問題。

  1. 1.是否下定決心開發維護這些產品?
  2. 2.能否做好上麵3件事情?
  3. 3.業務發展重心是在做上麵3件事情上?

數據庫服務保障充滿坎坷

數據庫是同時涉及到硬件、係統、應用邏輯等多方麵的計算機技術解決方案,所涉及到的技術深度和廣度在計算機軟件領域是數一數二的。

數據庫服務包含資源管控和生命周期管理、分布式邏輯、高可用部署和切換、容災備份、自助運維、疑難排查等,所涉及到的工作細節很多,更大問題是必須通過時間和豐富場景進行磨礪與積累。

DRDS解決問題的方法

使用分庫分表解決容量問題

解決數據庫容量問題的產品總體來說都是基於share nothing或者share anything架構,前者如同DRDS,使用多個廉價PC做數據水平拆分,服務和數據存儲節點之間並不完全同步狀態,後者使用共享內存、共享存儲、infinibind、高配物理機結合出一個全功能數據庫。

share anything架構能夠滿足大部分用戶的數據庫容量需求,但是本質上如同小型機+數據庫仍然會碰到容量天花板,並且相當昂貴。

share nothing架構能夠做到數據和訪問容量通過簡單堆疊機器進行擴展。DRDS通過SQL引擎和自助管控係統盡可能降低用戶對分布式細節的感知。

最低成本解決用戶數據庫查詢問題

DRDS需要在分布式情況下處理MySQL所有的SQL,並且保持SQL語義一致,這項工作是非常細節且具有挑戰的。另外在分布式情況下,單個SQL可能涉及到多個數據存儲節點的數據處理以及歸並,這中間耗費在網絡間數據傳輸以及數據合並的時間可能會超過同樣一份數據在單機上的表現。

綜合上訴兩點,DRDS的數據水平拆分對用戶使用有一定的限製,所以DRDS還提供了更低業務侵入性的讀寫分離功能。

讀寫分離功能能夠線性增加數據庫讀能力,業務創建讀寫分離的DRDS數據庫後,換一個連接即可使用,無需修改代碼,無需遷移數據,非常適合在短時間內大幅提升數據庫讀性能的需求。

使用雲計算降低成本

雲計算的精華在於計算存儲服務資源隨開隨用,並且可動態擴展,快速實施,這也就意味著成本預算周期減短,並且隨著規模變大,資源和管控成本會逐步降低,總體上對業務收取的費用也會逐步降低。

DRDS產品本身使用阿裏雲雲計算資源,成本也會受益於此,並且自動繼承快速能力擴展、穩定性監控、資源隔離、災備恢複、服務保障體係等特性。

DRDS產品按量計費模式、自助運維監控、動態升降配也秉承雲計算核心理念,為業務帶來快速、可保障的價值。

專業的工具和團隊解決問題

DRDS產品在阿裏巴巴集團內部的對應產品是TDDL,作為集團分布式數據庫接入的標準,接入了幾乎所有使用數據庫的業務,磨礪了一支具備豐富分布式數據庫問題解決能力的團隊。其周邊工具和具體業務解決方案,也在集團內部有著廣泛使用和充分驗證。

DRDS在阿裏雲公測在2014年12月,商業化也將近半年時間,積累了大量內部和外部用戶使用支持經驗,產品功能豐富度、穩定性、性能都有本質的提升,具備核心應用支撐能力。

DRDS作為分布式數據庫服務層,還提供用戶業務使用支持,利用已有的經驗,幫助用戶設計對口其業務的分布式數據庫拆分策略,以便充分發揮分布式數據庫對於業務的價值,並且長期提供谘詢服務。

DRDS的架構

DRDS 目前定位成一個中間件,在業務應用和RDS之間,本身不承擔數據存儲,隻負責解決分布式情況下數據操作路由、執行、數據處理等功能。

DRDS特性

DRDS具備share nothing架構的分布式數據庫所具備的主要功能和feature。

簡單使用

DRDS的使用與MySQL非常接近,建實例、建庫、建表、SQL操作,唯一比較大的區別在於水平拆分模式下,DRDS對於建表需要指定拆分字段(類似索引),隻要帶上這個拆分字段,SQL隻會在部分數據分片上執行,從而加速SQL執行速度。

DRDS提供的讀寫分離功能能夠很方便在線調控讀在主實例和備實例的讀流量,並且可通過show node指令查看實際執行的讀流量分配。

DRDS提供各種實用命令幫助用戶更好地使用DRDS和排查問題,比如show slow查看慢SQL,show node查看數據存儲節點流量分配,show datasources查看數據存儲連接信息等等。

數據水平拆分

DRDS幫助您實現分庫分表,能夠將原來隻能在單節點執行的SQL,轉變為多節點執行的SQL,如同單個數據庫體驗。

但是分布式數據庫和單機數據庫本身必然會存在一定的使用習慣上的不同,例如低效的分布式事務、分布式join等,針對這些問題,DRDS的選擇是:優先考慮性能和穩定性,兼顧軟件的兼容性。

與市麵上的一些開源的數據庫切分工具相比,DRDS能夠更智能的分析您的SQL,在結果集合並和分布式join優化等關鍵領域,我們都有成熟解決方案,能夠幫您解決在分布式數據庫場景中麵臨的大部分問題。

平滑擴展

DRDS的擴展分為服務層擴展和存儲層擴展,服務層擴展通過DRDS控製台的升降配功能達到服務能力擴縮,存儲層擴展通過DRDS控製台的數據庫平滑擴容功能進行擴展。兩者都是在線進行擴展,不影響用戶使用。

MySQL兼容

DRDS有著比較完整的MySQL SQL兼容性,旨在降低用戶從傳統數據庫遷移到DRDS的難度。具體參見DRDS的SQL支持文檔.

事務支持

DRDS 對於單機事務完整支持,也就是業務中一個事務中的各個SQL最終都落到同一個數據庫即可保障強一致,對於跨數據庫的分布式事務,DRDS提供最終一致分布式事務給業務使用,目前處於內測階段。

全局唯一數字序列服務

在分布式環境下,原有的mysql sequence生成機製無法高效的生成全局唯一的sequence.我們借鑒了oracle的sequence生成樣例,實現了一個在mysql基礎上的高效sequence生成器,能做到沒有單點性能瓶頸,具備大並發獲取和低延遲特性。

DRDS sequence功能的目標隻是為了保證數據的全局唯一,雖然基本上是按時間序列獲取的,但並不全局有序。

DRDS應用場景

DRDS 具備如同上述內容所描述的問題解決能力和分布式場景下滿足業務需求的各種特性,典型的應用場景如下圖。

最後更新:2016-11-23 16:44:15

  上一篇:go 服務配置相關問題__產品常見問題_阿裏雲物聯網套件-阿裏雲
  下一篇:go DRDS簡單原理__產品簡介_分布式關係型數據庫 DRDS-阿裏雲