分享

科学网—Force.com的多租户架构理解(一)

 事预则成 2011-08-19

Force.com的多租户架构

理解Salesforce.com的互联网应用开发平台的设计

摘要 Force.com是如今正在使用的优秀的按需应用程序开发平台,支持47000 +个组织。个别企业和商业软件即服务(SaaS)供应商相信该平台可以提供强大、可靠和网络规模的应用。为了满足其庞大的用户人口要求,Force.com以元数据驱动的软件架构为基础,构建多租户应用。本文阐述了这项专利技术,它使Force.com平台对于任何类型的应用来说都是快速的、可扩展的和安全的。

引言

历史表明,每一个如此频繁和增量的技术上的进步,以及商业模式的变化,造就了软件应用方式的重大转变,包括应用程序的设计、建造,并交付最终用户。个人电脑、计算机网络和图形用户界面(UI)的发明,产生了客户端/服务器应用程序,而不再是昂贵、缺乏弹性的字符模式大型机应用。而今天,可靠的宽带因特网接入、面向服务的架构(SOA)以及管理专用交付应用程序的高成本和低效率,驱使向一种可分解、可管理的、共享的、基于Web的所谓软件即服务(SaaS)的服务交付模式的转变。

每一个模式转变都会带来一套新技术的挑战,SaaS也不例外。然而,现有的应用程序框架并不是旨在解决的特殊需要SaaS的。这一空白,造成了另一个新的范式转变——平台即服务(PaaS)。托管的应用软件平台在专门设计的环境中被管理,以满足构建SaaS应用的独特挑战,并以更符合成本效率的方式交付这些应用。

本文的重点是多租户,一个能大大有助于改善管理SaaS应用的基本设计方法。本文定义了多租户,解释了多租户的好处,并演示了为什么元数据驱动架构是实施多租户的首要选择。经过这些一般性的介绍,接下来本文大部分解释了世界一流的PaaS——Force.com的技术设计,它为互联网规模的应用提供了可交付使用的多租户应用。该文详细阐述了Force.com的专利元数据驱动的体系结构组件,提供了对其特性的理解,这些特性用于提供可靠、安全、可扩展的多租户应用。

<!--[if !supportLists]-->1. <!--[endif]-->多租户应用

为了降低成本,向许多不同的用户组提供相同的应用,越来越多的应用是多租户的,而不是单一租户的。传统的单一租户应用只是为了满足一个组织的需要,要求一套专门设置的资源,而一个多租户应用程序能通过使用硬件资源和人员管理单一的软件实例,来满足多个租户(公司或部门内等)的需求,如(图1)。

1:多租户应用成本高效地共享单一堆栈的资源,以满足多组织需求。

租户们使用多租户服务,相互之间实现虚拟隔离:组织可以使用和自定义一个应用程序,就像它们各自拥有一个单独的实例一样,而他们的数据和自定义相对于所有其他租户的活动来说保持安全和绝缘。这个对于任何特定的租户来说的单一应用实例,可以在任何特定时间运行时发生变体。

多租户是一种架构方法,它同时给应用软件供应商和用户带来益处。多个组织操作一个应用程序实例为供应商带来了巨大的经济效益。只要一组硬件资源就可以满足所有用户,只需相对较少的、有经验的管理人员就可以高效管理一个软硬件堆栈,开发人员只需在一个平台(操作系统,数据库等)上构建和支持单一的代码库。反过来,多租户带来的经济性也使应用程序供应商付出较低的成本为客户提供服务。每个参与者均受益。

多租户的附带好处包括提高了质量、用户满意度和客户忠诚度。不同于单一租户应用程序,应用软件提供商提供超出已有范围之外的孤岛部署,而多租户应用程序则是一个由供应商自行主办的大社区。这种设计转变使得供应商可以从集体用户群(他们的查询响应速度很慢,也会发生错误等)收集业务信息,并频繁、增量式地改善服务,以利于整个用户社区。

基于多租户平台的两个额外的好处是协作和集成。因为所有用户运行在一个空间,很容易让不同应用的用户访问的特定的数据集。此功能大大简化了整合相关应用和他们的数据管理所必需的努力。

<!--[if !supportLists]-->2. <!--[endif]-->原始的云计算和PaaS的比较

原始的计算云是以机器为中心的服务,提供按需的基础设施作为服务(IaaS)的应用部署。这种云提供了比应用虚拟服务器还多的计算能力和存储容量。有些期待快速走向市场战略的SaaS厂商们,为了避免了真正多租户解决方案的挑战,选择通过IaaS发布单租户实例。

而像Force.com的平台即服务(PaaS),是一个以应用为中心的方法,它将服务器的概念抽象在一起。PaaS让开发人员从一开始到应用部署的整个开发过程都只专注于核心应用。提供者从来不需要担心多租户、高可用性、负载平衡、可扩展性、系统备份、操作系统补丁和安全,以及其他类似的与基础设施有关的问题,所有这些服务都是在PaaS中作为 “S” 交付的。

<!--[if !supportLists]-->3. <!--[endif]-->元数据驱动的体系结构

多租户仅当它能够支持可靠的、可定制、可升级、安全快速的应用程序的时候才是现实的。但如何才能让一个多租户应用允许每个租户建立扩展标准的自定义数据对象,并定制全新的数据对象?如何保证租户的具体数据在共享数据库中的安全性,使得一个租户无法看到另一租户的数据?怎样才能使租户实时自定义应用程序的接口和业务逻辑,而不影响其他所有租户应用的功能和可用性?如何才能应用程序代码基的修补或升级不破坏特定的租户的定制应用?以及随着数以万计的租户订阅服务,应用的响应时间怎样实现可扩展?

建立一个应用程序的静态编译的可执行文件,并能够满足这些多租户及其他独特的挑战是很困难的。本质上说,一个多租户的应用,必须在其性质,或多态性方面,达到不同租户和他们的用户的个人期望。

基于这些原因,多租户应用设计已经发展到使用运行时引擎从元数据(即关于应用程序本身的数据)生成应用程序组件的阶段。在一个定义良好的元数据驱动的体系结构中(图2),已编译的运行时引擎(内核)、应用数据、描述一个应用程序的基础功能的元数据,以及与每个租户的数据和定制相关的元数据之间有一个明确的分离。这些明显的边界使人们有可能独立更新系统内核,修改的核心应用程序,或定制租户的具体组成部分,虚拟意义上来说,几乎不会影响其他人。

2:一个元数据驱动的应用程序明确地分离了运行时引擎、数据、

常见的应用元数据和租户的特定元数据。

<!--[if !supportLists]-->4. <!--[endif]-->新挑战和解决方案

试图编织多租户整体的应用程序的核心逻辑及其底层的基础设施是一件复杂的事情。毫无任何经验地从头构建一个元数据驱动的多租户应用注定是一个耗时且容易出错的工作。最后,许多想成为SaaS提供商的人们争相建立多租户应用,并最终浪费了宝贵的本应花在核心应用功能和特性的创新上的时间。问题是,传统的应用程序发展框架和平台都没有能力处理现代互联网应用的特殊需要。因此,新类型平台正在兴起,以简化开发和多租户应用的部署。

Force.com是现今第一个最成熟的致力于一般目的、多租户、互联网应用的开发平台。本文的其余部分给出了Force.com技术设计的具体细节的解释,这样你就可以更好地了解其功能。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多