云平台之多租户的实践—理论篇
文章插图
本文作者:何建辉(公众号:org_yijiaoqian)
前言在云领域我们经常会听到一个词:多租户 。 这个词在不同的语境中有着不同的含义 , 接下来将从理论到实践对以往的项目进行一次总结 , 同时实战一个Demo 。 本篇先从理论介绍云平台中的多租户的概念以及实现多租户支持的思路 。
多租户是什么多租户技术(Multi-TenancyTechnology)又称多重租赁技术:是一种软件架构技术 , 是实现如何在多用户环境下 (此处的多用户一般是面向企业用户)共用相同的系统或程序组件 , 并且可确保各用户间数据的隔离性 。 简单讲: 在一台服务器上运行单个应用实例 , 它为多个租户(客户)提供服务 。 从定义中我们可以理解:多租户是一种架 构 , 目的是为了让多用户环境下使用同一套程序 , 且保证用户间数据隔离 。 那么重点就很浅显易懂了 , 多租户的重 点就是同一套程序下实现多用户数据的隔离
需求分析传统软件模式 , 指将软件产品进行买卖 , 是一种单纯的买卖关系 , 客户通过买断的方式获取软件的使用权 , 软件的 源码属于客户所有 , 因此传统软件是部署到企业内部 , 不同的企业各自部署一套自己的软件系统 。
Saas模式 , 指服务提供商提供的一种软件服务 , 应用统一部署到服务提供商的服务器上 , 客户可以根据自己的实际 需求按需付费 。 用户购买基于WEB的软件 , 而不是将软件安装在自己的电脑上 , 用户也无需对软件进行定期的维护与管理
文章插图
在SaaS平台里需要使用共用的数据中心以单一系统架构与服务提供多数客户端相同甚至可定制化的服务 , 并且仍可 以保障客户的数据正常使用 。 由此带来了新的挑战 , 就是如何对应用数据进行设计 , 以支持多租户 , 而这种设计的 思路 , 是要在数据的共享、安全隔离和性能间取得平衡 。
多租户的数据库方案分析目前基于多租户的数据库设计方案通常有如下三种:
- 独立数据库
- 独立 Schema 共享数据库
- 共享数据库且共享数据表
文章插图
独立数据库:每个租户一个数据库 。
- 优点:为不同的租户提供独立的数据库 , 有助于简化数据模型的扩展设计 , 满足不同租户的独特需求;如果 出现故障 , 恢复数据比较简单;
- 缺点: 增多了数据库的安装数量 , 随之带来维护成本和购置成本的增加 。
共享数据库、独立 Schema共享数据库、独立Schema模式 , 是将多个或所有租户的数据放在一个数据库服务中 , 但是为每一个租户建立一个独立的schema 。 租户间数据彼此逻辑不可见 , 上层应用程序的实现和独立数据库一样简单 。 (补充:mysql数据中的schema比较特殊 , 并不是数据库的下一级 , 而是等同于数据库 。 )
优点:对于安全性要求较高的租户 , 是一种选择 。 提供了一定程度的逻辑数据隔离 , 但并不是完全隔离;每个数据库可支持更多的租户数量 。
缺点:如果出现故障 , 数据恢复比较困难 , 因为恢复数据库将牵涉到其他租户的数据;如果需要跨租户统计数据 , 存在一定困难 。 这种方案是方案一的变种 。 只需要安装一份数据库服务 , 通过不同的Schema对不同租户的数据进行隔离 。 由于数据库服务是共享的 , 所以成本相对低廉 。
推荐阅读
- 运动计数开发项目的对抗赛:飞算全自动软件工程平台碾压传统模式
- 虾米音乐正式宣告关停:国内音乐平台终告别“三国杀”,TME一家独大或将持续
- 人瑞人才(06919):未来3年系统平台将发力智能化,打造职业生态链平台
- 影像旗舰vivo X60系列正式开售 斩获多个线上平台双冠军
- 威刚为英特尔12代Alder Lake平台准备了64GB DDR5-8400内存模组
- 2020百度地图生态大会:开放平台十周年 为行业送出多个解决方案“大礼包”
- vivo新机亮相跑分平台 配8GB内存搭载天玑820芯片
- 不再是特例:Facebook将在平台上禁掉乔治亚州的政治广告
- 当AI从虚拟走向现实:大规模行业应用加速 开放AI平台成趋势
- 阿里云AIoT启动“堡垒行动”企业物联网平台年内覆盖1万家客户