在云計算中,多租戶意味著云供應商的多個客戶使用相同的計算資源。盡管他們共享資源,但云客戶并不了解彼此,并且他們的數據完全分開。多租戶是云計算的重要組成部分;沒有它,云服務的實用性將大大降低。多租戶架構是許多類型的公共云計算中的一個特性,包括IaaS、PaaS、SaaS、容器和無服務器計算。
要了解多租戶,請考慮銀行業務的運作方式。多人可以將他們的錢存放在一家銀行,即使他們存放在同一個地方,他們的資產也是完全獨立的。銀行的客戶之間不互動,無法獲得其他客戶的資金,甚至彼此不知情。同樣,在公共云計算中,云供應商的客戶使用相同的基礎設施——通常是相同的服務器——同時仍然保持他們的數據和他們的業務邏輯分開和安全。
多租戶的經典定義是為多個用戶或租戶提供服務的單個軟件實例*。但是,在現代云計算中,該術語具有更廣泛的含義,指的是共享云基礎設施,而不僅僅是共享軟件實例。
什么是云計算?
在云計算中,應用程序和數據托管在各種數據中心的遠程服務器中,并通過 Internet 訪問。數據和應用程序集中在云中,而不是位于單個客戶端設備(如筆記本電腦或智能手機)或公司辦公室內的服務器上。
許多現代應用程序都是基于云的,這就是為什么,例如,用戶可以訪問他們的 Facebook 帳戶并從多個設備上傳內容。
多租戶有什么好處?
云計算的許多好處只有通過多租戶才能實現。以下是多租戶改進云計算的兩種重要方式:
更好地利用資源:為一個租戶保留一臺機器效率不高,因為一個租戶不太可能使用該機器的所有計算能力。通過在多個租戶之間共享機器,可以最大限度地利用可用資源。
降低成本:由于多個客戶共享資源,與每個客戶都需要自己的專用基礎設施相比,云供應商可以以低得多的成本向許多客戶提供服務。
多租戶的缺點是什么?
可能的安全風險和合規性問題:由于監管要求,一些公司可能無法將數據存儲在共享基礎架構中,無論多么安全。此外,來自一個租戶的安全問題或損壞的數據可能會傳播到同一臺機器上的其他租戶,盡管這種情況極為罕見,如果云供應商正確配置了他們的基礎架構,則不應發生這種情況。由于云供應商通常能夠比單個企業在安全方面投入更多,這些安全風險在一定程度上得到了緩解。
“嘈雜的鄰居”效應:如果一個租戶使用過多的計算能力,這可能會降低其他租戶的性能。同樣,如果云供應商已正確設置其基礎架構,則不應發生這種情況。
多租戶如何工作?
在這里,我們將更深入地研究使多租戶在不同類型的云計算中成為可能的技術原理。
在公共云計算中
想象一下可以在多輛汽車和車主之間輕松共享的特殊汽車引擎。每個車主對發動機的性能要求略有不同:一些車主需要強勁的 8 缸發動機,而另一些車主則需要更省油的 4 缸發動機。現在想象一下,這個特殊的引擎在每次啟動時都能自我變形,從而更好地滿足車主的需求。
這類似于許多公共云提供商實施多租戶的方式。大多數云提供商將多租戶定義為共享軟件實例。他們存儲有關每個租戶的元數據*,并使用此數據在運行時更改軟件實例以滿足每個租戶的需求。租戶通過權限相互隔離。盡管他們都共享相同的軟件實例,但他們每個人都以不同的方式使用和體驗軟件。
在容器架構中
容器是獨立的軟件捆綁包,其中包括應用程序、系統庫、系統設置以及應用程序運行所需的所有其他內容。容器有助于確保應用程序無論托管在何處都能以相同的方式運行。
容器彼此劃分為不同的用戶空間環境,每個容器都像運行在該主機上的唯一系統一樣運行。由于容器是自包含的,不同云客戶創建的多個容器可以在單個主機上運行。
在無服務器計算中
無服務器計算是一種模型,其中應用程序被分解為稱為函數的更小部分,每個函數僅按需運行,與其他函數分開運行。(這種云計算模型也稱為功能即服務或 FaaS。)
顧名思義,無服務器功能不在專用服務器上運行,而是在無服務器提供商基礎設施中的任何可用機器上運行。由于公司沒有分配自己的離散物理服務器,因此無服務器提供商通常會在任何給定時間在單個服務器上運行來自多個客戶的代碼——多租戶的另一個例子。
一些無服務器平臺使用 Node.js 來執行無服務器代碼。無服務器平臺Workers使用Chrome V8,其中每個功能都在自己的沙箱或單獨的環境中運行。這使無服務器功能彼此完全分離,即使它們在相同的基礎架構上運行也是如此。
在私有云計算中
私有云計算使用多租戶架構的方式與公共云計算非常相似。不同之處在于其他租戶不是來自外部組織。在公有云計算中,A 公司與 B 公司共享基礎設施。在私有云計算中,A 公司內的不同團隊相互共享基礎設施。