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