龙空技术网

入门级SaaS多租户概念剖析

零壹榜单 297

前言:

而今你们对“apache多租户”大概比较珍视,同学们都需要知道一些“apache多租户”的相关知识。那么小编也在网上汇集了一些有关“apache多租户””的相关知识,希望各位老铁们能喜欢,大家快快来学习一下吧!

其实,现在有很多软件类公司都在做SaaS化产品,都在提什么软件SaaS化、系统SaaS化、平台SaaS化等等。但最开始的时候,相信很多人对SaaS的理解都是基于节约成本、按需付费、即租即用等等这些概念而建立起来的。然而这只是一些浅层的概念,很多人对于一些SaaS技术问题还是知之甚少,对于SaaS类产品中“租户”理解相对也比较模糊,“多租户”与“单租户”二者之间的区别更是一头雾水。

本文将详细讲解、描述关于SaaS多租户概念及对应几种不同的实现方式,便于大家对SaaS有更深入的理解,及有助于SaaS类产品的设计、实现。

多租户概念多租户技术(英语:multi-tenancy technology)或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。多租户简单来说是指一个单独的实例可以为多个组织服务。多租户技术为共用的数据中心内如何以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离。一个支持多租户技术的系统需要在设计上对它的数据和配置进行虚拟分区,从而使系统的每个租户或组织都能够使用一个单独的系统实例,并且每个租户都可以根据自己的需求对租用的系统实例进行个性化配置。多租户技术可以实现多个租户之间共享系统实例,同时又可以实现租户的系统实例的个性化定制。通过使用多租户技术可以保证系统共性的部分被共享,个性的部分被单独隔离。通过在多个租户之间的资源复用,运营管理维护资源,有效节省开发应用的成本。而且,在租户之间共享应用程序的单个实例,可以实现当应用程序升级时,所有租户可以同时升级。同时,因为多个租户共享一份系统的核心代码,因此当系统升级时,只需要升级相同的核心代码即可。多租户实现方式多租户技术的实现重点,在于不同租户间应用程序环境的隔离(application context isolation)以及数据的隔离(data isolation),以维持不同租户间应用程序不会相互干扰,同时数据的保密性也够强。应用程序部分:通过进程或是支持多应用程序同时运行的装载环境(例如Web Server,像是Apache或IIS等)来做进程间的隔离,或是在同一个伺服程序(server)进程内以运行绪的方式隔离。数据部分:通过不同的机制将不同租户的数据隔离,Force是采用中介数据(metadata)的技术来切割,微软 MSDN 的技术文件则是展示了使用结构描述的方式隔离。多租户就是说多个租户共用一个实例,租户的数据既有隔离又有共享,从而解决数据存储的问题。从架构层面来分析,SaaS区别于传统技术的重要差别就是Multi-Tenant模式。SaaS多租户在数据存储上存在三种主要的方案,分别是:

1. 独立数据库

这是第一种方案,即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本也高。

优点:为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复数据比较简单。

缺点:增大了数据库的安装数量,随之带来维护成本和购置成本的增加

这种方案与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在运营商那里。如果面对的是银行、医院等需要非常高数据隔离级别的租户,可以选择这种模式,提高租用的定价。如果定价较低,产品走低价路线,这种方案一般对运营商来说是无法承受的。

2. 共享数据库,隔离数据架构

这是第二种方案,即多个或所有租户共享Database,但一个Tenant一个Schema。

优点:为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可以支持更多的租户数量。

缺点:如果出现故障,数据恢复比较困难,因为恢复数据库将牵扯到其他租户的数据;如果需要跨租户统计数据,存在一定困难。

3. 共享数据库,共享数据架构

这是第三种方案,即租户共享同一个Database、同一个Schema,但在表中通过TenantID区分租户的数据。这是共享程度最高、隔离级别最低的模式。

优点:三种方案比较,第三种方案的维护和购置成本最低,允许每个数据库支持的租户数量最多。

缺点:隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量;数据备份和恢复最困难,需要逐表逐条备份和还原;如果希望以最少的服务器为最多的租户提供服务,并且租户接受以牺牲隔离级别换取降低成本,这种方案最适合。

总结

上面主要介绍了多租户技术的概念和实现方式,我们对于多租户技术有了一定的了解。最后,给大家推荐一款多租户技术应用最为成功的一个产品案例,它是由Salesforce公司所提供的在线CRM(客户关系管理系统)应用系统。大家也可以从中参考学习。

感兴趣的同学,记得点赞[赞]并“关注”[握手]本头条号,一起指间Coding[握手]

标签: #apache多租户