郭志斌 張云勇
中國聯(lián)通研究院 北京 100032
DBaaS(Data Base as a Service,數(shù)據(jù)庫即服務)是以傳統(tǒng)數(shù)據(jù)庫技術為基礎將數(shù)據(jù)庫資源以標準服務的形式提供給一個或多個租戶的服務能力[1]。典型的DBaaS架構須支持如下必要功能:面向租戶的、按需彈性配置的、用戶自服務的數(shù)據(jù)庫實例配置與管理功能;具備可選的、穩(wěn)定的SLA服務標準和運行監(jiān)控維護能力;具備精細化、細粒度的資源使用量計量與計費能力。除上述必備能力外,一個完善的DBaaS架構還應具有較為完備的安全機制、自動資源管理和綜合性能規(guī)劃等功能,并且能夠適配各種不同的接入設備。當然,DBaaS所具備的很多特性也是傳統(tǒng)數(shù)據(jù)庫服務架構自身已具備的,所以DBaaS是對數(shù)據(jù)庫功能的封裝和創(chuàng)新,DBaaS不能脫離傳統(tǒng)數(shù)據(jù)庫技術而獨立存在[2-3]。
DBaaS為IT規(guī)劃和實施部門提供了一個優(yōu)化傳統(tǒng)數(shù)據(jù)庫架構的機會。首先,在傳統(tǒng)的IT項目中,每一個平臺或者系統(tǒng)的數(shù)據(jù)庫配置都是按照滿足峰值需求設計的,在日常運行中,大量的資源處于閑置狀態(tài),不僅如此,高規(guī)格的數(shù)據(jù)庫資源配置還將消耗不必要的運維和電力資源,造成嚴重浪費。其次,大多數(shù)IT平臺的數(shù)據(jù)庫部署和配置工作都是類似的,這些類似的工作在每一個IT項目中被不斷重復,費時費力。
DBaaS架構本身就是為了靈活性和資源池化設計的,可提供生產(chǎn)/非生產(chǎn)數(shù)據(jù)庫服務,支持隨需求變化提高或縮減日均工作量需求,可通過簡單的界面完成大部分數(shù)據(jù)庫部署和配置工作,從而大幅度降低建設和維護成本。
對租戶而言,DBaaS的自助配置和管理使得租戶能夠更快速、容易地部署新的應用。不僅如此,DBaaS提供的資源使用量計量,改變了租戶過去在IT項目建設前,根據(jù)預估資源需求購買基礎設施的建設方式,可以使用戶根據(jù)實際需求彈性使用資源[4]。
對平臺提供者而言,統(tǒng)一的數(shù)據(jù)庫提供方式,使得平臺提供者統(tǒng)一考慮安全性、可靠性、可用性、可管理性和恢復,以及如何滿足業(yè)務的性能、可用性、安全性等要求,定制可復制、可重用的數(shù)據(jù)庫服務體系,統(tǒng)一完成升級維護,有利于加強各方面的管控,提升服務水平。
沃云平臺數(shù)據(jù)庫即服務是基于開源數(shù)據(jù)庫軟件MySQL開發(fā)的統(tǒng)一的數(shù)據(jù)庫訪問服務平臺,它通過屏蔽底層的異構數(shù)據(jù)庫,為上層應用提供簡單、一致的數(shù)據(jù)庫訪問接口,將應用與數(shù)據(jù)庫服務解耦,降低復雜度,增強了系統(tǒng)的靈活性和健壯性,亦為增強數(shù)據(jù)訪問控制能力提供了新途徑。與此同時,服務以多租戶的方式,并采用池化的方式實現(xiàn)用戶與其使用資源、用戶與資源使用情況的隔離,從而使得用戶能夠更加關注其核心業(yè)務。沃云平臺數(shù)據(jù)庫即服務的體系架構設計如圖1所示。
由圖1可見,沃云平臺的數(shù)據(jù)庫即服務功能主要由以下組件協(xié)同實現(xiàn)。1)監(jiān)控管理中間件DBSManager節(jié)點監(jiān)控管理代理Agent。2)統(tǒng)一數(shù)據(jù)庫訪問層DBProxy。3)監(jiān)控管理平臺交互訪問層Portal。其中最重要的組件分別是提供數(shù)據(jù)和元數(shù)據(jù)接口的統(tǒng)一數(shù)據(jù)庫訪問層DBProxy以及負責管理監(jiān)控和協(xié)調(diào)各個組件工作的DBSManager。前者提供數(shù)據(jù)訪問能力以及數(shù)據(jù)訪問接口,同時隱藏所有的服務細節(jié);后者監(jiān)控管理并根據(jù)預先配置的策略,負責仲裁所有組件的工作狀態(tài)并在必要的時候上報給平臺管理員。Agent負責在主機上上報心跳信息以及接收DBSManager的指令并執(zhí)行。Portal提供友好的人機交互界面,幫助平臺管理員更好地開展運維工作,并獲得更多的運行信息。
本文后續(xù)部分將重點討論DBSManager和DBProxy的設計。
監(jiān)控管理中間件DBSManager負責對數(shù)據(jù)庫即服務所有資源的抽象及資源池化管理,其管理的資源包括但不限于服務器、網(wǎng)絡、存儲、虛擬機資源等。主要在數(shù)據(jù)庫即服務中提供數(shù)據(jù)訪問與數(shù)據(jù)庫服務的媒介隔離,依照標準約定的平臺監(jiān)控規(guī)范、平臺管理規(guī)范對資源進行抽象封裝與對接。實現(xiàn)對資源使用的計量、統(tǒng)計等功能,以及對資源使用的調(diào)度和服務中各個組件的綜合管控等。同時,借助沙箱機制實現(xiàn)多租戶所使用資源的有效隔離。
DBSManager通過與各個主機節(jié)點上的Agent通信,實現(xiàn)集群的實時監(jiān)控與管理,并對采集到的信息進行集中管理,而分布式的設計可以對整個集群進行邏輯群組的劃分和管理,保證整個系統(tǒng)具有良好的水平擴展性。DBSManager與Agent之間的交互關系如圖2所示。
圖1 沃云平臺數(shù)據(jù)庫即服務總體設計圖
圖2 DBManager與Agent交互示意圖
節(jié)點監(jiān)控管理代理Agent負責對節(jié)點的監(jiān)控和管理,具體功能包括以下兩點。1)節(jié)點監(jiān)控功能。負責在DBSManager配置的時間間隔內(nèi)采集節(jié)點上的服務運行時狀態(tài)信息、系統(tǒng)運行時信息,并通過接口上報給DBSManager。2)節(jié)點管理功能。負責偵聽DBSManager推送過來的管理指令,驗證身份后進行執(zhí)行,并按接口規(guī)范返回執(zhí)行結果。
DBProxy組件提供數(shù)據(jù)庫即服務的數(shù)據(jù)、元數(shù)據(jù)統(tǒng)一訪問接口,如圖3所示。其通過接口封裝形式隱藏了數(shù)據(jù)庫的細節(jié)特性,僅通過接口形式提供多樣的數(shù)據(jù)訪問方式,如REST風格的WebService接口、JPA或JDBC的封裝接口。同時,還提供多種數(shù)據(jù)結果集形式,如JSON、XML或者Protocol Buffer等。所有使用數(shù)據(jù)的方式都統(tǒng)一到一致的、受管控的界面上,使得無法直接計算的查詢資源消耗,變得可計量及可統(tǒng)計。同時,通過應用程序無關的使用方式,實現(xiàn)平臺統(tǒng)一的安全審計、監(jiān)控管理、路由配置以及讀寫分離等高級特性的支持。
圖3 DBProxy組件內(nèi)部模塊概要設計圖
監(jiān)控管理平臺交互訪問層Portal主要為用戶、平臺管理員以及數(shù)據(jù)庫管理員之間的交互提供良好UI體驗,其主要功能如下。
1) 用戶服務功能。申請開通數(shù)據(jù)庫服務、申請擴展數(shù)據(jù)庫服務、查看數(shù)據(jù)庫服務狀態(tài)、業(yè)務應用使用數(shù)據(jù)庫服務、用戶暫停/恢復/注銷數(shù)據(jù)庫服務、數(shù)據(jù)庫服務報警、數(shù)據(jù)建模和映射。
2) 平臺管理員功能。MySQL服務的監(jiān)控報警、平臺服務的監(jiān)控報警、安裝DBProxy、DBProxy監(jiān)控報警、DBProxy日志管理、DBProxy啟動/停止。
3) 數(shù)據(jù)庫管理員功能。申請數(shù)據(jù)庫服務、擴展數(shù)據(jù)庫服務、暫停數(shù)據(jù)庫服務、恢復數(shù)據(jù)庫服務、注銷數(shù)據(jù)庫服務、數(shù)據(jù)庫基本管理、數(shù)據(jù)導入、數(shù)據(jù)導出、數(shù)據(jù)同步、數(shù)據(jù)備份、數(shù)據(jù)恢復,數(shù)據(jù)庫設計建模。
業(yè)界其他平臺的數(shù)據(jù)庫即服務能力多為提供數(shù)據(jù)庫單實例,單次提供一個數(shù)據(jù)庫實例,如果需要高可用或讀寫分離等擴展架構需用戶自己手動創(chuàng)建和人工運維,水平擴展困難。而沃云平臺的數(shù)據(jù)庫即服務通過支持高可用、讀寫分離、負載均衡等擴展能力解決了上述問題。沃云平臺數(shù)據(jù)庫即服務采用了數(shù)據(jù)庫統(tǒng)一訪問層技術,該技術降低了應用和數(shù)據(jù)庫之間的耦合性,基于該技術可以實現(xiàn)對業(yè)務透明的后臺數(shù)據(jù)庫架構的擴展性,在平臺中數(shù)據(jù)庫服務的高可用性以及讀寫分離均由數(shù)據(jù)庫即服務能力提供,而無需應用關注。
沃云平臺數(shù)據(jù)庫即服務模塊能夠將數(shù)據(jù)庫能力以服務的形式提供給一個或多個服務消費者,實現(xiàn)的核心關鍵能力包括:1)多租戶共享能力;2)數(shù)據(jù)庫實例的按需提供與動態(tài)調(diào)度管理能力;3)數(shù)據(jù)庫服務的QoS/SLA指標自動監(jiān)控與管理能力。
數(shù)據(jù)庫即服務的多租戶共享可以在兩個層面上實現(xiàn):數(shù)據(jù)庫層與租戶層。數(shù)據(jù)庫層共享以數(shù)據(jù)庫為基本的劃分單元,即通過為每一個租戶創(chuàng)建/分配不同的數(shù)據(jù)庫實例,實現(xiàn)存儲與服務器資源的共享復用。租戶層共享以用戶為基本的劃分單元,即數(shù)據(jù)庫實例已經(jīng)創(chuàng)建,在此基礎上為每一個租戶創(chuàng)建多個用戶,多租戶之間共享存儲、服務器、操作系統(tǒng)服務,多用戶之間共享數(shù)據(jù)庫實例。
DBaaS建立數(shù)據(jù)庫即服務的資源池,管理數(shù)據(jù)庫服務器資源池與存儲資源池。資源池管理可以通過業(yè)務策略動態(tài)管理數(shù)據(jù)庫服務資源;可以通過制定最大資源、最小資源、重要程度策略等動態(tài)管理服務可用性和服務質(zhì)量;資源池管理可以統(tǒng)一管理大規(guī)模、多主機的復雜數(shù)據(jù)庫環(huán)境,可以實現(xiàn)“大分小”(一臺物理服務器部署多數(shù)據(jù)庫實例)和“小合大”(多臺物理服務器上部署一個數(shù)據(jù)庫實例)的兩種資源管理需求。
DBaaS建立資源計劃管理功能,可以根據(jù)不同數(shù)據(jù)庫應用的資源消耗的峰值波谷曲線特征定義其資源計劃,資源計劃管理可以定義不同的數(shù)據(jù)庫應用在相同和不同的時段所占用的最大資源、最小資源以及資源分配的重要程度優(yōu)先級別。資源計劃管理可以對不同數(shù)據(jù)庫應用所能夠使用的計算資源(CPU)和IO資源(IOPS)進行定義,可以定義數(shù)據(jù)庫應用能夠占用的最多的和最小CPU核數(shù),可以定義數(shù)據(jù)庫應用能夠占用的IO資源的百分比,并且可以根據(jù)計劃在不同的時段進行動態(tài)調(diào)整,削峰填谷,提升資源整體利用效率。
例如,當數(shù)據(jù)庫服務的負載較高時,DBaaS會觸發(fā)告警通知管理員,管理員可以對數(shù)據(jù)庫系統(tǒng)進行一鍵擴容,如將原有架構為1主2從動態(tài)擴展到1主3從或者4從。后臺的數(shù)據(jù)庫架構擴容操作,如尋找合適的物理資源、數(shù)據(jù)庫安裝配置、數(shù)據(jù)從備份中復制、數(shù)據(jù)同步或者數(shù)據(jù)庫架構的縮減操作,均為DBaaS自動化完成。并且數(shù)據(jù)庫統(tǒng)一訪問層技術可以保障擴容過程完全不影響現(xiàn)有應用的數(shù)據(jù)庫連接。
根據(jù)實際測試,通過動態(tài)管理和擴容,MySQL架構讀性能可以超過10萬QPS,在眾多場景內(nèi)可達到甚至超過Oracle的性能標準。
DBaaS可實現(xiàn)對多租戶環(huán)境下的動態(tài)服務質(zhì)量監(jiān)控與管理??梢詫?shù)據(jù)庫應用設置服務質(zhì)量監(jiān)控指標(CPU利用率、內(nèi)存利用率等),當應用監(jiān)測指標超過預先設置的閾值時,可以通過動態(tài)地調(diào)配資源或將新的服務請求調(diào)配到其他服務節(jié)點提供服務的方式,來保護數(shù)據(jù)庫服務質(zhì)量在安全閾值范圍內(nèi),從而保證數(shù)據(jù)庫服務安全穩(wěn)定地提供。通過服務質(zhì)量管理保護數(shù)據(jù)庫服務資源,實現(xiàn)問題隔離,防止出現(xiàn)多米諾骨牌效應導致系統(tǒng)大面積癱瘓。
DBaaS可以為數(shù)據(jù)庫服務設定端到端(計算資源到存儲資源)的資源計劃和服務質(zhì)量要求,并能夠在服務水平達不到預先設置的要求時通過動態(tài)調(diào)配資源保證服務水平的合規(guī)。
DBaaS具備數(shù)據(jù)安全管理機制,實現(xiàn)在共享環(huán)境下數(shù)據(jù)訪問的隔離,防止超權限的數(shù)據(jù)訪問,可以通過多因素訪問控制策略來限制約束數(shù)據(jù)庫安全合規(guī)訪問,可以進行自動化活動監(jiān)視,提供安全審計報告。
需要指出的是,雖然數(shù)據(jù)庫即服務具備很多傳統(tǒng)數(shù)據(jù)庫所沒有的優(yōu)點,但也并非適用于所有的業(yè)務場景,如對實時性要求很高的OLTP系統(tǒng)就未必適用,DBaaS服務訪問可能帶來較大的網(wǎng)絡延遲[5],因此,企業(yè)在部署DBaaS之前應該認真審視自己的IT戰(zhàn)略,仔細分析自身IT運營的模式,實事求是地評價自身的IT建設水平以及對合作伙伴的控制力。不同的IT戰(zhàn)略會影響企業(yè)對DBaaS技術路線的選擇,目前,很多商業(yè)數(shù)據(jù)庫軟件都不同程度地支持DBaaS功能,開源數(shù)據(jù)庫的DBaaS功能則需要進行二次開發(fā)與資源服務化封裝,因此,建立在不同類型數(shù)據(jù)庫之上的DBaaS的服務能力有較大差異,這些技術路線的選擇都與企業(yè)的IT戰(zhàn)略密切相關;同時,企業(yè)的IT運營方式也對DBaaS用戶自服務的功能需求和權限設計有較大影響,這些因素都須在實施DBaaS之前認真評估;同時,引入DBaaS后也可能導致大量數(shù)據(jù)移植和應用遷移等問題,這些都與企業(yè)自身的IT建設水平和對合作伙伴的控制力深度相關,對DBaaS實施的成敗具有顯著影響。綜上,部署DBaaS之前需要綜合考量多種制約條件,并結合企業(yè)自身的實際情況與IT發(fā)展戰(zhàn)略做出最優(yōu)選擇。
參考文獻
[1]Oracle Corporation World Headquarters.An Oracle White Paper on Enterprise Architecture-Database as a Service Reference Architecture[EB/OL].[2013-12-10].http://www.oracle.com/technetwork/topics/entarch/oes-refarchdbaas-508111.pdf
[2]Curino Carlo, Jones Evan, Popa Raluca Ada, et al.Relational Cloud: A Database Service for the Cloud[C]//Proceedings of the 5th Biennial Conference on Innovative Data Systems Research(CIDR '11).Asilomar,CA, USA. 2011:235-240
[3]Butt Ali R.Summary of Current Cloud Computing Research Activities[EB/OL].[2013-12-10].http://nsfcloud2011.cs.ucsb.edu/papers/Butt_Paper.pdf
[4]Gens Frank.IT Cloud Services Forecast–2008,2012: A Key Driver of New Growth[EB/OL].[2013-12-10].http://blogs.idc.com/ie/?p=224
[5]Jackson K R,Ramakrishnan L,Muriki K,et al.Performance Analysis of High Performance Computing Applications on the Amazon Web Services Cloud[C]//Proceedings of 2010 IEEE Second International Conference on Cloud Computing Technology and Science(CloudCom'10).Pisc ataway,NJ,USA:IEEE,2010:159-168