在為現(xiàn)有或新的多租戶服務(wù)設(shè)計 web 交付時,,服務(wù)供應(yīng)商常常面對許多設(shè)計選擇。圖 1 顯示了五種主要方法,。方法 1 是所有租戶共享單一應(yīng)用程序?qū)嵗?,也就是相同的服?wù)器、中間件和應(yīng)用程序,。方法 5 是租戶在單獨的服務(wù)器上運行自己的應(yīng)用程序?qū)嵗ó斍霸S多 Application Service Provider [ASP] 采用這種方法),。在這兩種方法之間,還有至少三種主要方法,,它們具有不同的資源共享程度和開發(fā)復雜性,。每種方法提供不同的收益(在可伸縮性和運營效率方面),需要不同的成本(在開發(fā)復雜性和投入市場的時間方面),。 圖 1. 啟用多租戶的五種主要方法
在本文中,我們將使用多種角色描述啟用多租戶的不同方法:
服務(wù)供應(yīng)商可以使用以下五種主要方法:
下面幾節(jié)詳細描述這五種方法。在決定采用哪種方法時,,了解每種方法的成本和收益會有幫助。我們在后面的一節(jié)中提供成本/收益分析,。 方法 1、2 和 3 都在多個租戶之間共享中間件和應(yīng)用程序組件,,只是程度不同。下面看看每種方法的示例,。 方法 1:包含單一應(yīng)用程序?qū)嵗墓蚕碇虚g件 所有租戶共享操作系統(tǒng)、服務(wù)器以及中間件和應(yīng)用程序的單一實例,。實現(xiàn)的方法是用租戶標識參數(shù)對應(yīng)用程序的單一實例進行參數(shù)化,。例如,如果應(yīng)用程序有 web 服務(wù)接口和實現(xiàn),,那么在接口中的操作和數(shù)據(jù)對象中添加租戶 ID 參數(shù),。如果應(yīng)用程序使用數(shù)據(jù)庫表,那么在每個數(shù)據(jù)庫表中添加一個表示租戶 ID 的新列,。在這個模型中,有一些配置元素對于每個租戶是獨特的,。例如,,虛擬門戶為每個租戶提供不同的外觀和感覺以及獨特的數(shù)據(jù)庫模式元素。 圖 2. 方法 1 的拓撲示例(在多個租戶之間共享應(yīng)用程序和中間件的單一實例) 圖 2 中顯示一個使用這種方法的拓撲示例,。這里有三個租戶:A,、B 和 C,他們共享 Application 1 的相同代碼,。Application 1 使用在 Blade 服務(wù)器上的 Windows 上運行的 Tomcat 和 DB2,以及在另一臺物理服務(wù)器上的 Linux 上運行的 Apache HTTP 服務(wù)器,。所有租戶共享中間件,、操作系統(tǒng)和服務(wù)器??梢詮?“Building Web delivered SaaS applications on open source and entry level IBM middleware” 下載一個使用這種方法的多租戶示例應(yīng)用程序,。當一個租戶出現(xiàn)時,為他創(chuàng)建相關(guān)的配置(例如 CSS 文件),,但是只有一個應(yīng)用程序?qū)嵗?,由所有租戶共享。在使用這種方法時,應(yīng)用程序必須能夠把每個租戶的數(shù)據(jù)和配置隔離開,。本系列的第 3 部分和第 4 部分討論在使用這種方法啟用多租戶時重要的體系結(jié)構(gòu)考慮因素(使用 IBM WebSphere Application Server),。 方法 2:包含共享地址空間中的多個應(yīng)用程序?qū)嵗墓蚕碇虚g件 租戶使用應(yīng)用程序的不同實例,這些實例部署在中間件的單一實例中,,共享單一操作系統(tǒng)進程(地址空間),。租戶共享操作系統(tǒng)和服務(wù)器。在圖 3 中,,租戶 A,、B 和 C 使用這種方法共享一個示例應(yīng)用程序。 圖 3. 方法 2 的拓撲示例(對于不同的租戶,,在中間件的單一實例中運行應(yīng)用程序的不同實例) 當新的租戶出現(xiàn)時,創(chuàng)建一個單獨的應(yīng)用程序拷貝,,指定一個包含租戶標識符的名稱,,把它部署到應(yīng)用服務(wù)器的共享實例中。例如,,復制 Application App 的 ear 文件 (App.ear) 并分別命名為 App1.ear 和 App2.ear,。同樣,在數(shù)據(jù)庫層,,對于租戶 A 和 B,,把應(yīng)用程序表 App_table 分別復制為 App1_table 和 App2_table。與租戶相關(guān)的定制(例如 CSS 文件和表模式)添加到與租戶相關(guān)的應(yīng)用程序和表拷貝中,。這個模型要求在中間件層維持租戶隔離,。 方法 3:包含單獨地址空間中的多個應(yīng)用程序?qū)嵗墓蚕碇虚g件 租戶使用應(yīng)用程序的不同實例,這些實例部署在中間件的不同實例中,。租戶共享操作系統(tǒng)和服務(wù)器,。因為中間件實例是不同的,所以每個租戶有自己的操作系統(tǒng)進程(地址空間),。因此,,這個模型要求在操作系統(tǒng)層維持租戶隔離。這種方法在相同的物理服務(wù)器上支持的租戶數(shù)量比方法 1 和 2 少,。在三種共享中間件方法中,,這種方法提供最強的租戶隔離。但是,,在操作系統(tǒng)和服務(wù)器層仍然有隔離問題,,例如一個租戶的用戶有可能占用物理服務(wù)器中的所有 CPU 和內(nèi)存。 圖 4. 方法 3 的拓撲示例(對于不同的租戶,,在中間件的不同實例中運行應(yīng)用程序的不同實例) 在圖 4 中的示例中,每個租戶(A、B 和 C)運行自己的應(yīng)用程序物理拷貝(分別為 App1,、App2 和 App3),,這些拷貝部署在自己的中間件物理拷貝中(分別為 M1、M2 和 M3),。租戶 A 和 B 在 Windows 上運行應(yīng)用程序,,而租戶 C 在 Linux 上運行應(yīng)用程序。在三種共享中間件方法中,,這種方法需要對現(xiàn)有應(yīng)用程序做的修改最少,,這有助于加快部署速度。在 SaaS Blueprints 系列即將推出的一個演示程序中,,會給出一個采用這種方法的示例,,它使用 WebSphere Smash 和 MySQL 作為中間件,運行一個租戶 phpBB 公告牌應(yīng)用程序,。 使用虛擬化技術(shù)在共享服務(wù)器上運行多個操作系統(tǒng)分區(qū),,對于每個租戶分配專用的應(yīng)用程序和中間件實例。 租戶使用不同的虛擬映像以及不同的應(yīng)用程序,、中間件和操作系統(tǒng)實例,,但是共享物理服務(wù)器。在近幾年,,服務(wù)器虛擬化技術(shù)在基于 x86 的服務(wù)器上得到了廣泛應(yīng)用,,正在迅速地成為一種低成本的日常技術(shù)。 與共享中間件方法相比,,服務(wù)器虛擬化不需要為啟用多租戶進行大量代碼開發(fā),。在物理服務(wù)器(主機)上安裝服務(wù)器虛擬化之后,對于每個租戶,,服務(wù)供應(yīng)商實例化一個虛擬服務(wù)器(訪客),,它包含與這個租戶相關(guān)的軟件,包括中間件和應(yīng)用程序,。 多租戶的技術(shù)困難之一是供應(yīng)新的租戶,。為了供應(yīng)新的租戶,服務(wù)供應(yīng)商必須執(zhí)行可能漫長且復雜的安裝和配置步驟,??梢圆捎?Virtual appliances(例如,VMWare Virtual Appliance for WebSphere Application Server Network Deployment V7.0 Open Beta),,在其中包含預先配置的與租戶相關(guān)的操作系統(tǒng)和中間件,這有助于解決供應(yīng)問題,。 圖 5 給出一個采用這種方法的示例,,其中在物理服務(wù)器上安裝了本機系統(tǒng)管理程序(比如 VMWare ESX™ 或 Xen)。在這個示例中,底部綠框中的物理 blade 服務(wù)器 A 有兩個頻率為 2 Ghz 的 CPU,,它被分為兩個虛擬 blade 服務(wù)器(黑框中的 vBlade 1 和 vBlade 2),,每個虛擬服務(wù)器各有一個 2 Ghz 的 CPU。虛擬 blade 服務(wù)器 vBlade 3 包含整個服務(wù)器 B,,有 4 個 2Ghz CPU,。虛擬服務(wù)器還共享物理服務(wù)器的其他資源,比如內(nèi)存,、磁盤空間和網(wǎng)絡(luò)連接,。應(yīng)用程序 App4 和 App5 部署在 vBlade 1 和 vBlade 2 中,為兩個租戶服務(wù),,App6 部署在 vBlade 3 中,。注意,租戶可以使用不同的操作系統(tǒng),。 圖 5. 通過基于本機系統(tǒng)管理程序的服務(wù)器虛擬化啟用多租戶
服務(wù)供應(yīng)商在一個中介代理層中集中地執(zhí)行通用的多租戶功能,,比如路由、訪問控制和度量,。中介層可以與虛擬化方法相結(jié)合,,把它與在單獨虛擬映像分區(qū)中運行的租戶相關(guān)服務(wù)實例集成起來。中介代理層位于應(yīng)用程序的最終用戶和應(yīng)用程序中的服務(wù)之間,,它動態(tài)地把來自租戶的用戶的服務(wù)請求綁定或路由到與租戶相關(guān)的服務(wù)實例,,見圖 6。 圖 6 描述一個中介方法示例,,其中服務(wù)供應(yīng)商使用 WebSphere DataPower SOA appliance (WDP) 實現(xiàn)中介代理層,。在這個示例中,在 WDP web 服務(wù)代理中配置路由規(guī)則,,這些規(guī)則把兩個租戶(A 和 B)的用戶的請求路由到相應(yīng)的應(yīng)用程序?qū)嵗?。另外,通過集成 Tivoli Access Manager 和 Tivoli Usage and Accounting Manager 等其他中間件組件,,添加了度量,、訪問控制和審計等多租戶功能。 圖 6. 中介方法的示例(使用 WebSphere DataPower SOA appliances 啟用多租戶) 在本系列的第 5,、6,、7 和 8 部分中,我們將介紹實現(xiàn)這種方法的三種方式,,使用以下產(chǎn)品組合:
方法 5:在單獨的服務(wù)器上運行多個實例的 ASP 模型 租戶只共享數(shù)據(jù)中心的基礎(chǔ)結(jié)構(gòu)(比如供電和制冷),,但是使用應(yīng)用程序、中間件,、操作系統(tǒng)和服務(wù)器的不同實例,。在圖 7 所示的示例中,,租戶 A、B 和 C 使用三個不同的應(yīng)用程序?qū)嵗?AppA,、AppB 和 AppC,,它們在與租戶相關(guān)的中間件實例、操作系統(tǒng)實例和物理服務(wù)器上運行,。這種方法最適合那些要求為不同的租戶提供充分隔離和定制的工作負載和場景,。 圖 7. ASP 模型的示例(通過在單獨的服務(wù)器上運行多個實例啟用多租戶) 本節(jié)從服務(wù)供應(yīng)商和服務(wù)開發(fā)人員的角度考慮成本-收益分析。 對于服務(wù)供應(yīng)商來說,,在為大量租戶提供服務(wù)時,,方法 5(即 ASP 方法)的成本是最高的。在其他四種方法中,,隨著資源共享程度的提高,,經(jīng)濟有效性和規(guī)模效益會依次提高,見圖 1 中的兩個黃色箭頭,。ASP 方法會導致以下與租戶相關(guān)的成本類型:
但是,對于服務(wù)開發(fā)人員來說,,這種方法的成本是最低的,,因為不需要為啟用多租戶修改應(yīng)用程序。另外,,這種方法為與租戶相關(guān)的實例提供最強的隔離和定制能力,。 方法 1 到 3(即共享中間件方法)的運營成本是三種共享模型中最低的,因為隨著資源共享程度的提高(服務(wù)器,、中間件和操作系統(tǒng)),,要管理的組件數(shù)量會減少。這些方法還提供規(guī)模效益,,因為駐留在單一物理服務(wù)器上的租戶數(shù)量最高,。對于服務(wù)開發(fā)人員,方法 1(單一應(yīng)用程序?qū)嵗┑某杀咀罡?,因為它可能要求重新設(shè)計現(xiàn)有的應(yīng)用程序,,需要很長的開發(fā)時間和很大的成本,。另外,它要求了解高級的應(yīng)用服務(wù)器特性和技術(shù),,需要非常有經(jīng)驗的開發(fā)人員。 對于服務(wù)開發(fā)人員,,方法 4(即多個虛擬映像)的成本比共享中間件方法(方法 1-3)低,,因為需要的應(yīng)用程序修改很少,甚至不需要,。這樣就可以更快地把服務(wù)投入市場,。在虛擬化方法中添加中介層(方法 4a)也會降低復雜性,減少集成其他多租戶功能(比如訪問控制和度量)所需的時間,。 表 1 提供共享中間件方法(方法 1-3)和虛擬化方法(4 和 4a)的成本收益對比,。 表 1. 共享中間件方法和虛擬化方法的成本收益對比
從傳統(tǒng)的應(yīng)用程序服務(wù)供應(yīng)商模型遷移到 web 交付模型有多種方法,,這些方法對于服務(wù)供應(yīng)商和服務(wù)開發(fā)人員有不同的成本和收益,。我們討論了五種主要方法,它們具有不同的資源共享程度和開發(fā)復雜性,。這個遷移過程的目標是提高經(jīng)濟有效性和降低總擁有成本,。本文討論了各種方法的優(yōu)缺點,有助于您選擇合適的方法并準備適當?shù)捏w系結(jié)構(gòu),,從而逐步實現(xiàn)這些目標,。 作者要感謝 IBM Research 的 Ajay Mohindra 和 Suresh N. Chari,他們?yōu)槊枋鲋饕嘧鈶舴椒ǖ膱D 1 做出了貢獻,。 學習
獲得產(chǎn)品和技術(shù)
|
|