平台SAAS强大的技术架构设计方案
一、业务背景
随公司业务不断扩展,应市场需求变化,针对公司自研平台需进行SaaS平台改造。
二、科技背景
多租户架构早已不是大厂的专利。随着SaaS服务的普及,越来越多的企业开始思考如何用一套系统服务多个客户,既要保证数据隔离,又要控制成本。多租户SaaS应用的架构设计模式应运而出。
三、怎样做SaaS平台
想要做SaaS平台,需从不同角度,不同来源进行收集和思考。例如目前市场上他们的SaaS平台是怎样做的,同事公司他们又是怎样做的,本公司若是做SaaS平台,哪些是可利用的经验,哪些需要本身进行创新改造。本文以多租户模式融合本平台实际场景来进行展述。
四、什么是多租户架构
多租户技能(英语:multi-tenancy technology)或称多重租赁科技,是一种
软件架构技术,它是在探讨与完成如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。多租户简单来说是指一个单独的实例可以为
多个组织服务。多租户技术为共用的数据中心内如何以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离。一个支持多租户技术的系统需要在设计上对它的数据和配置进行虚拟分区,从而使架构的每个租户或称组织都能够启用一个单独的系统实例,并且每个租户都可以根据自己的需求对租用的系统实例进行个性化配置。
多租户技术许可构建多个租户之间共享系统实例,同时又可以达成租户的系统实例的个性化定制。通过使用多租户技术允许保证系统共性的部分被共享,个性的部分被单独隔离。通过在多个租户之间的资源复用,运营管理维护资源,有效节省开发应用的成本。而且,在租户之间共享应用程序的单个实例,可以实现当应用程序升级时,所有租户可以同时升级。同时,因为多个租户共享一份环境的核心代码,因此当系统升级时,只应该升级相同的核心代码即可。
五、多租户架构概念及技术
在多租户技术中,租户(tenant)是指使用系统或电脑运算资源的客户,但在多租户技术中,租户包含在框架中可识别为指定用户的一切数据,包括帐户与统计信息(accounting data)、用户在架构中建置的各式数据、以及用户本身的定制化应用程序环境等,都属于租户的范围。租户使用供应商开发或建置的应用框架或运算资源,供应商所设计的应用系统会容纳数个以上的用户在同一个环境下使用,为了让多个用户环境能够在同一个应用程序与运算环境上使用,则应用程序与运算环境必须要特别设计,除了可以让环境平台允许多份相同的应用程序同时运行外,保护租户数据的隐私与安全也是多租户技术的关键之一。
技术上,多租户技术许可通过许多不同的方式来切割用户的应用程序环境或数据。数据面(data approach):供应商可以利用切割数据库(database),切割存储区(storage),切割结构描述(schema)或是表格(table)来隔离租户的资料,必要时会需要进行对称或
非对称加密以保护敏感数据,但不同的隔离作法有不同的实现复杂度与风险。程序面(application approach):供应商可以利用应用程序挂载(hosting)环境,于进程(process)上切割不同租户的应用程序运行环境,在无法跨越
进程通信的情况下,保护各租户的应用程序运行环境,但供应商的运算环境要够强。环境面(system approach):供应商许可利用
虚拟化技术,将实体运算单元切割成不同的虚拟机,各租户可以使用其中一至数台的虚拟机来作为应用程序与内容的保存环境,但对供应商的运算能力要更要求。
六、多租户架构实现方式
多租户手艺的实现重点,在于不同租户间应用程序环境的隔离(application context isolation)以及数据的隔离(data isolation),以维持不同租户间应用程序不会相互干扰,同时数据的保密性也够强。
应用程序部份:通过进程或是支持多应用程序同时运行的装载环境(例如Web Server,像是Apache或IIS等)来做进程间的隔离,或是在同一个伺服程序(server)进程内以运行绪的方式隔离。
实现方式数据部份:通过不同的机制将不同租户的数据隔离,Force是采用中介信息(metadata)的手艺来切割,微软 MSDN 的
技术文件则是展示了使用结构描述的方式隔离。
多租户就是说多个租户共用一个实例,租户的内容既有隔离又有共享,从而解决数据存储的难题。从架构层面来分析,SaaS区别于传统技术的重要差别就是Multi-Tenant模式。SaaS多租户在数据存储上存在三种主要的方案,
分别如下:
6.1.独立数据库
这是第一种方案,即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本也高。
优点