作为一家公司,我们从提供商那里租赁了一个托管服务器。从这个意义上说,我们的服务器是一个单独的租户服务器。在这个服务器上,我们有多个客户数据库。每个客户都有自己的数据库。
客户问我们是单租户还是多租户解决方案。在我们看来,我们是服务器的唯一租户。但是,对客户的正确答案是什么呢?
发布于 2014-08-21 19:06:11
你提供了一个多租户解决方案。
在一个服务器上放置多个客户(也称为租户)数据和应用程序。他们共享核心基础设施。如果那台服务器坏了,就会把他们全毁了。因此,多租户。
别为此感到难过。从本质上说,所有的服务提供商都是多租户,从设计和必要性来看。每个组织都有某种级别的共享基础结构。如果您的互联网连接,网络路由器,电子邮件系统,或电话系统崩溃,多个客户仍将受到负面影响。
问题不在于您是否是租用服务器的唯一用户。当然,如果您与其他公司共享您的服务器,或者您正在/正在运行于AWS、Heroku或Rackspace等基本上是多租户的云实例,这将使您更深入地进入“多租户”领域。
正如埃斯本·斯科夫·彼得森所建议的那样,如果您将所有客户的信息转储到一个数据库中,数据库中只有customerId或tenantId列,那么这显然是多租户。
但是,使用您的全部租用服务器并将您的客户数据库分离,虽然很好,但并不能使您成为真正的单租户解决方案。
核心问题是,您的多个客户所共享的基础设施有多少,共享的深度和紧密程度,以及他们彼此之间的隔离和隔离程度。在房地产的概念中,it的租赁是一个连续体,而不是一个二元的单一/多重条件。
即使你拥有自己的房子,几乎每个住在那里的人都可以进入房子的所有部分;他们可能会一起吃饭和看电视。在一幢大公寓楼里,有很多单独的单元,但是231号的房客不能自由地从S冰箱里来吃东西,也不能在没有具体邀请的情况下慢慢来看治安重播。虽然他们公寓里的家庭可能和单租户的房子完全一样,但这并不是所有房客都可以免费享用的;人们期望他们共用相同的屋顶、停车场、邮件区和走廊,但公寓仍然是单独的空间。还有更多共享的例子,比如寄宿屋和购物中心,个别租户可能有自己的空间,但也有很大的公共空间供吃饭、厕所和聚会,每个人都共享。在单个/多个连续体上的每一个点中,都有一些共享,但共享的范围不同,由谁共享,有什么限制。
在您的示例中,您的所有租户共享一台服务器。每个虚拟机或系统分区是否运行?您为每个数据库分离数据库,但它们是否由公共DBMS引擎管理?
这里的根本问题是孤立。越少的孤立和越多的分享,就越深入到你已经探索过的多租户。那么:一个客户的数据和另一个客户的数据有多大的区别?某个客户的数据或应用程序的病毒、流氓程序或流氓用户会以某种方式查看或更改属于另一客户的数据吗?如果在一个客户的应用程序中存在一个失控的查询或无限循环,那么系统中的所有性能会被卷入其中,从而拒绝其他客户访问他们的数据/应用程序吗?
所需隔离程度将因客户而异。一些人将接受像Google和Google这样的深度多租户服务,而不会有任何疑虑。其他人则对运行在不同的、未共享的硬件和基础设施上的服务望而却步--这是最接近“单一租户”的场景。对他们来说,即使在单独的虚拟机(VM)或硬件分区(如IBM )中运行每个客户的应用程序和数据,也不是“足够好”的分离和隔离。
现实情况是,今天的大多数服务都是以某种程度的多租户方式运作的。即使在单个企业中也是如此,在这些企业中,数据中心越来越多地以高度的服务器整合和虚拟化方式运行。云和其他外部服务提供商基本上是多租户。多租户的典型程度也在增加.更多的服务正在多个租户之间更紧密地共享。这就是为什么像甲骨文和NetApp这样的基础设施提供商提出了一个特别的观点,提供旨在支持多个客户数据的特性,由同一个存储管理器来管理。
要真正回答客户的问题,您需要解释哪些组件是共享的。如果你在自己独特的虚拟机中运行每个客户,使用他们自己独特的数据库引擎,但是那些VM运行在共享硬件上--这可能已经足够好了,现在,可以成为一个可信的“主要是单个租户”的答案。您仍然需要公开您的共享基础设施。根据配置方式的不同,将您的解决方案描述为“多实例”也是公平的--承认存在共享的基础设施,但建议更多的隔离。但是,如果您在一台服务器下运行,而没有在它自己的VM中使用每个客户,或者使用由公共数据库引擎管理的所有客户的单独数据库,或者在公共存储场上运行,那么“多租户”是唯一可能的诚实答案。
发布于 2014-08-21 12:22:37
答案是单租户,因为多租户设置需要将多个客户放在同一个db中。经验法则。如果数据库中有一个tenantId列,那么您可能是多租户。
https://softwareengineering.stackexchange.com/questions/253990
复制相似问题