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