什么是多租户,其优缺点是什么?
- 从软件的单个共享实例将软件交付给多个客户端组织(或承租者)的能力是 Web 交付解决方案的重要要求。例如,假设有一个由银行服务提供者作为服务提供的简单银行应用程序。本上下文中的多租户 是指从银行应用程序的单个共享实例向多个银行提供银行服务的能力。图 1 说明了从共享的应用程序服务器、数据库、操作系统和物理服务器向两个银行(北卡罗来纳州第一银行和加拿大第二银行)提供的多承租银行服务。
图 1. 使用共享中间件和硬件为银行业务构建的示例 Web 交付的多承租服务
- 上图应该很形象的说明了什么是多租户,说的更容易理解一点就是我只开发一个application,并且只部署一次,但是可以为多个购买企业服务。这些企业对软件的基本的需求是一样的,比如任何一个大学,都需要有一个基础信息管理系统,这些基础系统的功能基本上就是一样的。原来的做法是每个大学部署一套基础管理系统,并且附带的部署一个数据库服务器。这就造成了资源的浪费与成本的加大。多租户就是为了解决这个问题而提出的概念。它使得多个企业之间可以共享一套资源,但却能提供个性化的服务。
多租户的优缺点:
优点:
- 多租户的主要优点是具有成本高效性。在承租者之间共享软件、硬件、应用程序开发和维护成本可以降低每个承租者的成本。而且,在承租者之间共享应用程序的单个实例可以提供其他好处,例如,当升级应用程序时,所有承租者可以同时升级。
缺点:
- 隔离:因为承租者共享软件和硬件的同一实例,所以一个承租者可能会影响其他承租者的软件的可用性和性能。例如,如果共享的软件没有充足的安全保障措施,则可能会发生因一个承租者关闭共享软件而导致对共享该实例的所有承租者拒绝服务。
- 安全性:如果共享软件没有充分的安全保障措施,则一个承租者的用户可能会访问属于另一个承租者的数据。
- 自定义能力:因为软件是在承租者之间共享的,所以各个承租者不可能自定义该软件。例如,在没有充足的扩展点的情况下,一个承租者不可能为业务流程提供自己的实现。
- 应用程序升级将为承租者带来问题:同时升级共享的软件可能并不是所有承租者都希望的。
- 恢复:在承租者之间共享数据库使得很难为每个承租者单独备份和恢复数据。
SaaS
- SaaS是Software-as-a-Service(软件即服务)的简称,随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。它与“on-demand software”(按需软件),the application service provider(ASP,应用服务提供商),hosted software(托管软件)所具有相似的含义。它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务。对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。
多租户与SaaS:
- 多租户就是说多个租户共用一个实例,租户的数据既有隔离又有共享,从而解决数据存储的问题。从架构层面来分析,SaaS区别于传统技术的重要差别就是Multi-Tenant模式。不过,构建多租户解决方案还需要解决若干技术难题。
面临的挑战
解决方案开发人员面临的技术挑战包括:
- 访问控制:如何在承租者之间共享应用程序资源(例如,虚拟门户、数据库表、工作流、Web 服务和 Java? 2 Platform Enterprise Edition (J2EE) 构件),以便只有属于承租者的用户可以访问属于该承租者的实例?例如,如何确保其他银行(如北卡罗来纳州第一银行)的用户不能访问加拿大第二银行的资源(如虚拟门户)?
- 自定义能力:
- 数据库:在一个承租者不影响其他承租者的情况下,如何自定义共享的数据库模式?例如,在不影响北卡罗来纳州第一银行的模式定义的情况下,加拿大第二银行如何将新的数据字段引入客户概要的共享数据库表?
- 用户界面:如何仅通过配置来自定义网站外观(即,在不更改代码的情况下)?例如,如何确保北卡罗来纳州第一银行和加拿大第二银行的银行管理员可以配置不同的设计,并在其客户概要 Portlet 中显示其他字段?
- 业务逻辑:在不进行代码更改的情况下,如何允许为每个承租者自定义业务逻辑?例如,北卡罗来纳州第一银行如何使用不同于加拿大第二银行的最小信用记录自动拒绝贷款申请?
- 工作流:您如何让承租者银行在共享的工作流中自定义人工任务和其他有条件任务的分配?例如,北卡罗来纳州第一银行如何确保将共享工作流中的贷款审批任务仅分配给北卡罗来纳州第一银行的员工?
- 承租者预置: 如何自动执行新承租者的预置?例如,如何使用非常少的手动步骤引入新银行(例如 Fairfield Trust 第三银行)?
- 基于使用情况的测定:如何记录服务的使用情况,以便仅根据服务使用情况向每个承租者收取服务使用费?例如,银行服务提供者管理员如何测定承租者北卡罗来纳州第一银行和加拿大第二银行的服务使用情况,以及他们的客户调用贷款申请服务的次数?
服务提供者面临的技术挑战包括:
- 数据库共享、自定义、备份和特定于承租者的数据的恢复:服务提供者如何基于性能、管理和可扩展性标准在不同的数据库划分模式之间进行选择?例如,服务提供者如何满足从多个承租者之间共享的表仅备份自己数据的加拿大第二银行的灾难恢复要求?
- 快速支持现有 Web 服务的多租户:如何在很少或不进行代码更改的情况下使单个承租者的 Web 服务支持多租户?例如,在不对 Web 服务接口和实现进行代码更改的情况下,如何使单个承租者的信用审核服务支持多租户?
- 在大型企业中管理大量的第三方服务提供者和部门服务客户之间的连接性:在 Web 交付的应用程序中,大型企业中的业务部门 (LOB) 表现了承租者的许多特征。同一企业中不同的业务部门可以使用来自不同的第三方或内部服务提供者的服务。在企业中,大量的此类服务提供者可能导致中心 IT 部门的管理问题。例如,银行服务提供者企业中的不同业务部门(如信用额度和抵押贷款部门)可能使用不同的信用审核服务提供者。中心 IT 部门如何监视、授权和测定企业中不同业务部门的多个信用审核服务的使用。
- 可伸缩性改进了硬件使用情况和特定于承租者的服务质量 (QoS):服务提供者如何改进在不同承租者之间共享的硬件使用和提供可绅缩性?服务提供者如何为不同的承租者提供不同的服务质量?例如,您如何满足有别于加拿大第二银行的服务质量需求,以便使用专用硬件承载其服务并收取较高的服务使用费用?
总结:
- 可扩展的多承租是 Web 交付 (SaaS) 解决方案的重要需求。不过,构建多承租解决方案还需要解决若干技术难题。本系列教程将带你一步步的实现简单的多租户效果。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-04 11:58:04