多租户特性一定是SaaS软件的必要特征吗?

news/2024/7/8 6:29:12 标签: 数据库, 操作系统

当用户选择一个SaaS技术路线的时候,会面临“多租户SaaS”和“单租户SaaS”两个选择。尽管大部分的ISV提供的是多租户的SaaS,但开发者同样需要知道这两种架构的区别,以保证选择了正确的路线。当前和未来的功能需求,行业的细分,安全的考虑,这些都是选择需要考虑的要素。

下面是一些关于“多租户SaaS”和“单租户SaaS”架构对比的汇总。

多租户特性一定是SaaS软件的必要特征吗?

什么是多租户SaaS架构?

在一个多租户的环境中,应用都是运行在同样的一个或者一组服务器上,被称为“单实例”架构(Single Instance)。多个租户的数据是保存在相同的位置,并且通常是依靠分区来确保租户之间的数据隔离。正因为所有的应用都运行在相同的服务器(组)上,就必须有一个标准的SaaS架构,包含了对硬件、网络以及操作系统的相同配置能力。

鉴于多个用户在运行相同的应用实例,并且所有的数据都保存在一个多租户隔离的数据库中,单一用户仅仅有有限的能力,或者压根没有能力,去做一些在基础功能集上的定制化。这个不仅指的是功能本身会受到限制,更说明在这种架构下很难实现定制化。因此,多租户比较适合通用类需求的客户,即不需要对主线功能进行调整或者重新配置的客户。

这种标准化对于一些希望使用开箱即用的软件的客户是一个福音。大部分知名的SaaS提供商,都非常擅长分析和预测他们客户的需求,并且以标准化的版本提供最相关的功能。很多时候一个“多租户SaaS”会选择一部分特定群体的客户作为他们预售版本的体验者,来快速验证和测试他们的产品。

关于多租户特性是否是SaaS软件的必要特征,业界一直有着争议。而且,这种特性还被一些SaaS提供商认为是“真SaaS”的标识特性。但是,我们可以从下面看到,单租户SaaS同样有着他们与众不同的优势。

什么是单租户SaaS架构?

单租户SaaS架构,有时也被称作多实例架构(Multiple Instance),指的是为每个客户单独创建各自的软件应用和支撑环境。单租户SaaS被广泛引用在客户需要支持定制化的应用场合,而这种定制或者是因为地域,抑或是他们需要更高的安全控制。通过单租户的模式,每个客户都有一份分别放在独立的服务器上的数据库操作系统,或者使用强的安全措施进行隔离的虚拟网络环境中。

在一个单租户SaaS的环境中,每个租户购买特定的软件实例,并通过客制化满足他们的特定需求。虽然这些云服务提供商提供了基础的功能,用户能够得到很多的可配置能力:比如,用户可以调整不同的配置需求,向内部数据库或者外部合作伙伴的数据库添加不同的模块。

究竟哪个更合适?

虽然多租户环境很安全,并且足以满足很多公司的需求,但单租户SaaS可以提供更高的安全管控,毕竟公司之间的数据泄漏的可能在技术上就被禁止了。出于这个原因,单租户的架构有时候适合某些需要安全管控、甚至必须有法律合规性要求的行业。同时,定制化需求大于通用化需求的软件,同样不适合采用多租户的架构。

不能单纯脱离应用场景来评价“多租户SaaS”和“单租户SaaS”谁更好,每个都有自己独特的差异化优势。如何使用,取决于你的运行位置、行业、安全规定、IT能力,以及相关的其他因素。


本文作者:佚名

来源:51CTO


http://www.niftyadmin.cn/n/1445133.html

相关文章

qss使用

qss相关语法,请百度 //新建qss文件.例如myStyl.qss QPushButton#IM_btn_hall {background-image: url(Resources/IM/im_btn_hall_normal.png);border:none; } QPushButton#IM_btn_hall:hover {background-image: url(Resources/IM/im_btn_hall_hover.png);border:n…

安全配置向导打造Win2003“铜墙铁壁”(转)

Windows Server 2003是大家最常用的服务器操作系统之一。虽然它提供了强大的网络服务功能,并且简单易用,但它的安全性一直困扰着众多网管,如何在充分利用Windows Server 2003提供的各种服务的同时,保证服务器的安全稳定运行&#…

QT 控件基础

//屏幕分辨率: QDesktopWidget* desktopWidget QApplication::desktop(); QRect screenRect desktopWidget->screenGeometry(); int g_nActScreenW screenRect.width(); int g_nActScreenH screenRect.height(); //固定控件的大小: setFixedSize(90,60)…

alexa 网站的 Site Stats 详解(转)

最近发现越来越多的人开始重视 alexa 的排名了,也有很多的网友关注自己在 alexa 的排名,也常常在论坛中问到关于 alexa 的问题,我想对于国内的网站建设者来说,在这个全英文的网站上查找对自己有利的信息,或者修正自己的…

c2w

c2w wchar_t* c2w(const char *str) {int length strlen(str)1;wchar_t *t (wchar_t*)malloc(sizeof(wchar_t)*length);memset(t,0,length*sizeof(wchar_t));MultiByteToWideChar(CP_ACP,0,str,strlen(str),t,length);return t; }

uva 11796 - Dog Distance(几何)

题目链接&#xff1a;uva 11796 - Dog Distance 将一只狗位移向量加到另一只上&#xff0c;即变成点到线段的最短距离。 #include <cstdio> #include <cstring> #include <cmath> #include <algorithm>using namespace std; const double pi 4 * atan…

QT子线程与主线程的信号槽通信

最近用QT做一个服务器&#xff0c;众所周知&#xff0c;QT的主线程必须保持畅通&#xff0c;才能刷新UI。所以&#xff0c;网络通信端采用新开线程的方式。在涉及到使用子线程更新Ui上的控件时遇到了点儿麻烦。网上提供了很多同一线程不同类间采用信号槽通信的方式&#xff0c;…

Oracle中如何去定位未知的对象(转)

Oracle中如何去定位未知的对象,未知的对象,开发技术前几天看见有人问怎么查找某个view引用了什么表,或者某个表被那些对象引用,偶当时没有注意,今天朋友问到了.我想是有view表达这种依赖关系的,于是&#xff0c;偶打开 dba studio ,进入 方案---视图---sys,然后快速浏览 dba_* …