引言
云計(jì)算的價(jià)值通過(guò)云產(chǎn)品的價(jià)值體現(xiàn)出來(lái),云產(chǎn)品的價(jià)值是通過(guò)云技術(shù)平臺(tái)來(lái)實(shí)現(xiàn)的。云平臺(tái)不僅是技術(shù)的集成,而且是體現(xiàn)云計(jì)算運(yùn)營(yíng)思路內(nèi)涵的表達(dá)形式。本文對(duì)云計(jì)算產(chǎn)品平臺(tái)進(jìn)行深入剖析,展示了平臺(tái)內(nèi)在的關(guān)鍵支撐技術(shù),在技術(shù)解析過(guò)程中始終緊扣云產(chǎn)品平臺(tái)構(gòu)建應(yīng)符合云產(chǎn)品運(yùn)營(yíng)思路的重要思想。通過(guò)對(duì)成熟的云計(jì)算產(chǎn)品平臺(tái)進(jìn)行深刻解讀,通過(guò)分析優(yōu)秀云計(jì)算公司經(jīng)營(yíng)的思路,可以探尋適合企業(yè)自身發(fā)展的云計(jì)算產(chǎn)品平臺(tái)開(kāi)發(fā)之路。在眾多的云產(chǎn)品平臺(tái)中,Salesforce.com公司的PaaS平臺(tái)是其中的典型代表,其獨(dú)樹(shù)一幟的產(chǎn)品平臺(tái)對(duì)云計(jì)算的運(yùn)營(yíng)產(chǎn)生了深遠(yuǎn)的影響,對(duì)從事云計(jì)算服務(wù)業(yè)務(wù)的公司有很大的指導(dǎo)作用和借鑒意義。
1 Salesforce簡(jiǎn)介
Salesforce.com公司成立于1999年,由甲骨文公司前高管MarcBenioff創(chuàng)立。企業(yè)成立之初,便提出了“消滅軟件”的變革性運(yùn)營(yíng)理念,其目的是為了實(shí)現(xiàn)IT資源整合、集中化管理和運(yùn)營(yíng),消滅企業(yè)數(shù)據(jù)中心的運(yùn)行軟件,通過(guò)互聯(lián)網(wǎng)接入,按需提供軟件服務(wù)于用戶,并收取相應(yīng)費(fèi)用,實(shí)現(xiàn)企業(yè)與用戶的價(jià)值共贏。非凡的理念使得Salesforce公司成為了云計(jì)算領(lǐng)域公認(rèn)的領(lǐng)袖企業(yè),其推出的產(chǎn)品不僅成熟,而且產(chǎn)品體現(xiàn)的技術(shù)運(yùn)營(yíng)理念也是獨(dú)樹(shù)一幟,被許多云計(jì)算經(jīng)營(yíng)公司效仿。Salesforce的PaaS平臺(tái)無(wú)論是在架構(gòu)設(shè)計(jì)上,還是在應(yīng)用支持上,與另一云計(jì)算業(yè)界的先鋒公司Google的PaaS相比,都有著重大的區(qū)別。Salesforce的PaaS最大的閃光點(diǎn)就在于采用了多租戶架構(gòu),實(shí)現(xiàn)了云計(jì)算產(chǎn)品平臺(tái)一體化。下面對(duì)多租戶架構(gòu)進(jìn)行剖析,揭開(kāi)云計(jì)算產(chǎn)品的神秘面紗。
2 多租戶的概念和模型
多租戶的概念是在多用戶概念基礎(chǔ)上發(fā)展而來(lái),不同于傳統(tǒng)的多用戶共享一個(gè)相同的實(shí)例,在權(quán)限上區(qū)分用戶的使用范圍。多租戶是多個(gè)用戶享用虛擬實(shí)例,虛擬實(shí)例由具體軟件實(shí)例虛擬而成,共享的虛擬實(shí)例即使是同一個(gè),也會(huì)存在差異。多租戶是對(duì)共享實(shí)例進(jìn)行技術(shù)創(chuàng)新,面向應(yīng)用實(shí)例,而非虛擬化技術(shù)面向操作系統(tǒng)。由于在軟件設(shè)計(jì)時(shí)就必需實(shí)現(xiàn)軟件自身數(shù)據(jù)和配置信息的虛擬分區(qū),所以多租戶軟件架構(gòu)要進(jìn)行必要的修改,特別是數(shù)據(jù)庫(kù)需要特殊的設(shè)計(jì),在安全隔離方面要做設(shè)置,畢竟共享同一軟件資源存在一定的風(fēng)險(xiǎn)。
常見(jiàn)的多租戶實(shí)現(xiàn)模型有3種,區(qū)分就在于最底層采用的數(shù)據(jù)庫(kù)模式。
1)私有表。為每個(gè)用戶單獨(dú)定義數(shù)據(jù)并創(chuàng)建一個(gè)新表。實(shí)現(xiàn)簡(jiǎn)單,不過(guò)成本高。數(shù)據(jù)定義語(yǔ)言(DDL)操作涉及數(shù)據(jù)框架,這造成表之間整合度低。
2)擴(kuò)展表。分基本表和共享表,減少了DDL操作,表的整合度高,但用戶占用基本表和共享表,這造成表的架構(gòu)復(fù)雜。
3)通用表。通用表包括租戶位和數(shù)據(jù)位。租戶位區(qū)分用戶,數(shù)據(jù)位用來(lái)存放各種類型的數(shù)據(jù)。通用表為體現(xiàn)靈活擴(kuò)展和通用性,采用了稀疏列的表格式。每一行的數(shù)據(jù)位中以一個(gè)鍵和一個(gè)值的形式存放數(shù)據(jù),行很寬,里面有許多空值,表具有極高的整合性,也避免了DDL的操作,但架構(gòu)實(shí)現(xiàn)難度較大。Salesforce公司采用了這種多租戶模型。
3 基于多租戶架構(gòu)的PaaS平臺(tái)
Salesforce的PaaS平臺(tái)整體架構(gòu)分為兩層,基礎(chǔ)物理設(shè)施資源和Force.com平臺(tái)。其中Force.com平臺(tái)是整體架構(gòu)的核心部件,它首先整合和利用基礎(chǔ)物理設(shè)施資源,然后提供PaaS平臺(tái)服務(wù)于軟件開(kāi)發(fā)者,最后將公司云產(chǎn)品應(yīng)用以軟件即服務(wù)(SaaS)的形式提供給用戶。其整體架構(gòu)如圖1所示。
圖1 Salesforce
Salesforce公司的PaaS和SaaS基于同一個(gè)平臺(tái),統(tǒng)一的平臺(tái)不僅成本低,而且應(yīng)用得到了整合,突出表現(xiàn)為軟件架構(gòu)上API的統(tǒng)一,PaaS和SaaS的應(yīng)用程序接口得到了重用,方便了應(yīng)用服務(wù)的管理。
Force.com是業(yè)界第一個(gè)基于多租戶架構(gòu)的PaaS平臺(tái),不僅支持靈活的定制,并且承受負(fù)荷極強(qiáng)。其整體架構(gòu)如圖2所示。
圖2 Forec.com整體架構(gòu)圖
架構(gòu)分兩部分,網(wǎng)關(guān)和虛擬服務(wù)器群(POD)。整體架構(gòu)設(shè)計(jì)實(shí)現(xiàn)機(jī)理如下:
網(wǎng)關(guān)接受訪問(wèn)請(qǐng)求,根據(jù)請(qǐng)求區(qū)分訪問(wèn)的應(yīng)用,將應(yīng)用所屬的租戶轉(zhuǎn)發(fā)給對(duì)應(yīng)的POD。POD就是一組集群的服務(wù)器,每個(gè)POD運(yùn)行著一套Force. com的系統(tǒng),在此系統(tǒng)中可以支持上萬(wàn)的租戶,由此可見(jiàn)Force.com平臺(tái)強(qiáng)大的負(fù)荷承載力。POD之間能實(shí)現(xiàn)負(fù)荷均衡,接到請(qǐng)求后,通過(guò)負(fù)載均衡器將請(qǐng)求轉(zhuǎn)發(fā)給負(fù)載較輕的應(yīng)用服務(wù)器,這樣能把租戶平均分配至每個(gè)POD。POD中的應(yīng)用服務(wù)器是無(wú)狀態(tài)的,這樣便于應(yīng)對(duì)大規(guī)模的請(qǐng)求處理,使得架構(gòu)充滿彈性。當(dāng)應(yīng)用服務(wù)器在處理請(qǐng)求時(shí),發(fā)現(xiàn)自身緩存中無(wú)請(qǐng)求所需的數(shù)據(jù),這時(shí)共享數(shù)據(jù)庫(kù)便發(fā)揮作用,應(yīng)用服務(wù)器會(huì)調(diào)用共享數(shù)據(jù)庫(kù)中請(qǐng)求所需的數(shù)據(jù)進(jìn)行下一步的處理。面向運(yùn)營(yíng),POD可以根據(jù)用戶情況進(jìn)行增加,使得整個(gè)架構(gòu)可擴(kuò)展性得到增強(qiáng)。
在整體架構(gòu)中,核心是POD。POD由負(fù)載均衡器、應(yīng)用服務(wù)器和共享數(shù)據(jù)庫(kù)組成。
負(fù)載均衡器采用多輸入/輸出(I/O)理念,對(duì)于虛擬服務(wù)器而言,存在多個(gè)I/O服務(wù)器,只需通過(guò)I/O服務(wù)器互聯(lián),通過(guò)軟件算法分配資源給各個(gè)服務(wù)器資源占用,就能達(dá)到負(fù)載均衡的目的。簡(jiǎn)言之,任務(wù)會(huì)分配到負(fù)載較輕的I/O服務(wù)器上。在具體實(shí)現(xiàn)過(guò)程中,采用負(fù)載均衡模式的服務(wù)器,客戶就會(huì)通過(guò)負(fù)荷識(shí)別機(jī)制,自動(dòng)尋找負(fù)載較輕的I/O服務(wù)器。
應(yīng)用服務(wù)器用于處理用戶的請(qǐng)求,由以下5個(gè)模塊組成,如圖3所示。
圖3 應(yīng)用服務(wù)器組成框圖
1)元數(shù)據(jù)緩存。存放新近常用的元數(shù)據(jù),加速應(yīng)用的生成。元數(shù)據(jù)是基于面向?qū)ο蟮,從某種意義上講,也可以認(rèn)為就是對(duì)象。對(duì)于Force.com而言,它是由一個(gè)個(gè)對(duì)象組成的,對(duì)象包含表格、用戶接口(UI)和用戶權(quán)限等,這些對(duì)象采用了元數(shù)據(jù)的形式在數(shù)據(jù)庫(kù)中存儲(chǔ)。Force.com的對(duì)象及其相關(guān)的字段對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)的表和表中的列,并且Force.com對(duì)象之間的關(guān)系受數(shù)據(jù)庫(kù)的完整性約束。數(shù)據(jù)庫(kù)中每個(gè)數(shù)據(jù)庫(kù)表對(duì)應(yīng)著獨(dú)立的存儲(chǔ)地址,F(xiàn)orce.com在這點(diǎn)上進(jìn)行了優(yōu)化改進(jìn),F(xiàn)orce.com使用多個(gè)共享的大數(shù)據(jù)庫(kù)表作為存儲(chǔ)放置對(duì)象。大數(shù)據(jù)庫(kù)表中包含許多數(shù)據(jù)通用字典(UDD),UDD就是專門存儲(chǔ)元數(shù)據(jù)的表格。另外,對(duì)于應(yīng)用而言,運(yùn)行在Force.com上的軟件實(shí)例也是由多個(gè)對(duì)象生成的,同樣一個(gè)應(yīng)用實(shí)例也是使用元數(shù)據(jù)進(jìn)行描述的。用戶最初在使用軟件的時(shí)候,對(duì)象版本和規(guī)模都是一致的,隨著用戶使用時(shí)間的增長(zhǎng),相應(yīng)用戶對(duì)應(yīng)用軟件的定制添加便會(huì)造成同一個(gè)軟件實(shí)例的不同,系統(tǒng)就會(huì)對(duì)應(yīng)用共享對(duì)象和定制對(duì)象進(jìn)行嚴(yán)格分離。在實(shí)現(xiàn)上,并未為新對(duì)象生成數(shù)據(jù)庫(kù)表格,而是采用元數(shù)據(jù)的形式存儲(chǔ)在大表中。元數(shù)據(jù)的好處顯而易見(jiàn),作為數(shù)據(jù)存放比新建數(shù)據(jù)庫(kù)表格易實(shí)現(xiàn)很多。在實(shí)際運(yùn)行中,F(xiàn)orce.com使用引擎分析數(shù)據(jù)庫(kù)中的元數(shù)據(jù)以動(dòng)態(tài)生成虛擬實(shí)例和虛擬實(shí)例所需的模塊。
2)大規(guī)模數(shù)據(jù)處理引擎。主要用于大數(shù)據(jù)量的讀寫和在線事務(wù)的加速處理。由于PaaS平臺(tái)需要處理的數(shù)據(jù)量是巨大的,所以引入大規(guī)模數(shù)據(jù)處理引擎就顯得很有必要。當(dāng)一個(gè)API調(diào)用發(fā)生了很多待處理數(shù)據(jù)時(shí),引擎能快速應(yīng)對(duì)處理,顯示出強(qiáng)大的優(yōu)化處理能力。另外,當(dāng)處理大規(guī)模數(shù)據(jù)時(shí),其中一個(gè)步驟發(fā)生錯(cuò)誤,引擎內(nèi)置的錯(cuò)誤恢復(fù)機(jī)制能快速捕捉和修復(fù)這個(gè)錯(cuò)誤,同時(shí)會(huì)保存出錯(cuò)步驟之前的數(shù)據(jù)結(jié)果,避免重新操作。
3)多租戶感知的查詢優(yōu)化引擎。引擎的作用是幫助關(guān)系型數(shù)據(jù)庫(kù)自帶查詢優(yōu)化器,以便更好地適應(yīng)多租戶的環(huán)境。數(shù)據(jù)庫(kù)是自帶查詢優(yōu)化器的,主要基于數(shù)據(jù)庫(kù)表的索引等數(shù)值進(jìn)行計(jì)算和比較[4]。這種自帶的查詢優(yōu)化器是針對(duì)單租戶環(huán)境而設(shè)計(jì)的,為了使其適應(yīng)多租戶環(huán)境,在自帶查詢優(yōu)化器基礎(chǔ)之上設(shè)計(jì)了一個(gè)多用戶感知的查詢優(yōu)化引擎,其為每個(gè)多租戶對(duì)象維護(hù)了與之對(duì)應(yīng)的一整套優(yōu)化數(shù)據(jù),除此之外,這個(gè)引擎也維護(hù)租戶和租戶下用戶的安全信息,既避免了租戶間數(shù)據(jù)的誤處理,又提升了數(shù)據(jù)安全性和數(shù)據(jù)處理效率。
4)運(yùn)行生成器。根據(jù)用戶請(qǐng)求動(dòng)態(tài)生成應(yīng)用,并利用查詢優(yōu)化器提升數(shù)據(jù)處理效率。
5)全文檢索引擎。在數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)更新的同時(shí),引擎異步更新這個(gè)數(shù)據(jù)的相關(guān)索引。做為Web的一項(xiàng)基本功能,被應(yīng)用至PaaS。Force.com內(nèi)置的全文檢索引擎基于Lucene技術(shù)。當(dāng)運(yùn)行在PaaS平臺(tái)上的應(yīng)用對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行更新時(shí),會(huì)有檢索服務(wù)器的后臺(tái)進(jìn)程異步更新與數(shù)據(jù)相關(guān)的索引。異步機(jī)制的好處在于,將事務(wù)處理和用戶檢索放置在不同時(shí)間段,保證了檢索工作不影響處理事務(wù)的效率,同時(shí)也能為用戶提供最新搜索結(jié)果。在檢索過(guò)程中采用了一項(xiàng)創(chuàng)新技術(shù)——等待檢察技術(shù)優(yōu)化了檢索流程,系統(tǒng)將修改過(guò)的數(shù)據(jù)復(fù)制到一個(gè)等待檢索表,檢索服務(wù)器會(huì)直接訪問(wèn)這個(gè)表,返回給用戶最新的搜索結(jié)果,檢索服務(wù)器不用對(duì)整個(gè)索引進(jìn)行搜索,從而減少了檢索服務(wù)器的I/O處理量。在多租戶環(huán)境中,每個(gè)多租戶都有一個(gè)獨(dú)立的索引。
另一POD主要部件共享數(shù)據(jù)庫(kù)用于存放數(shù)據(jù),采用散列分區(qū)技術(shù),將大數(shù)據(jù)分成數(shù)據(jù)小塊進(jìn)行管理,使得大型數(shù)據(jù)庫(kù)得以適應(yīng)多租戶環(huán)境,提升了系統(tǒng)的伸縮性和可用性。共享數(shù)據(jù)庫(kù)由以下3部分組成,如圖4所示。
圖4 共享數(shù)據(jù)庫(kù)組成示意圖
1)元數(shù)據(jù)表。用于存儲(chǔ)互用定制對(duì)象及其包含的字段和結(jié)構(gòu)信息,不保存具體數(shù)據(jù)。元數(shù)據(jù)表主要有兩類:一是對(duì)象元數(shù)據(jù)表,存儲(chǔ)對(duì)象的信息,其字段包括對(duì)象ID(標(biāo)示數(shù)據(jù))、擁有對(duì)象的租戶ID和對(duì)象名稱;二是字段元數(shù)據(jù)表,存儲(chǔ)對(duì)象附帶字段的信息,包括字段的ID、擁有字段租戶的ID、字段名稱、字段數(shù)據(jù)類型和是否被索引的布爾字段。
2)數(shù)據(jù)表。存儲(chǔ)用戶所使用對(duì)象和對(duì)象所包含的字段數(shù)據(jù)。與元數(shù)據(jù)表一樣,有兩類,一類是數(shù)據(jù)表,表中放置著對(duì)象和字段所對(duì)應(yīng)的數(shù)據(jù)。核心字段有全局ID、租戶ID、對(duì)象ID和對(duì)象名稱。核心字段之外,有501個(gè)數(shù)據(jù)列用來(lái)存放數(shù)據(jù),列用Value來(lái)命名。首個(gè)字段以Value0設(shè)定,后續(xù)排列遞增。列采用靈活列的方式,使得數(shù)據(jù)庫(kù)中的數(shù)據(jù)總是以可變長(zhǎng)度字符數(shù)據(jù)類型(Varchar)形式承載數(shù)據(jù)。另一類是大字符表(Clob),專門存放大字符對(duì)象,最大長(zhǎng)度限制為32000字符。
3)數(shù)據(jù)透視表。透視形象表達(dá)了數(shù)據(jù)讀取簡(jiǎn)化的過(guò)程,對(duì)特殊數(shù)據(jù)去格式束縛,只關(guān)注數(shù)據(jù)某一特征即可進(jìn)行讀取,這樣會(huì)加速對(duì)特殊數(shù)據(jù)的處理,使系統(tǒng)通過(guò)“短路徑”得以對(duì)數(shù)據(jù)進(jìn)行直接處理。在具體實(shí)現(xiàn)上,往往對(duì)表中數(shù)據(jù)某一特征進(jìn)行處理,例如字段類型。這樣做的好處有:可以優(yōu)化數(shù)據(jù)庫(kù),加快了對(duì)常用數(shù)據(jù)的讀取,減少了因結(jié)構(gòu)導(dǎo)致的讀取冗余。
除此之外,Salesforce基于多租戶的PaaS平刻臺(tái),采用了獨(dú)創(chuàng)的面向?qū)ο笳Z(yǔ)言Apex。Apex整合復(fù)雜的商業(yè)邏輯和多模塊功能,用于在Force.com上創(chuàng)建Web服務(wù)。運(yùn)行有兩種方式:一是單獨(dú)腳本,按用戶需求執(zhí)行;二是觸發(fā)器形式,通過(guò)特定數(shù)據(jù)處理事件作為條件,觸發(fā)綁定的Apex代碼執(zhí)行。Apex代碼同樣是以元數(shù)據(jù)的形式存儲(chǔ)于元數(shù)據(jù)表內(nèi)。當(dāng)Apex代碼被調(diào)用時(shí),Apex的翻譯器會(huì)讀取元數(shù)據(jù)緩存中被編譯過(guò)的Apex代碼,以提供給多個(gè)租戶進(jìn)行使用。引入Apex這門新語(yǔ)言,著眼于平臺(tái)的穩(wěn)定性和安全性[5]。Apex有一組管理工具,能夠檢測(cè)腳本在運(yùn)行、執(zhí)行過(guò)程中消耗的性能并進(jìn)行事件統(tǒng)計(jì),有助于判斷腳本執(zhí)行是否正常,是否應(yīng)終止,避免了對(duì)其他租戶應(yīng)用的影響,確保了應(yīng)用的安全,同時(shí)將中斷信息反饋給此應(yīng)用的用戶。另外,Apex代碼有驗(yàn)證機(jī)制,對(duì)其內(nèi)嵌的SOQL(數(shù)據(jù)庫(kù)查詢語(yǔ)言)和SOSL(數(shù)據(jù)庫(kù)檢索語(yǔ)言)進(jìn)行驗(yàn)證,以避免實(shí)際運(yùn)行時(shí)出現(xiàn)錯(cuò)誤,保證了平臺(tái)整體運(yùn)行的穩(wěn)定性。
4 總結(jié)
上述基于多租戶架構(gòu)的PaaS示例,不僅體現(xiàn)著一種先進(jìn)的技術(shù)理念,更是體現(xiàn)著一種清晰的云計(jì)算服務(wù)運(yùn)營(yíng)思路。在具體搭建過(guò)程中,在設(shè)計(jì)上既要滿足業(yè)務(wù)需求,也要兼顧成本。初期和發(fā)展期,PaaS平臺(tái)優(yōu)化很重要。目前的架構(gòu)中包含動(dòng)態(tài)生成機(jī)制,按需分配資源,需要對(duì)應(yīng)用進(jìn)行掃描,導(dǎo)致請(qǐng)求響應(yīng)時(shí)間長(zhǎng),為了加快讀取,就必需采用優(yōu)化技術(shù),簡(jiǎn)化數(shù)據(jù)讀取冗余。總之,云計(jì)算產(chǎn)品平臺(tái)不會(huì)一成不變,隨著用戶需求的增加,平臺(tái)演變也是必然的。軟件的演進(jìn)是一個(gè)過(guò)程,是在不斷實(shí)現(xiàn)創(chuàng)新的過(guò)程中逐步成熟起來(lái)的。企業(yè)在實(shí)際運(yùn)營(yíng)中,要面向需求,充分發(fā)揮人的創(chuàng)造性,打造優(yōu)秀團(tuán)隊(duì)以支撐企業(yè)規(guī)模發(fā)展。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:基于多租戶架構(gòu)的PaaS構(gòu)建剖析
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/1083974829.html