在云计算中,多租户意味着云供应商的多个客户使用相同的计算资源。尽管他们共享资源,但云客户并不了解彼此,并且他们的数据完全分开。多租户是云计算的重要组成部分;没有它,云服务的实用性将大大降低。多租户架构是许多类型的公共云计算中的一个特性,包括IaaS、PaaS、SaaS、容器和无服务器计算。
要了解多租户,请考虑银行业务的运作方式。多人可以将他们的钱存放在一家银行,即使他们存放在同一个地方,他们的资产也是完全独立的。银行的客户之间不互动,无法获得其他客户的资金,甚至彼此不知情。同样,在公共云计算中,云供应商的客户使用相同的基础设施——通常是相同的服务器——同时仍然保持他们的数据和他们的业务逻辑分开和安全。
多租户的经典定义是为多个用户或租户提供服务的单个软件实例*。但是,在现代云计算中,该术语具有更广泛的含义,指的是共享云基础设施,而不仅仅是共享软件实例。
什么是云计算?
在云计算中,应用程序和数据托管在各种数据中心的远程服务器中,并通过 Internet 访问。数据和应用程序集中在云中,而不是位于单个客户端设备(如笔记本电脑或智能手机)或公司办公室内的服务器上。
许多现代应用程序都是基于云的,这就是为什么,例如,用户可以访问他们的 Facebook 帐户并从多个设备上传内容。
多租户有什么好处?
云计算的许多好处只有通过多租户才能实现。以下是多租户改进云计算的两种重要方式:
更好地利用资源:为一个租户保留一台机器效率不高,因为一个租户不太可能使用该机器的所有计算能力。通过在多个租户之间共享机器,可以最大限度地利用可用资源。
降低成本:由于多个客户共享资源,与每个客户都需要自己的专用基础设施相比,云供应商可以以低得多的成本向许多客户提供服务。
多租户的缺点是什么?
可能的安全风险和合规性问题:由于监管要求,一些公司可能无法将数据存储在共享基础架构中,无论多么安全。此外,来自一个租户的安全问题或损坏的数据可能会传播到同一台机器上的其他租户,尽管这种情况极为罕见,如果云供应商正确配置了他们的基础架构,则不应发生这种情况。由于云供应商通常能够比单个企业在安全方面投入更多,这些安全风险在一定程度上得到了缓解。
“嘈杂的邻居”效应:如果一个租户使用过多的计算能力,这可能会降低其他租户的性能。同样,如果云供应商已正确设置其基础架构,则不应发生这种情况。
多租户如何工作?
在这里,我们将更深入地研究使多租户在不同类型的云计算中成为可能的技术原理。
在公共云计算中
想象一下可以在多辆汽车和车主之间轻松共享的特殊汽车引擎。每个车主对发动机的性能要求略有不同:一些车主需要强劲的 8 缸发动机,而另一些车主则需要更省油的 4 缸发动机。现在想象一下,这个特殊的引擎在每次启动时都能自我变形,从而更好地满足车主的需求。
这类似于许多公共云提供商实施多租户的方式。大多数云提供商将多租户定义为共享软件实例。他们存储有关每个租户的元数据*,并使用此数据在运行时更改软件实例以满足每个租户的需求。租户通过权限相互隔离。尽管他们都共享相同的软件实例,但他们每个人都以不同的方式使用和体验软件。
在容器架构中
容器是独立的软件捆绑包,其中包括应用程序、系统库、系统设置以及应用程序运行所需的所有其他内容。容器有助于确保应用程序无论托管在何处都能以相同的方式运行。
容器彼此划分为不同的用户空间环境,每个容器都像运行在该主机上的唯一系统一样运行。由于容器是自包含的,不同云客户创建的多个容器可以在单个主机上运行。
在无服务器计算中
无服务器计算是一种模型,其中应用程序被分解为称为函数的更小部分,每个函数仅按需运行,与其他函数分开运行。(这种云计算模型也称为功能即服务或 FaaS。)
顾名思义,无服务器功能不在专用服务器上运行,而是在无服务器提供商基础设施中的任何可用机器上运行。由于公司没有分配自己的离散物理服务器,因此无服务器提供商通常会在任何给定时间在单个服务器上运行来自多个客户的代码——多租户的另一个例子。
一些无服务器平台使用 Node.js 来执行无服务器代码。无服务器平台Workers使用Chrome V8,其中每个功能都在自己的沙箱或单独的环境中运行。这使无服务器功能彼此完全分离,即使它们在相同的基础架构上运行也是如此。
在私有云计算中
私有云计算使用多租户架构的方式与公共云计算非常相似。不同之处在于其他租户不是来自外部组织。在公有云计算中,A 公司与 B 公司共享基础设施。在私有云计算中,A 公司内的不同团队相互共享基础设施。