多租户技术

Multi-Tenancy多租户模式

≡放荡痞女 提交于 2020-03-10 16:03:49
真正意义上的SaaS一定是多租户的,但是多租户根据隔离程度的不同又分为不同模式。 多租户根据隔离程度和共享程度分为三种模型,其实就是在共享程度与隔离程度的权衡选择。 共享程度越高,租户成本自然越低,技术实现难度越高,运维难度越大。 隔离程度越高,租户成本自然越高,技术实现难度越低,运维难度越低。 三种多租户模式 第一个示例使用每租户的独立应用程序和其自己的数据库。 第二个示例使用多租户应用,并且每个租户都具有一个数据库。 第三个示例使用多租户应用,并且具有分片式多租户数据库。 三种模型,从左向右,资源共享程度依次变高,当然成本也就逐步下降,但与之带来的就是技术难度也在大幅增加。 Standalone APP :“每租户一个独立应用程序”模式 “每租户一个独立应用程序”模式使用单个租户应用程序,并且每个租户具有一个数据库。 每个租户的应用,包括其数据库,均部署到单独的资源组。 可在服务提供商的订阅或租户的订阅中部署资源组,并由提供程序代表租户进行管理。 每租户独立应用程序模式提供了最佳的租户隔离,但是它的经济成本通常是最高的,因为无法跨多个租户共享资源。 此模式非常适合于较为复杂并部署到较小数量的租户的应用程序。 相较其他模式,使用独立部署,能够更轻松地为每个租户自定义应用程序。 Database per Tenant:“每个租户一个数据库”模式 “每个租户一个数据库

何谓多租户模式 ?

♀尐吖头ヾ 提交于 2020-03-10 01:30:18
一、什么是多租户模式 多租户模式的定义:单个产品实例为多个用户提供服务,同时用户可按需购买使用产品资源,用户数据相互隔离。 定义里的用户即租户,租户狭义上理解就是使用系统的人。广义上来说还应该包括创建的系统、数据等一切与当前租户有关的系统资源。 二、举个栗子 2.1 传统模式 假设我们有一个学生管理系统,有课程查询、成绩查询两个功能,每个学生都有账号可以登陆,使用系统中的这两个功能。然后我们把这个系统卖给很多个学校去使用,这时候需要给每个学校去部署一套系统。 2.2 多租户模式 还是上面的系统,结合第一章节的定义,我们看多租户模式下的系统架构,这时候我们只有一个学生管理系统实例,每个学校使用的时候首先以学校为单位进行租户创建,然后可以按需购买系统功能,比如只需要成绩查询,这里的每个学校就是一个租户。 三、几种数据隔离模式 3.1 共享数据表,租户ID隔离 这种模式也是我们平日里系统隔离用户使用的模式,既在表中加一个用户ID字段,多租户这里就是在表中多加一个租户ID字段进行数据区分,登陆哪个租户就通过ID查询到对应租户的数据。拿成绩表的查询SQL举例就是: select * from t_score where tenantid = '租户的ID' 3.2 共享数据库,Schema隔离 该模式就是共享一个数据库实例,然后根据租户建立多个Schema,以Mysql数据库为例

如何理解多租户架构?

痞子三分冷 提交于 2019-12-09 07:47:26
如何理解多租户架构? 引用: https://www.cnblogs.com/pingfan21/p/7478242.html    前段时间公司产品进行了架构的进化,进化到了多租户架构。当我第一次听到多租户时,我也挺纳闷,不理解。但当我逐渐的翻阅资料,以及研发功能时。不断的加深了对多租户的理解。尽管我现在也只是浅浅的懂一点而已。   OK,Let's get this straight(让我们搞懂它),接下来让我们问自己几个问题:   1.什么是多租户架构?   2.多租户架构的优缺点?   3.多租户架构的适用场景?   让我们带着这几个问题进入下面的阅读。 一、对多租户的理解   多租户定义:多租户技术或称多重租赁技术,简称SaaS,是 一种软件架构技术 ,是实现如何在 多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件 ,并且可 确保各用户间数据的隔离性 。简单讲:在一台服务器上运行单个应用实例,它为多个租户(客户)提供服务。从定义中我们可以理解:多租户是一种架构,目的是为了让多用户环境下使用同一套程序,且保证用户间数据隔离。那么重点就很浅显易懂了, 多租户的重点就是同一套程序下实现多用户数据的隔离 。对于实现方式,我们下面会讨论到。   在了解详细一点:在一个多租户的结构下,应用都是运行在同样的或者是一组服务器下,这种结构被称为“单实例”架构