随着SaaS软件日益流行,如何为企业用户提供即统一又相互独立的服务,成为很多基础软件商的课题,因而租户能力正受到更多关注。另一方面,随着分布式数据库的流行,如何充分利用分布式环境的算力及存储资源为不同业务服务,也同样对租户能力提出的要求。本文针对常用的租户实现方法、技术路线进行说明,重点说明场景数据库的租户能力并加以对比。
创新互联建站坚实的技术研发基础赢得了行业内的良好口碑,公司成立10年来,为成百上千企业提供过网站建设、软件开发、搜索引擎优化技术、互联网大数据整合营销服务,多年的技术服务成功经验、众多的客户使我们能懂得更多,做得更好。"让您的网站跑起来"是我们一直追求的目标!
多租户(Multi Tenancy/Tenant)是一种软件架构,是实现如何在多用户环境下共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。与之相对应的就是单租户SaaS架构(也被称作多实例架构(Multiple Instance))。两者的区别在于,单租户是为每个客户单独创建各自的软件应用和支撑环境。后者通常被广泛引用在客户需要支持定制化的应用场合。
很多平台类应用或系统(如电商 CRM 平台、仓库订单平台等等),它们的服务模型是围绕用户维度(这里的用户维度可以是一个卖家或品牌,可以是一个仓库等)展开的。因此,这类型的平台业务,为了支持业务系统的水平扩展性,业务的数据库通常是按用户维度进行水平切分。当平台类应用的一些用户慢慢成长为大用户(比如大品牌、大卖家、大仓库等)后,这些大用户由于其数据量或流量明显要比其它用户多得多,容易出现如业务热点瓶颈、资源使用不均、服务品质受损等问题。SaaS 多租户模型作为一种应用的架构,常用来解决业务的上述问题。在SaaS多租户模型中,业务系统会需要服务多个用户,每个用户(或每批用户)可以被视为一个租户。SaaS 多租户解决业务系统稳定性问题以及租户资源弹性定制的核心思路,就是租户间的资源隔离及数据隔离。针对多租户的问题,可以有多种解决思路。
针对多租户需求,常见有三种构建模式:
从上面多种构建模式对比可见,各方案有着鲜明的优缺点。在技术实现上,可分为两种情况,一种是采用数据库内置能力来支持租户,一种是在应用侧来解决。针对前者,后文将着重谈谈各数据库的租户能力;后者往往依赖于应用研发能力。特别是共享库、Schema、表的模式,具有成本低的明显优势,通常在应用研发侧来解决,但这一模式面临诸多难点,在实际使用中常通过中间件策略增强这一模式能力,补齐短板。
如上面所说,采用中间件策略可以解决第三种模式的短板,这其中需要着重解决以下问题:
有很多数据库已经内置了多租户能力,用户可很方便地基于此快速开发 SaaS 类应用。下面简单对比下:
Oracle 多租户功能允许在一个数据库实例中同时运行多个独立的数据库,这些数据库被称为插件数据库(简称 PDB)。多租户功能通过将不同的 PDB 分离在不同的存储空间中,实现数据和应用程序的隔离,从而提高数据库的利用率和灵活性。以下是 Oracle 多租户功能的主要特点:
PostgreSQL 数据库本身并没有类似 Oracle 数据提供完善的租户能力,但是可以结合多种开源技术和框架,实现广义软件架构上的多租户模式。PostgreSQL 支持实例-库-Schema三级,也支持行级安全策略,可通过上面技术能力,实现在库、Schema和行级别的租户能力。
TiDB 采用了双层资源管控机制来实现更精确的管控。“流量控制”模块控制资源限额,确保仅在限额内的操作才能得以执行;“调度控制”模块则对队列中的任务设置不同的优先级,以确保在负载剧烈变化或超负荷运行时,高优先级的任务能够得到快速反馈。TiDB 资源管控特性提供了两层资源管理能力,包括在 TiDB 层的流控能力和 TiKV 层的优先级调度的能力。将用户绑定到某个资源组后,TiDB 层会根据用户所绑定资源组设定的配额对用户的读写请求做流控,TiKV 层会根据配额映射的优先级来对请求做调度。
OceanBase 数据库采用了多租户架构。多租户架构适用于资源整合、SaaS 服务等场景,同时也降低了运维复杂度。集群偏向于部署层面的物理概念,是 Zone 和节点的集合,Zone 和节点具有部署地域(称为 Region)等属性;而租户则偏向于资源层面的逻辑概念,是在物理节点上划分的资源单元,可以指定其资源规格,包括 CPU、内存、日志盘空间、IOPS 等。租户类似于传统数据库的数据库实例,租户通过资源池与资源关联,从而独占一定的资源配额,可以动态调整资源配额。在租户下可以创建 Database、表、用户等数据库对象。
通过 Unit 的概念,我们将 OceanBase 数据库的物理概念和逻辑概念进行了关联。每个租户有若干 Unit ,分布于若干 Zone 的若干节点上。而每个节点上分布有若干个 Unit ,这些 Unit 归属于不同租户。概括的讲:集群由节点组成,节点是 Unit 的容器。租户由 Unit 组成,Unit 是数据库对象的容器。
PolarDB-X 是阿里云旗下一款分布式数据库产品。它通过结合非模板化二级分区与Locality两项能力,来解决租户场景问题。
当前名称:数据库租户能力大调研
文章链接:http://www.shufengxianlan.com/qtweb/news0/539550.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联