基于多租户架构的PaaS构建剖析Word文件下载.docx
- 文档编号:15770894
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:7
- 大小:204.59KB
基于多租户架构的PaaS构建剖析Word文件下载.docx
《基于多租户架构的PaaS构建剖析Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于多租户架构的PaaS构建剖析Word文件下载.docx(7页珍藏版)》请在冰豆网上搜索。
关键词:
云计算,PaaS,云平台
0引言
云计算的价值通过云产品的价值体现出来,云产品的价值是通过云技术平台来实现的。
云平台不仅是技术的集成,而且是体现云计算运营思路内涵的表达形式。
本文对云计算产品平台进行深入剖析,展示了平台内在的关键支撑技术,在技术解析过程中始终紧扣云产品平台构建应符合云产品运营思路的重要思想。
通过对成熟的云计算产品平台进行深刻解读,通过分析优秀云计算公司经营的思路,可以探寻适合企业自身发展的云计算产品平台开发之路。
在众多的云产品平台中,S公司的PaaS平台是其中的典型代表,其独树一帜的产品平台对云计算的运营产生了深远的影响,对从事云计算服务业务的公司有很大的指导作用和借鉴意义。
1Salesforce简介
S公司成立于1999年,由甲骨文公司前高管MarcBenioff创立。
企业成立之初,便提出了“消灭软件”的变革性运营理念,其目的是为了实现IT资源整合、集中化管理和运营[1],消灭企业数据中心的运行软件,通过互联网接入,按需提供软件服务于用户,并收取相应费用,实现企业与用户的价值共赢。
非凡的理念使得Salesforce公司成为了云计算领域公认的领袖企业,其推出的产品不仅成熟,而且产品体现的技术运营理念也是独树一帜,被许多云计算经营公司效仿。
Salesforce的PaaS平台无论是在架构设计上,还是在应用支持上,与另一云计算业界的先锋公司Google的PaaS相比,都有着重大的区别。
Salesforce的PaaS最大的闪光点就在于采用了多租户架构,实现了云计算产品平台一体化。
下面对多租户架构进行剖析,揭开云计算产品的神秘面纱。
2多租户的概念和模型
多租户的概念是在多用户概念基础上发展而来,不同于传统的多用户共享一个相同的实例,在权限上区分用户的使用范围。
多租户是多个用户享用虚拟实例,虚拟实例由具体软件实例虚拟而成,共享的虚拟实例即使是同一个,也会存在差异。
多租户是对共享实例进行技术创新,面向应用实例,而非虚拟化技术面向操作系统。
由于在软件设计时就必需实现软件自身数据和配置信息的虚拟分区,所以多租户软件架构要进行必要的修改,特别是数据库需要特殊的设计,在安全隔离方面要做设置,毕竟共享同一软件资源存在一定的风险。
常见的多租户实现模型有3种,区分就在于最底层采用的数据库模式。
1)私有表。
为每个用户单独定义数据并创建一个新表。
实现简单,不过成本高。
数据定义语言(DDL)操作涉及数据框架,这造成表之间整合度低。
2)扩展表。
分基本表和共享表,减少了DDL操作,表的整合度高,但用户占用基本表和共享表,这造成表的架构复杂。
3)通用表。
通用表包括租户位和数据位。
租户位区分用户,数据位用来存放各种类型的数据。
通用表为体现灵活扩展和通用性,采用了稀疏列的表格式。
每一行的数据位中以一个键和一个值的形式存放数据,行很宽,里面有许多空值,表具有极高的整合性,也避免了DDL的操作,但架构实现难度较大。
Salesforce公司采用了这种多租户模型。
3基于多租户架构的PaaS平台
Salesforce的PaaS平台整体架构分为两层,基础物理设施资源和F平台。
其中F平台是整体架构的核心部件,它首先整合和利用基础物理设施资源,然后提供PaaS平台服务于软件开发者,最后将公司云产品应用以软件即服务(SaaS)的形式提供给用户[2]。
其整体架构如图1所示。
Salesforce公司的PaaS和SaaS基于同一个平台,统一的平台不仅成本低,而且应用得到了整合,突出表现为软件架构上API的统一,PaaS和SaaS的应用程序接口得到了重用,方便了应用服务的管理。
F是业界第一个基于多租户架构的PaaS平台,不仅支持灵活的定制,并且承受负荷极强。
其整体架构如图2所示。
架构分两部分,网关和虚拟服务器群(POD)。
整体架构设计实现机理如下:
网关接受访问请求,根据请求区分访问的应用,将应用所属的租户转发给对应的POD。
POD就是一组集群的服务器,每个POD运行着一套Force.com的系统,在此系统中可以支持上万的租户,由此可见F平台强大的负荷承载力。
POD之间能实现负荷均衡,接到请求后,通过负载均衡器将请求转发给负载较轻的应用服务器,这样能把租户平均分配至每个POD。
POD中的应用服务器是无状态的,这样便于应对大规模的请求处理,使得架构充满弹性。
当应用服务器在处理请求时,发现自身缓存中无请求所需的数据,这时共享数据库便发挥作用,应用服务器会调用共享数据库中请求所需的数据进行下一步的处理。
面向运营,POD可以根据用户情况进行增加,使得整个架构可扩展性得到增强。
在整体架构中,核心是POD。
POD由负载均衡器、应用服务器和共享数据库组成。
负载均衡器采用多输入/输出(I/O)理念,对于虚拟服务器而言,存在多个I/O服务器,只需通过I/O服务器互联,通过软件算法分配资源给各个服务器资源占用,就能达到负载均衡的目的。
简言之,任务会分配到负载较轻的I/O服务器上。
在具体实现过程中,采用负载均衡模式的服务器,客户就会通过负荷识别机制,自动寻找负载较轻的I/O服务器。
应用服务器用于处理用户的请求,由以下5个模块组成,如图3所示。
1)元数据缓存。
存放新近常用的元数据,加速应用的生成。
元数据是基于面向对象的,从某种意义上讲,也可以认为就是对象。
对于F而言,它是由一个个对象组成的,对象包含表格、用户接口(UI)和用户权限等,这些对象采用了元数据的形式在数据库中存储。
F的对象及其相关的字段对应一个数据库的表和表中的列,并且F对象之间的关系受数据库的完整性约束。
数据库中每个数据库表对应着独立的存储地址,F在这点上进行了优化改进,F使用多个共享的大数据库表作为存储放置对象。
大数据库表中包含许多数据通用字典(UDD),UDD就是专门存储元数据的表格。
另外,对于应用而言,运行在F上的软件实例也是由多个对象生成的,同样一个应用实例也是使用元数据进行描述的。
用户最初在使用软件的时候,对象版本和规模都是一致的,随着用户使用时间的增长,相应用户对应用软件的定制添加便会造成同一个软件实例的不同,系统就会对应用共享对象和定制对象进行严格分离。
在实现上,并未为新对象生成数据库表格,而是采用元数据的形式存储在大表中。
元数据的好处显而易见,作为数据存放比新建数据库表格易实现很多[3]。
在实际运行中,F使用引擎分析数据库中的元数据以动态生成虚拟实例和虚拟实例所需的模块。
2)大规模数据处理引擎。
主要用于大数据量的读写和在线事务的加速处理。
由于PaaS平台需要处理的数据量是巨大的,所以引入大规模数据处理引擎就显得很有必要。
当一个API调用发生了很多待处理数据时,引擎能快速应对处理,显示出强大的优化处理能力。
另外,当处理大规模数据时,其中一个步骤发生错误,引擎内置的错误恢复机制能快速捕捉和修复这个错误,同时会保存出错步骤之前的数据结果,避免重新操作。
3)多租户感知的查询优化引擎。
引擎的作用是帮助关系型数据库自带查询优化器,以便更好地适应多租户的环境。
数据库是自带查询优化器的,主要基于数据库表的索引等数值进行计算和比较[4]。
这种自带的查询优化器是针对单租户环境而设计的,为了使其适应多租户环境,在自带查询优化器基础之上设计了一个多用户感知的查询优化引擎,其为每个多租户对象维护了与之对应的一整套优化数据,除此之外,这个引擎也维护租户和租户下用户的安全信息,既避免了租户间数据的误处理,又提升了数据安全性和数据处理效率。
4)运行生成器。
根据用户请求动态生成应用,并利用查询优化器提升数据处理效率。
5)全文检索引擎。
在数据库进行数据更新的同时,引擎异步更新这个数据的相关索引。
做为Web的一项基本功能,被应用至PaaS。
F内置的全文检索引擎基于Lucene技术。
当运行在PaaS平台上的应用对数据库中的数据进行更新时,会有检索服务器的后台进程异步更新与数据相关的索引。
异步机制的好处在于,将事务处理和用户检索放置在不同时间段,保证了检索工作不影响处理事务的效率,同时也能为用户提供最新搜索结果。
在检索过程中采用了一项创新技术——等待检察技术优化了检索流程,系统将修改过的数据复制到一个等待检索表,检索服务器会直接访问这个表,返回给用户最新的搜索结果,检索服务器不用对整个索引进行搜索,从而减少了检索服务器的I/O处理量。
在多租户环境中,每个多租户都有一个独立的索引。
另一POD主要部件共享数据库用于存放数据,采用散列分区技术,将大数据分成数据小块进行管理,使得大型数据库得以适应多租户环境,提升了系统的伸缩性和可用性。
共享数据库由以下3部分组成,如图4所示。
1)元数据表。
用于存储互用定制对象及其包含的字段和结构信息,不保存具体数据。
元数据表主要有两类:
一是对象元数据表,存储对象的信息,其字段包括对象ID(标示数据)、拥有对象的租户ID和对象名称;
二是字段元数据表,存储对象附带字段的信息,包括字段的ID、拥有字段租户的ID、字段名称、字段数据类型和是否被索引的布尔字段。
2)数据表。
存储用户所使用对象和对象所包含的字段数据。
与元数据表一样,有两类,一类是数据表,表中放置着对象和字段所对应的数据。
核心字段有全局ID、租户ID、对象ID和对象名称。
核心字段之外,有501个数据列用来存放数据,列用Value来命名。
首个字段以Value0设定,后续排列递增。
列采用灵活列的方式,使得数据库中的数据总是以可变长度字符数据类型(Varchar)形式承载数据。
另一类是大字符表(Clob),专门存放大字符对象,最大长度限制为32000字符。
3)数据透视表。
透视形象表达了数据读取简化的过程,对特殊数据去格式束缚,只关注数据某一特征即可进行读取,这样会加速对特殊数据的处理,使系统通过“短路径”得以对数据进行直接处理。
在具体实现上,往往对表中数据某一特征进行处理,例如字段类型。
这样做的好处有:
可以优化数据库,加快了对常用数据的读取,减少了因结构导致的读取冗余。
除此之外,Salesforce基于多租户的PaaS平刻台,采用了独创的面向对象语言Apex。
Apex整合复杂的商业逻辑和多模块功能,用于在F上创建Web服务。
运行有两种方式:
一是单独脚本,按用户需求执行;
二是触发器形式,通过特定数据处理事件作为条件,触发绑定的Apex代码执行。
Apex代码同样是以元数据的形式存储于元数据表内。
当Apex代码被调用时,Apex的翻译器会读取元数据缓存中被编译过的Apex代码,以提供给多个租户进行使用。
引入Apex这门新语言,着眼于平
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 租户 架构 PaaS 构建 剖析