複製鏈接
請複製以下鏈接發送給好友

多租户技術

鎖定
多租户技術(英語:multi-tenancy technology)或稱多重租賃技術,是一種軟件架構技術,它是在探討與實現如何於多用户的環境下共用相同的系統或程序組件,並且仍可確保各用户間數據的隔離性。
多租户簡單來説是指一個單獨的實例可以為多個組織服務。多租户技術為共用的數據中心內如何以單一系統架構與服務提供多數客户端相同甚至可定製化的服務,並且仍然可以保障客户的數據隔離。一個支持多租户技術的系統需要在設計上對它的數據和配置進行虛擬分區,從而使系統的每個租户或稱組織都能夠使用一個單獨的系統實例,並且每個租户都可以根據自己的需求對租用的系統實例進行個性化配置。
多租户技術可以實現多個租户之間共享系統實例,同時又可以實現租户的系統實例的個性化定製。通過使用多租户技術可以保證系統共性的部分被共享,個性的部分被單獨隔離。通過在多個租户之間的資源複用,運營管理維護資源,有效節省開發應用的成本。而且,在租户之間共享應用程序的單個實例,可以實現當應用程序升級時,所有租户可以同時升級。同時,因為多個租户共享一份系統的核心代碼,因此當系統升級時,只需要升級相同的核心代碼即可。
中文名
多租户技術
外文名
multi-tenancy technology
或    稱
多重租賃技術
屬    性
軟件架構技術
目    的
共用相同的系統或程序組件
要    求
確保各用户間數據的隔離性

多租户技術歷史

多租户技術源於1960年代,許多公司為了要使用更多的運算資源,向持有大型主機(Mainframe)的供應商租用一部份的運算資源,而這些用户經常會用到相同的應用程序,當時會以用户在登錄系統時輸入的數據來決定用户的帳户ID,基於這個ID,Mainframe的供應商即可利用此ID來計算運算的資源使用量,包含CPU,存儲器軟盤磁帶等,這個作法也被SAP公司用在其R/1到R/3的產品線。
到了1990年代,應用程序服務提供者服務(application service provider)模式出現,它的作法與運作模式與租用大型主機時相同,不過租用的資源是在軟件上,除了操作系統以外也包含了其上的應用程序,例如ERP系統或是CRM等應用,系統可能會運行在數台不同的機器上,或是在相同的主機但共享不同的數據庫,以區分並計算客户的資源使用量,藉以作為計費的標準,而此技術也有效的縮減供應商的實體機器成本(因為可以在一台電腦上同時運行多個用户所租用的應用程序進程)。到了現代,受歡迎的消費者導向Web應用程序(如Hotmail或Gmail等)也是以單一應用程序平台來支持所有的用户,這已經是多租户技術的自然演化的結果,多租户技術也可以讓客户中的一部份用户得以進一步定製化他們的應用程序。
在虛擬化(virtualization)技術的成熟與應用性的擴張之下,多租户技術可以駕馭虛擬化的平台,更強化在用户應用程序與數據之間的隔離,讓多租户技術能更加發揮它的特色。 [1] 

多租户技術概念與技術

在多租户技術中,租户(tenant)是指使用系統或電腦運算資源的客户,但在多租户技術中,租户包含在系統中可識別為指定用户的一切數據,包括帳户與統計信息(accounting data)、用户在系統中建置的各式數據、以及用户本身的定製化應用程序環境等,都屬於租户的範圍。租户使用供應商開發或建置的應用系統或運算資源,供應商所設計的應用系統會容納數個以上的用户在同一個環境下使用,為了讓多個用户環境能夠在同一個應用程序與運算環境上使用,則應用程序與運算環境必須要特別設計,除了可以讓系統平台允許多份相同的應用程序同時運行外,保護租户數據的隱私與安全也是多租户技術的關鍵之一。
技術上,多租户技術可以通過許多不同的方式來切割用户的應用程序環境或數據。
數據面(data approach):供應商可以利用切割數據庫(database),切割存儲區(storage),切割結構描述(schema)或是表格(table)來隔離租户的數據,必要時會需要進行對稱或非對稱加密以保護敏感數據,但不同的隔離作法有不同的實現複雜度與風險。
程序面(application approach):供應商可以利用應用程序掛載(hosting)環境,於進程(process)上切割不同租户的應用程序運行環境,在無法跨越進程通信的情況下,保護各租户的應用程序運行環境,但供應商的運算環境要夠強。
系統面(system approach):供應商可以利用虛擬化技術,將實體運算單元切割成不同的虛擬機,各租户可以使用其中一至數台的虛擬機來作為應用程序與數據的保存環境,但對供應商的運算能力要更要求。 [2] 

多租户技術實現方式

多租户技術的實現重點,在於不同租户間應用程序環境的隔離(application context isolation)以及數據的隔離(data isolation),以維持不同租户間應用程序不會相互干擾,同時數據的保密性也夠強。
應用程序部份:通過進程或是支持多應用程序同時運行的裝載環境(例如Web Server,像是Apache或IIS等)來做進程間的隔離,或是在同一個伺服程序(server)進程內以運行緒的方式隔離。
實現方式 實現方式
數據部份:通過不同的機制將不同租户的數據隔離,Force是採用中介數據(metadata)的技術來切割,微軟 MSDN 的技術文件則是展示了使用結構描述的方式隔離。
多租户就是説多個租户共用一個實例,租户的數據既有隔離又有共享,從而解決數據存儲的問題。從架構層面來分析,SaaS區別於傳統技術的重要差別就是Multi-Tenant模式。SaaS多租户在數據存儲上存在三種主要的方案,分別是
1.獨立數據庫
這是第一種方案,即一個租户一個數據庫,這種方案的用户數據隔離級別最高,安全性最好,但成本也高。
優點:
為不同的租户提供獨立的數據庫,有助於簡化數據模型的擴展設計,滿足不同租户的獨特需求;
如果出現故障,恢復數據比較簡單。
缺點:
增大了數據庫的安裝數量,隨之帶來維護成本和購置成本的增加。
這種方案與傳統的一個客户、一套數據、一套部署類似,差別只在於軟件統一部署在運營商那裏。如果面對的是銀行、醫院等需要非常高數據隔離級別的租户,可以選擇這種模式,提高租用的定價。如果定價較低,產品走低價路線,這種方案一般對運營商來説是無法承受的。
2.共享數據庫,隔離數據架構
這是第二種方案,即多個或所有租户共享Database,但一個Tenant一個Schema。
優點:
為安全性要求較高的租户提供了一定程度的邏輯數據隔離,並不是完全隔離;每個數據庫可以支持更多的租户數量。
缺點:
如果出現故障,數據恢復比較困難,因為恢復數據庫將牽扯到其他租户的數據;
如果需要跨租户統計數據,存在一定困難。
3.共享數據庫,共享數據架構
這是第三種方案,即租户共享同一個Database、同一個Schema,但在表中通過TenantID區分租户的數據。這是共享程度最高、隔離級別最低的模式。
優點:
三種方案比較,第三種方案的維護和購置成本最低,允許每個數據庫支持的租户數量最多。
缺點:
隔離級別最低,安全性最低,需要在設計開發時加大對安全的開發量;
數據備份和恢復最困難,需要逐表逐條備份和還原。
如果希望以最少的服務器為最多的租户提供服務,並且租户接受以犧牲隔離級別換取降低成本,這種方案最適合。

多租户技術特色

多租户技術有下列特色:
由於多租户技術可以讓多個租户共用一個應用程序或運算環境,且租户大多不會使用太多運算資源的情況下,對供應商來説多租户技術可以有效的降低環境建置的成本。包含硬件本身的成本,操作系統與相關軟件的授權成本都可以因為多租户技術,而由多個租户一起分擔。
通過不同的數據管理手段,多租户技術的數據可以用不同的方式進行數據隔離,在供應商的架構設計下,數據的隔離方式也會不同,而良好的數據隔離法可以降低供應商的維護成本(包含設備與人力),而供應商可以在合理的授權範圍內取用這些數據分析,以作為改善服務的依據。
多租户架構下所有用户都共用相同的軟件環境,因此在軟件改版時可以只發布一次,就能在所有租户的環境上生效。
具多租户架構的應用軟件雖可定製,但定製難度較高,通常需要平台層的支持與工具的支持,才可降低定製的複雜度。

多租户技術實務應用

多租户技術在實務上運用的成功且廣為人知的案例之一,是由Salesforce所建置的CRM應用系統,該公司除了Salesforce的CRM軟件以外,它還建置了Force平台即服務(PaaS)架構,以支持開發人員發展基於Force平台上的應用程序。
在雲計算的加持之下,多租户技術被廣為運用於開發雲各式服務,不論是IaaS,PaaS還是SaaS,都可以看到多租户技術的影子。
參考資料
  • 1.    高蕾, 楊燕, 鍾華,等. 面向多租户的門户資源管理框架[J]. 計算機工程與設計, 2012, 33(8):3016-3022.
  • 2.    朱久亮, 夏靜偉. 多租户技術在企業銷售管理系統中的設計與應用[J]. 中國電子商務, 2012(3):76-77.