中國聯通研究院 北京 100032
數據庫即服務是一種基于云的結構化數據存儲方式,它依托于傳統的數據庫技術,在此基礎上將數據庫資源抽象成標準服務的形式提供給用戶。數據庫即服務具備可擴展、靈活適配和按需分配等特征,用戶可以通過界面簡單、快捷、自服務化地獲取數據庫資源,省去了復雜的數據庫配置工作。
典型的數據庫即服務架構需要支持如下功能。1)面向租戶的、按需彈性配置的、用戶自服務的數據庫實例配置與管理功能;2)具備可選的、穩定的SLA服務標準和運行監控維護能力;3)具備精細化、細粒度的資源使用量計量與計費能力。除上述必備能力外,一個完善的DBaaS架構還應具有較為完備的安全機制、自動資源管理和綜合性能規劃等功能,并且能夠適配各種不同的接入設備。DBaaS所具備的一些特性也是傳統數據庫服務架構自身已具備的,因此,不能脫離傳統數據庫技術而獨立存在,其側重點在于面向對數據庫功能的封裝和創新。
數據庫作為一種有效管理結構化數據的工具,得到廣泛應用。然而,應用數據庫需要大量的配置和復雜的維護工作,這些成為數據庫應用中的共性問題[1]。另外,在數據庫設計時往往遵循峰值性能模型,按照峰值容量來配置可用性,而忽略了通常數據庫的使用情況,導致客戶前期需要為數據庫資源投入巨額成本。
通過采用數據庫即服務即可較為輕松地解決以上問題,數據庫及服務的優勢就在于提供一個模板化、界面化、可彈性擴展的數據庫服務平臺。采用數據庫即服務方案可以降低客戶首次投入成本,滿足客戶多變的需求,不僅使一些小微企業擁有數據庫資源的所有權,而且可以縮短系統部署的周期,降低企業IT的門檻。
數據庫即服務在推廣過程中,也存在著一定問題,如:網絡資源保障、交付管理等。由于DBaaS是基于云的服務,對網絡依賴程度高,如果最終用戶、網絡提供商、數據庫服務提供商之間的任何一點網絡出現故障,都可能會導致數據庫即服務無法交付。另外,如果在用戶與數據庫服務提供商之間還有第三方系統集成商,也可能會使得服務交付的流程變得復雜和難以管理。
盡管數據庫即服務在推廣過程中還存在諸多不確定因素,但隨著中國寬帶計劃和云服務的高速發展,數據庫即服務會迎來它的快速增長期。
OpenStack是一個云管理平臺項目,旨在為公共云及私有云的建設與管理提供開源軟件實現。Openstack既是一個社區,又是一個軟件項目。它擁有著眾多支持者,其中包括超過180家企業和400多位開發人員。OpenStack擁有近55萬行代碼,這些代碼分別來自Openstack核心項目、孵化項目、支持項目等多種類型的內部項目。OpenStack包括以下五個相對獨立的核心組件[2]。
1)Nova:虛擬機計算控制器,用于對虛擬機實例的生命周期進行管理。
2)Glance:提供了一個虛擬磁盤鏡像的目錄和存儲倉庫,可提供對虛擬機鏡像的存儲和檢索。
3)Swift:提供的對象存儲服務,支持文件的存儲或檢索,類似于Amazon S3。
4)Keystone:為OpenStack上的所有服務提供身份驗證和授權。
5)Horizon:為OpenStack的所有服務提供一個基于Web的模塊化的UI界面。
除了上述核心組件意外,Openstack還包括如下非核心組件。
1)Ceilometer:為OpenStack的數據采集(監控數據、計費數據)的唯一基礎設施,將采集到的數據提供給監控、計費、面板等項目使用。
2)Heat:一套業務流程平臺,旨在幫助用戶更輕松地配置以OpenStack為基礎的云體系。利用Heat應用程序,開發人員能夠在程序中使用模板。
3)Trove[3]:目前還僅是一個Openstack的孵化項目。它是Openstack的數據庫即服務組件,完全運行在Openstack平臺上。Trove的設計目標是提供一個可伸縮、高可用的數據庫即服務能力,同時提供關系型和非關系型兩種數據庫引擎,以完善和擴展OpenStack開源框架的能力。借助Trove,云計算平臺的用戶可以快速有效地生成關系型數據庫實例,不僅省去復雜的數據庫配置和管理工作,而且可以通過Trove同時管理多個數據庫實例,從而能夠大大降低運維成本。
當前,Trove項目還在孵化階段,致力于實現高可用的資源隔離和數據庫實例管理工作,如數據庫實例的部署、配置、維護、備份、恢復和監測[4]。同時,Trove運行在Nova的實例中,生成單租戶的數據庫實例。Trove與Openstack組件通過API實現交互,所以Trove不依賴于Nova的配置,Trove的目標功能架構圖[5]如圖1所示。

圖1 Trove的目標功能架構圖
Trove采用Share Nothing的消息架構[5],它的所有組件之間的消息通信都通過消息總線來完成,因此,Trove組件可以運行在不同的服務器上。這一點和Nova非常相似。消息總線接受來自用戶的Http請求,將請求轉換并轉發給相應組件后,請求將被異步執行。Trove的主要組件包括API Server、Message Bus、Task Manager、Guest Agent、Conductor等,其主要功能與相互關系概述如下。
1)API Server:API負責與Guest Agent和Task Manager這兩個組件進行通信,以指揮和控制Guest Agent和數據庫實例。API北向提供Http Web服務接口,以處理認證、鑒權和數據庫基本的控制功能。API與Task Manager組件的通信,均采用異步的方式執行復雜的任務。而API與Guest Agent的通信,均采用同步的方式執行簡單的任務,如檢索MySQL用戶列表。API本身不處理復雜的任務,它的工作是接受、驗證、轉換請求,并將請求轉發給Task Manager或Guest Agent。
2)Message Bus:云平臺與Trove之間的雙向交互(Http請求)均通過多API節點實現,而API與Guest Agent和Task Manager之間的消息隊列的調度和管理任務由Message Bus承擔。
3)Task Manager:負責對數據庫實例進行生命周期管理,如創建數據庫實例等。另外,負責對數據庫的性能等進行管理。由于同時管理多個數據庫實例,Task Manager采用流式的處理過程。
4)Guest Agent:執行具體的數據庫運行維護管理任務,對數據庫本身進行操作。每一個數據庫實例都擁有一個自己的Guset Agent,并且數據庫類型不同,Guset Agent也不同。
5)Conductor:負責從Guest Agents收集狀態信息,然后將其更新到Trove的后端數據庫。有了Conductor,guest agents不需要直接與后端數據庫相連,Conductor通過消息總線監聽RPC消息,并執行相關操作。
OpenStack目前的最新發布版為Icehouse版,簡稱I版,在這一版本中,用戶可以通過Trove創建一個數據庫服務實例。在這個實例里,用戶可以同時創建和管理多個數據庫。需要指出的是,OpenStack I版的Trove組件僅支持對MySQL數據庫的創建和管理。
本文后續將基于Openstack I版本中Trove組件,對Trove與中國聯通自主研發沃云平臺的數據庫即服務展開對比分析。
沃云是中國聯通自主研發的云服務運營管理平臺。聯通的沃云平臺聚焦于云基礎能力、云引擎能力和云應用三個層面。云基礎能力涵蓋計算、存儲、網絡等IaaS層基礎資源能力服務;云引擎能力涵蓋數據庫即服務、存儲即服務、中間件即服務等PaaS層服務;云應用涵蓋創新業務應用在線開發、測試、部署、監控等全生命周期服務,以及安全防護、監控計量、用戶管理、資源管理等業務支撐服務。它一方面滿足新技術試驗和測試的需求,另一方面為創新業務孵化和其他業務系統提供云計算服務。
沃云的核心在于兩大資源引擎。1)PaaS資源引擎:建設和管理ESB、中間件、數據庫等平臺級資源,并結合沃云平臺的開發框架和測試框架將應用的開發、測試、驗證、生產不同環節發揮支撐和管理作用,實現對應用開發、測試、部署、運行的全生命周期支持。2)IaaS資源引擎:以IT資源為中心實現各類基礎設施資源的池化管理,并提供統一的運維管理和能力提供接口。實現對基礎設施資源的統一管理和調度,為沃云業務及其上承載的各種創新業務提供基礎資源能力支撐。
沃云的數據庫即服務組件作為PaaS資源引擎的一個關鍵組成部分,提供面向多租戶的統一數據庫訪問服務,屏蔽底層的異構數據庫架構,為上層應用提供簡單方便的數據庫訪問接口,將應用和數據庫隔離開來,降低耦合性,增強系統的靈活性和健壯性,增強數據訪問控制能力。沃云的數據庫即服務組件使大數據實現標準化的全局存儲、共享、處理及多樣化服務態的訪問。其功能架構及集成關系圖如圖2所示。
沃云的數據庫即服務組件包括三個部分。
1)數據訪問組件:提供數據庫、數據的統一訪問,管理和維護路由信息,維護數據對象和數據庫對象的映射關系。對上層應用隱藏了數據庫架構和數據分布的細節。包括以下主要模塊。

圖2 沃云數據庫即服務功能架構及集成關系圖
①數據訪問模塊:通過接口封裝形式,隱藏了數據庫的細節特性,僅通過接口形式提供統一的數據訪問接口,包括數據接口、數據對象訪問接口和元數據訪問接口,如REST風格的Web Service接口、JPA、JDBC的封裝接口。同時,還提供多種數據結果集形式,如JSON、XML或者Protocol Buffer等。
②監控管理模塊:負責監控數據訪問組件性能參數和SQL查詢性能。可以設置監控的心跳間隔時間和需要監控的參數(CPU使用率、連接數量、吞吐率)。
③路由模塊:負責管理維護路由信息,維護數據對象和數據庫表對象的映射關系,支持訪問分發功能,正確定位數據庫實例。
④解析模塊:負責數據庫訪問協議、數據訪問協議、元數據訪問協議的解析,SQL語句的解析和轉譯。
⑤負載均衡模塊:通過對不同數據庫服務的負載監控,及時發現性能瓶頸,并保持對應用透明的數據訪問和數據庫水平擴展服務能力。
⑥讀寫分離模塊:支持應用透明的自動讀寫分離操作,在不經任何應用代碼修改或應用配置的情況下,直接支持應用的讀寫分離操作。
2)數據管理組件:監控、管理和協調數據庫即服務內部資源和組件(包含數據訪問組件和數據庫群集)的工作,提供沃云平臺通用管理接口的實現,包括以下主要模塊。
①數據管理組件接口模塊:按照沃云管理平臺約定的平臺監控規范、平臺管理規范進行Web服務封裝。
②服務注冊模塊:負責數據庫即服務的組件和服務在沃云平臺的企業服務總線(ESB)組件中進行注冊。
③訪問組件集群監控管理模塊:監控和管理數據庫即服務中的訪問組件集群和仲裁訪問組件的工作狀態。基于對組件集群的分布式設計,可以對整個組件集群進行邏輯群組的劃分和管理,保證了水平可擴展性。
④數據庫集群監控管理模塊:負責數據庫集群及其之間關系的監控和管理。
3)管理平臺界面:提供數據庫即服務的人機交互界面和運維管理平臺,用于數據庫服務的生命周期管理和運維工作。
沃云平臺歷經6年迭代演進,目前已具備多租戶支持、數據庫資源池化、數據庫能力多層次彈性擴展等功能特性。
從數據庫實例的管理角度對比,Openstack I版中的Trove組件與當前的沃云數據庫即服務均支持對單一MySQL數據庫實例的創建、查看和刪除操作。然而,二者在主要功能上存在差異。
首先,沃云的數據庫即服務平臺提供了生成MySQL主從架構的模版,可以通過界面自動化的生成一主一從或者一主多從的MySQL數據庫集群,而這些功能在Openstack Trove中只能通過手工的配置來實現。
其次,沃云的數據庫即服務平臺提供了較為完善的、界面化的數據備份功能和數據庫之間的復制功能,支持動態的配置復制規則或備份規則,這些功能在Trove中尚不完善,部分功能還必須通過手工配置的方式實現。
再次,沃云的數據庫即服務平臺可以通過界面查看到底層數據庫運行、數據庫連接、數據訪問狀況、數據復制狀況以及平臺自身的系統運行狀況等的狀態和性能數據,可以查詢數據庫元數據、數據庫監控和計量等數據,這些功能Trove本身并不具備,但Openstack的監控與計量組件Ceilometer部分地彌補了Trove的缺失功能。
同時,需要指出的是,沃云的數據庫即服務平臺和Openstack的Trove都以同時提供關系型和非關系型兩種數據庫引擎為設計目標,但目前都沒有提供非關系型數據庫的服務能力。
綜上可知,Trove作為OpenStack開源項目中的數據庫即服務組件,部分功能目前尚未成熟,同時,也未通過生產系統的大規模部署驗證,但隨著Openstack社區的不斷壯大,Trove有望逐步成為Openstack的核心項目,朝著更加完善的架構、更多類型的數據庫支持方向演進。同時,為滿足海量數據和高并發的在線交易處理和分析型應用等聯通內部支撐業務系統的生產需求,聯通自主研發的沃云數據庫即服務平臺將向支持分布式數據庫中間層、列式存儲數據庫集群的方向演進,二者將在未來形成協同發展,互為補充的和諧關系。
[1]Robert Sheldo.數據庫即服務的利與弊[EB/OL].(2013-03-06)[2014-09-28].http://www.searchdatabase.com.cn/showcontent_71086.htm
[2]淺談OpenStack與KVM的區別與聯系[EB/OL].(2013-01-08)[2014-09-28].http://os.51cto.com/art/201301/376569.htm.
[3]CSDN.Openstack trove探究[EB/OL].(2014-04-20)[2014-09-28].http://blog.csdn.net/cloudresearch/article/details/24159279
[4]麥子邁.DBaaS與Trove[EB/OL].(2013-07-28)[2014-09-289].http://www.wzxue.com/dbaas%E4%B8%8Etrove/
[5]Openstack Foundation.TroveArchitecture[EB/OL].(2013-08-14)[2014-09-28].https://wiki.openstack.org/wiki/