您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

OpenStack數(shù)據(jù)庫服務(wù)與Trove的介紹

大小:0.4 MB 人氣:0 2017-10-11 需要積分:1
對(duì)于公有云計(jì)算平臺(tái)來說,只有計(jì)算、網(wǎng)絡(luò)與存儲(chǔ)這三大服務(wù)往往是不太夠的,在目前互聯(lián)網(wǎng)應(yīng)用百花齊放的背景下,幾乎所有應(yīng)用都使用到數(shù)據(jù)庫,而數(shù)據(jù)庫承載的往往是應(yīng)用最核心的數(shù)據(jù)。此外,在大數(shù)據(jù)分析越來越盛行的背景下,對(duì)數(shù)據(jù)庫的可靠便捷管理也變得更為重要。因此,DBase as a Service(DBaaS,數(shù)據(jù)庫服務(wù))也就順理成章地成為了云計(jì)算平臺(tái)為用戶創(chuàng)造價(jià)值的一個(gè)重要服務(wù)。
  對(duì)比Amazon AWS中各種關(guān)于數(shù)據(jù)的服務(wù),其中最著名的是RDS(SQL-base)和DynamoDB(NoSQL),除了實(shí)現(xiàn)了基本的數(shù)據(jù)管理能力,還具備良好的伸縮能力、容災(zāi)能力和不同規(guī)格的性能表現(xiàn)。因此,對(duì)于最炙手可熱的開源云計(jì)算平臺(tái)Openstack來說,也從Icehouse版加入了DBaaS服務(wù),代號(hào)Trove。直到去年底發(fā)布的Openstack Liberty版本,Trove已經(jīng)經(jīng)過了4個(gè)版本的迭代發(fā)布,目前已經(jīng)成為Openstack官方可選的核心服務(wù)之一。本文將深入介紹Trove的原理、架構(gòu)與功能,并通過實(shí)踐來展示Trove的應(yīng)用。
  Trove的設(shè)計(jì)目標(biāo)
  “Trove is Database as a Service for OpenStack. It’s designed to run entirely on OpenStack, with the goal of allowing users to quickly and easily utilize the features of a relational or non-relational database without the burden of handling complex administrative tasks. ”這是Trove在官方首頁上對(duì)這個(gè)項(xiàng)目的說明,有兩個(gè)關(guān)鍵點(diǎn)。一個(gè)是從產(chǎn)品設(shè)計(jì)上說,它定位不僅僅是關(guān)系型數(shù)據(jù)庫,而且還涵蓋非關(guān)系數(shù)據(jù)庫的服務(wù)。另一個(gè)是從產(chǎn)品實(shí)現(xiàn)上說,它是完全基于Openstack的。
  從第一點(diǎn)可以看出Trove解決問題的高度已經(jīng)超越了同類產(chǎn)品。因?yàn)槲覀儚钠渌朴?jì)算平臺(tái)對(duì)比去看,關(guān)系型和非關(guān)系型數(shù)據(jù)庫都是由不同的服務(wù)去提供(比如AWS的RDS和DynamoDB),而且實(shí)現(xiàn)上也往往互相獨(dú)立的系統(tǒng),不僅UI不同,API也不一樣。而Trove的目標(biāo)是抽象盡可能多的東西,對(duì)外提供統(tǒng)一的UI和API,盡量減少冗余實(shí)現(xiàn),提升平臺(tái)內(nèi)聚。只要具備了實(shí)例、數(shù)據(jù)庫、用戶、配置、備份、集群、主從復(fù)制這些概念,不管是關(guān)系型還是非關(guān)系型數(shù)據(jù)庫,都能統(tǒng)一管理起來。從最新的Liberty版本發(fā)布的情況下,目前開源的主流關(guān)系型和非關(guān)系型數(shù)據(jù)庫也得到了支持,比如Mysql(包括Percona和MariaDB分支)、Postgresql、Redis、MongoDB、CouchDB、Cassandra等等。不過根據(jù)官方的介紹,目前只有Mysql是得到了充分的生產(chǎn)性測(cè)試,其他的還處于實(shí)驗(yàn)性階段。
  而第二點(diǎn)完全基于Openstack的,可以說是一個(gè)較大的創(chuàng)新。試想,假設(shè)你是一個(gè)云計(jì)算服務(wù)商,如果現(xiàn)在要提供數(shù)據(jù)庫服務(wù),只需要在原有平臺(tái)軟件上升級(jí)與配置一下就行,其他什么都不需要,不需要采購數(shù)據(jù)庫服務(wù)器硬件,不需要規(guī)劃網(wǎng)絡(luò),不需要規(guī)劃IDC,這是一種什么樣的感覺?Trove完全構(gòu)建于Openstack原有的幾大基礎(chǔ)服務(wù)之上。打個(gè)比喻類似于Google著名的Bigtable服務(wù)是構(gòu)建于GFS、Borg、Chubby等幾個(gè)基礎(chǔ)服務(wù)之上。所以,Trove實(shí)際上擁有了云平臺(tái)的一些基礎(chǔ)特性,比如容災(zāi)隔離、動(dòng)態(tài)調(diào)度、快速響應(yīng)等能力,而且從研發(fā)的角度看,也大大減少了重復(fù)造輪子的現(xiàn)象。
  OpenStack數(shù)據(jù)庫服務(wù)與Trove的介紹
  Trove的架構(gòu)介紹
  實(shí)際上Trove的架構(gòu)(最新版本)與Openstack Nova項(xiàng)目的架構(gòu)是如出一轍,可以說是Nova的一個(gè)簡(jiǎn)化版。也是典型的Openstack項(xiàng)目架構(gòu)風(fēng)格。Trove所管理的各個(gè)數(shù)據(jù)庫引擎的差異性主要體現(xiàn)在trove-guestagent的具體manager和strategies代碼實(shí)現(xiàn)上。架構(gòu)如圖所示:
  OpenStack數(shù)據(jù)庫服務(wù)與Trove的介紹
  trove-api是接入層,輕量級(jí)請(qǐng)求通過在接入層直接處理或者通過直接訪問guestagent處理,比如獲取實(shí)例列表、獲取實(shí)例規(guī)格列表等;而比較重的請(qǐng)求則通過message bus(Openstack默認(rèn)實(shí)現(xiàn)是Rabbitmq)中轉(zhuǎn)給trove-taskmanager進(jìn)行調(diào)度處理。trove-taskmanager是調(diào)度處理層,主要是處理較重的請(qǐng)求,比如創(chuàng)建實(shí)例、實(shí)例resize等。
  taskmanager會(huì)通過Nova、Swift的API訪問Openstack基礎(chǔ)的服務(wù),而且是有狀態(tài)的,是整個(gè)系統(tǒng)的核心。trove-conductor是guestagent訪問數(shù)據(jù)庫的代理層,主要是為了屏蔽掉guestagent直接對(duì)數(shù)據(jù)庫的訪問。
  在Trove目前的實(shí)現(xiàn)中,一個(gè)數(shù)據(jù)庫實(shí)例一一對(duì)映到一個(gè)vm,而guestagent也是運(yùn)行在vm里面。vm鏡像包含了經(jīng)過裁剪的操作系統(tǒng)、數(shù)據(jù)庫引擎和guestagent(鏡像具體實(shí)現(xiàn)沒有標(biāo)準(zhǔn),數(shù)據(jù)庫引擎和guestagent也都可以在vm啟動(dòng)時(shí)通過網(wǎng)絡(luò)動(dòng)態(tài)裝載)。而實(shí)例所在分區(qū)的硬盤是通過Cinder提供的云硬盤。每個(gè)vm都會(huì)關(guān)聯(lián)一個(gè)安全組防火墻,只允許數(shù)據(jù)庫服務(wù)的端口通過(比如Mysql,默認(rèn)是TCP 3306端口)。從這里可以看出,Trove創(chuàng)建數(shù)據(jù)庫實(shí)例是非常靈活的,后期的調(diào)度也非常方便,這些都得益于Nova和Cinder。
  Trove功能介紹
  正如前面說的,實(shí)際上Trove是在主流的關(guān)系和非關(guān)系型數(shù)據(jù)庫的一些核心概念基礎(chǔ)上抽象出的一個(gè)系統(tǒng)框架,所以其實(shí)現(xiàn)的功能也是圍繞著這些核心概念的。Trove的概念關(guān)系圖:
  OpenStack數(shù)據(jù)庫服務(wù)與Trove的介紹
  因此Trove的主要功能也是圍繞這幾個(gè)概念實(shí)現(xiàn)的。datastore管理,Instance管理,configuration管理,database管理,user管理,replication管理,backup管理,cluster管理等等。
  從最新的Liberty版本看,目前Trove的功能還是比較多的,而且擴(kuò)展性很強(qiáng)??上У氖菍?shí)例統(tǒng)計(jì)監(jiān)控功能卻沒有看到,而統(tǒng)計(jì)監(jiān)控功能的缺失,應(yīng)該也是導(dǎo)致了實(shí)例容災(zāi)的自動(dòng)切換還沒有實(shí)現(xiàn),相信這些都會(huì)在不久的新版本中逐漸完善。不過從另外一個(gè)角度看,由于數(shù)據(jù)庫對(duì)用戶來說是非常關(guān)鍵的服務(wù),涉及到核心數(shù)據(jù)的數(shù)據(jù)一致性問題,目前交由用戶上層去確認(rèn)和切換實(shí)例也不失一個(gè)明智的選擇。下面以Mysql數(shù)據(jù)庫作為例子,對(duì)Trove的一些重要功能進(jìn)行分析。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?