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