互联网时代的软件革命—SaaS架构设计_第1页
互联网时代的软件革命—SaaS架构设计_第2页
互联网时代的软件革命—SaaS架构设计_第3页
互联网时代的软件革命—SaaS架构设计_第4页
互联网时代的软件革命—SaaS架构设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、互联网时代的软件革命SaaS架构设计马坤 nic-网络新技术专题网络新技术专题参考教材参考教材入门基础教程,淘宝阿里云,2009,电子工业出版社,49元(36.4元)参考论文参考论文从传统的Web应用到多租户SaaS应用的转换方法,马坤,通信学报,2011Page 4什么是云计算1什么是SaaS2SaaS的成熟度模型3构建多租户的SaaS应用4高性能的多租户SaaS应用实践5可伸缩的应用架构6从传统的Web应用到多租户SaaS应用的转换方法(Paper from 通信学报)7内容内容Page 5什么是云计算1什么是SaaS2SaaS的成熟度模型3构建多租户的SaaS应用4高性能的多租户SaaS

2、应用实践5可伸缩的应用架构6从传统的Web应用到多租户SaaS应用的转换方法(Paper from 通信学报)7内容内容Page 61 云计算云计算 什么是云计算 National Institute of Standards and Technology, NIST云计算是一种对IT资源的使用模式,是对共享的可配置的计算资源(如网络、服务器、存储、应用和服务)提供无所不在的、方便的、随需的网络访问。资源的使用和释放可以快速进行,不需要多少管理代价。美国国家标准技术研究所Cloud computing is a model for enabling convenient, on-demand

3、network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.NISTPage 71 云计算的基本特征云计算的基本特征 按需自助服务 无所不在的网络接入 不用考虑具体物理位置的资源池

4、以服务需求驱动的配置和调度 可计量的服务/按使用收费Page 81 云计算是信息技术发展的方向云计算是信息技术发展的方向Page 91 云计算三种服务模型云计算三种服务模型International Data Corporation (IDC)预测,2010到2014年期间SaaS市场的年复合增长率高达25.3%Page 10什么是云计算1什么是SaaS2SaaS的成熟度模型3构建多租户的SaaS应用4高性能的多租户SaaS应用实践5可伸缩的应用架构6从传统的Web应用到多租户SaaS应用的转换方法(Paper from 通信学报)7内容内容Page 112 SaaS-软件即服务软件即服务 什

5、么是SaaS 软件即服务,软件产品消费-服务消费 租用,无需维护 多租户Page 122 SaaS的提供商们的提供商们 Salesforce的MIS,典型的是CRM软件的推广(http:/ Google Docs(http:/) Microsoft 金蝶友商网(http:/ 阿里云 800App(800客) http:/ 腾讯SaaS:QQ云输入法,QQ云词典Page 132 国际学术界国际学术界 IEEE International Conference on Cloud Computing (CLOUD) CLOUD 2011(

6、/2011/) IEEE Asia-Pacific Services Computing Conference ( IEEE APSCC ) IEEE APSCC 2011 (/apscc2011) IEEE World Congress on Services(SERVICES) SERVICES 2011 (/2011/)Page 142 国内学术界国内学术界 中国云计算与SaaS大会(C4S2) () C4S2 2011 ( http:/www

7、. )Page 152 SaaS的适用场景的适用场景 快速增长的应用场景指的是需求增长比较迅速的情况,这种情况下应用系统的计算呈阶梯形上升方式。SaaS应用可以动态分配资源来满足应用增长的需要 间歇性的应用场景包括临时性的一些应用需求,这些应用场景的特点是不需要连续的使用服务,此时传统的不间断持续服务方法会造成资源的浪费 突发性应用场景是指应用的使用量短时间内增加又很快回落的情况。这种使用量的变化是无法预测的,使用云计算可以较容易的解决这种突发需求。计算时间b) 间断性应用场景计算时间a) 快速增长应用场景计算时间c) 突发性应用场景非服务时间Page 162 Sa

8、aS的典型案例的典型案例 邮件系统 电子商务 客户关系管理 企业资源规划 管理信息系统 办公自动化Page 17什么是云计算1什么是SaaS2SaaS的成熟度模型3构建多租户的SaaS应用4高性能的多租户SaaS应用实践5可伸缩的应用架构6从传统的Web应用到多租户SaaS应用的转换方法(Paper from 通信学报)7内容内容Page 183 SaaS成熟度模型成熟度模型 第0级(混乱):每次新增一个客户,都会新增软件的一个实例。 第1级(受控的混乱):所有客户都运行在软件的同一个版本上,而且任何的定制化都通过修改配置来实现。 第2级(可配置的多租户):所有的客户都已经可以在软件的同一个版

9、本上运行了,而且他们都在同一个“实例”上运行。 第3级(可扩展的多租户):此时你已经拥有了多租户、单一版本的软件模型。不过你还是可以通过硬件扩展(scale-out)的方式来进行扩充。 第4级(理想模型):如同第3级,除非你可以找出有效的方式,以在不同的“实例”上运行不同版本的软件。Page 19什么是云计算1什么是SaaS2SaaS的成熟度模型3构建多租户的SaaS应用4高性能的多租户SaaS应用实践5可伸缩的应用架构6从传统的Web应用到多租户SaaS应用的转换方法(Paper from 通信学报)7内容内容Page 204 常见的多租户解决方案常见的多租户解决方案databasedata

10、basedatabaseapplication application applicationtenanttenant tenantdatabasedatabasedatabasetenant tenant tenantapplicationdatabasetenant tenanttenantapplicationa) Separate Application Separate Databaseb) Shared Application Separate Databasec) Shared Application Shared Databasetenant tenanttenantappli

11、cationdatabasetenanttenanttenantapplicationc 1) Separate Schemac 2) Shared Schemaschema1schema2 schema1理想模型Page 214 多租户多租户SaaS应用的通用模块应用的通用模块 用户与租户映射 租户的注册与订阅 租户的计费Page 224 SaaS多租户设计多租户设计 用户与租户的映射关系一个租户下可以有多个用户账号 1:nPage 234 SaaS多租户设计多租户设计 租户的订阅PricePolicy:价格策略,支持按时间(月、季、年)、按次数计价,以unit表示;Subsciber:订购

12、记录,记录租户选择了何种价格策略,以及服务期限或服务次数。Page 244 SaaS多租户设计多租户设计 租户的计费Journal:流水账,记录租户使用服务的日志,用于生成账单和报表。Page 25什么是云计算1什么是SaaS2SaaS的成熟度模型3构建多租户的SaaS应用4高性能的多租户SaaS应用实践5可伸缩的应用架构6从传统的Web应用到多租户SaaS应用的转换方法(Paper from 通信学报)7内容内容Page 265 高性能的多租户高性能的多租户SaaS应用实践应用实践 数据库优化 应用层优化 Web层优化Page 275.1 数据库层性能优化数据库层性能优化 建立合适的索引 索

13、引应该创建在条件(WHERE),排序(ORDER BY),分组(GROUP BY)等操作所涉及的列上; 索引应该有较强的选择性,即应尽可能建立在重复数据少的数据列中; 如果多个条件经常需要组合起来查询,应合理使用联合索引; 一次查询中只能使用一个索引,可使用相应的分析工具分析索引效果; 索引不是越多越好,过多的索引可能导致CUD(新增、修改、删除)的性能降低,并且占用更多的空间 实现模糊搜索的最佳实践是建立搜索引擎Page 285.1 数据库层性能优化数据库层性能优化 消除大数据表连接解决方案解决方案适用场景适用场景示例场景示例场景冗余存储关联字冗余存储关联字段段业务需求上可以接受冗余导致的不

14、一致,或者冗余数据可以很容易被同步更新订单列表查询时,希望查看到订单的客户名称,原本订单上只记录了客户ID,通过关联客户表查询客户名称Cache缓存缓存变动概率不高,但是对于数据一致性要求较高用户名(UserName)被很多业务所关联查询,但是也不适用于冗余方案(业务上不允许不一致,并且要保持所有冗余存储的地方同步更新很困难)直接删除关联字直接删除关联字段段不是必须包含的被关联表的字段,可以直接从列表查询中去除订单列表中的产品型号等非关键字,其实并不一定要包含在订单列表中拆分成多次查询拆分成多次查询对于单个数据的查询,如果涉及多张关联表,有时多分次查询会比一次复杂的关联查询更为合适订单表单中需

15、要查询到关联产品的编码、型号等很多字段Page 295.1 数据库层性能优化数据库层性能优化 避免复杂SQL 一般需要考虑把复杂的SQL分解成多个简单的SQL执行 将复杂的运算尽量留在应用服务器层应用服务器层的水平扩展比数据库扩展更容易实现Page 305.2 应用层性能优化应用层性能优化 Cache 特征:读多写少 Cache过期机制:重读 统计和报表 对于统计结果实时性不高的,并且历史数据是不允许修改的情况下,通常可以采用后台任务定时统计的策略 (Spring+Quartz框架) 如果历史数据是可以修改的,则相应的后台任务定时统计方案会略有些复杂:对于被修改的历史数据,历史统计结果和报表需

16、要重新运算 对于部分统计结果实时性要求很高的功能,则可以在后台任务定时统计的基础上,再加上增量数据实时统计的结果 使用全文索引进行搜索 异步操作 异步操作并没有从本质上提升系统性能或者数据吞吐量。但是异步操作使得用户体验得到了极大的提升,同时也能降低系统的并发负载。因此,将同步操作变成异步操作也是提升性能的一种重要手段。例如,Ajax。Page 315.3 Web层性能优化层性能优化 页面加载速度优化 HTTP协议HTTP 1.0是Browser和Server三次握手建立连接发送数据包HTTP 1.1对这种情况有了改进,在HTTP 1.1中有Persistent Connection的概念,S

17、erver端不会马上关闭连接,这样可以减少连接数,但是维护连接需要消耗服务器资源 HTTP请求IE7对ajax请求,是发送两次tcp包。第一个是HTTP Header,第二个是xml data。两次tcp发包之间,Server一个ACK确认后才发xml data。 IE7上发送ajax请求会继续使用浏览器已经建立的tcp链接,而 IE6发送ajax请求会重新建立新的TCP链接(三次握手)。Firefox中xml和HTTP Header的最后一个TCP包是一起发出去没有延迟的Page 325.3 Yahoo!关于网站优化的关于网站优化的35条建议条建议 http:/ http:/ 服务器部分 使

18、用内容分发网络 为文件头指定Expires或Cache-Control GZIP压缩文件内容 配置ETag 尽早刷新输出缓冲 使用GET来完成AJAX请求Page 335.3 Yahoo!关于网站优化的关于网站优化的35条建议条建议 http:/ http:/ 内容部分 尽量减少 HTTP请求 减少 DNS查找 避免跳转,减少301和302 缓存 Ajax,GZIP 延迟加载 提前加载 减少 DOM元素数量 用域名划分页面内容 使 frame数量最少 避免 404错误Page 345.3 Yahoo!关于网站优化的关于网站优化的35条建议条建议 http:/ http:/ CSS部分 把样式表

19、置于顶部 避免使用CSS表达式(Expression) 用代替import 避免使用滤镜Page 355.3 Yahoo!关于网站优化的关于网站优化的35条建议条建议 http:/ http:/ JavaScript部分 把脚本置于页面底部 使用外部JavaScript和CSS 削减JavaScript和CSS 剔除重复脚本 减少DOM访问 开发智能事件处理程序Page 365.3 Yahoo!关于网站优化的关于网站优化的35条建议条建议 http:/ http:/ Cookie部分 小Cookie体积 对于页面内容使用无coockie域名Page 375.3 Yahoo!关于网站优化的关于网

20、站优化的35条建议条建议 http:/ http:/ Image部分 优化图像 优化CSS Spirite 不要在HTML中缩放图像 favicon.ico要小而且可缓存Page 385.3 Yahoo!关于网站优化的关于网站优化的35条建议条建议 http:/ http:/ Mobile部分 保持单个内容小于25K 打包组件成复合文本Page 39什么是云计算1什么是SaaS2SaaS的成熟度模型3构建多租户的SaaS应用4高性能的多租户SaaS应用实践5可伸缩的应用架构6从传统的Web应用到多租户SaaS应用的转换方法(Paper from 通信学报)7内容内容Page 406 可伸缩的应

21、用架构可伸缩的应用架构 可伸缩性 Scale out/水平扩展/向外扩展:从技术、策略方面改进,较小成本 Scale up/垂直扩展/向上扩展:增加/增强相应的硬件设备,较大成本鱼缸的例子:不知您有没有养过鱼?当你只有六七条鱼的时候,一个小型鱼缸就够了;可是过一段时间新生了三十多条小鱼,这个小缸显然不够大了Scale Up:再去买个大鱼缸Scale out:小鱼缸旁边再加一个小鱼缸Page 416 可伸缩的应用架构可伸缩的应用架构 应用服务器层的水平扩展-负载均衡 基于硬件负载均衡设备实现负载均衡(成本高) 基于软件的方式实现负载均衡,例如通过配置Apache Http ServerSessi

22、on复制:通过复制,服务器之间保持相同的SessionSession粘帖:将同一用户的请求转发到特定的服务器上基于Cache的集中式Session:使用集中式的Cache来代替本地Session,例如MemCached 实现方式实现方式优势优势劣势劣势Session复制复制服务器负载可以得到较好的均衡,也可以确保fail-over的支持Session复制会对服务器网络环境带来巨大的压力,尤其在应用服务器数量较大的时候,基本不适用于大型互联网,而且需要相应的应用服务器支持Session Sticky实现比较简单,在Load Balance层做相应的配置即可,不会带来Session复制引起的网络环

23、境压力不能实现完全的负载均衡,部分情况下负载会极端失衡,无法实现fail-over基于基于Cache的集的集中式中式Session应用服务器层无状态,可以实现完全的负载均衡,不会带来Session复制引起的网络环境压力实现相对复杂一些,Cache本身可靠性不能绝对保证,可能会造成部分Session的丢失Page 426 可伸缩的应用架构可伸缩的应用架构 数据库层的水平扩展 数据库的垂直切分:将不同的功能模块所涉及的表划分到不同的物理数据库中,从而将对这些表的访问压力分担到多个不同的物理数据库中 数据库的水平切分:将原来存储在一个数据表中的数据,按照一定的规则,切分到多个不同的物理数据库中。每个

24、数据库的数据结构完全相同,但是数据各不相同。 数据库的读/写分离:同一个数据库在多个物理服务器上具有多份Copy,彼此同步。然后将对于数据库的写操作都统一到一个主服务器上,而读操作则分摊到多台从服务器上。通过读/写分离,实现数据库访问压力的分担。实现方式实现方式优点优点不足不足垂直切分垂直切分实现简单扩展能力有限,强关联的应用不容易垂直切分读读/写分离写分离可有效分担读的压力,主要在数据库层扩展,应用修改较小对于读的比例不高的应用,扩展能力有限。依赖于数据库本身的同步能力水平切分水平切分SaaS应用中普遍适用,扩展性强,基本无限扩展实现比较复杂,应用一般需要做较大改造。需要预先做好负载规划,后

25、期数据迁移比较困难Page 43什么是云计算1什么是SaaS2SaaS的成熟度模型3构建多租户的SaaS应用4高性能的多租户SaaS应用实践5可伸缩的应用架构6从传统的Web应用到多租户SaaS应用的转换方法(Paper from 通信学报)7内容内容Page 447 架构架构Net I/ONet I/Otenant1 tenant2tenantnApplicationAbstract Data Model(JDBC Proxy)Interceptor and parserSubscription and billingSelf-service sign-uppre(TenantID) T(sql(u), TenantID) post(TenantID) SQL Request RouterMulti-tenant Mappingsql(u)Data Middleware

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论