1、云计算时代的软件开发技术 及其应用,软件工程国家重点实验室(武汉大学) 武汉大学计算机学院应时 2010-05-22,提纲,一、云计算时代的软件 二、云计算时代软件的开发技术 三、云计算时代软件开发技术的创新与发展 四、我们的工作 五、总结,软件工程国家重点实验室,2,一、云计算时代的软件,软件工程国家重点实验室,3,1.1 云计算,Wikipedia上的定义:云计算是这样一种计算方式,计算资源是动态易扩展而且虚拟化的,往往通过互联网提供。用户不需要了解“云”中基础设施的细节,不必具有相应的专业知识,也无需直接进行控制。云计算时代的软件是运行在云平台上,并具有在线租赁服务形式、按用量可伸缩性占
2、用资源、按需要个性化定制等特性的软件。,软件工程国家重点实验室,4,软件工程国家重点实验室,5,1.1 云计算,云计算的使用方式,将计算和存储等资源以服务的方式提供,用户按需使用,按用量付费,6,软件工程国家重点实验室,有了云计算,我们可以 无需购买昂贵的软硬件设备 更少的技术维护 按需获取海量的IT资源 按用量支付费用 聚焦于业务,图片来源:IBM公司,1.1 云计算,7,软件工程国家重点实验室,图片来源:IBM公司,1.2 云计算的服务体系,服务多租赁化,平台可伸缩化,资源虚拟化,让人振奋的许多云计算特性主要是靠软件技术实现的软件技术将在云计算时代开发出令人惊讶的应用系统,8,软件工程国家
3、重点实验室,平台即服务,Platform as a Service,High Volume Transactions,Software as a Service,服务器,网络,存储,Metering,监控,计费,服务云,开发云,企业云,多租赁,安全,中间件,协作,业务服务,CRM/ERP/HR,定制服务,数据中心,虚拟化,动态供应,服务管理,J2EE,On-ramps,服务封装,Ajax,开发,On-ramps,On-ramps,开发工具,与其他云的互操作,软件即服务,基础设施即服务,图片来源:IBM公司,1.2 云计算的服务体系,1.3 云软件的实例,9,软件工程国家重点实验室,Goole提
4、供的云软件服务 搜索引擎 Gmail Google Docs Google Picasa Web,1.3 云软件的实例,10,软件工程国家重点实验室,S于1999年创新地以在线租赁的模式,提供按需定制的客户关系管理的软件服务 功能的增删,用户界面的个性化等 用户只需支付租用费,就可以使用CRM服务,包括普通的联系人管理,产品目录到订单管理,机会管理,销售管理等服务。 提供一个平台,使得客户无需花费大量资金和人力而拥有自己的软件,所有的软件和数据都储存在平台上。,1.3 云软件的实例,11,软件工程国家重点实验室,据Gartner预计,到2010年企业30%的软件应用将通过服务来提供。,1.4
5、云计算时代软件的新变化,12,软件工程国家重点实验室,用户只需要使用软件,而不用自己去运行(软件始终在网上运行着)和管理软件。使用云上的软件只需注册、客户化、应用即可。 用户变成租户,单一实例的软件使用模式变成多租赁的服务模式 网站从Web信息发布平台变成Web应用软件运行平台,变成系统托管平台,变成多租户的软件服务平台,1.4 云计算时代软件的新变化,13,软件工程国家重点实验室,软件运行在因特网上的共享数据中心上,而不是运行在自有的服务器和计算机上。 应对用量变化的手段,从制作网络镜像手工增删资源,到系统和平台的自动伸缩。 可个性化定制 快速开发,1.5 本报告关注的主题,14,软件工程国
6、家重点实验室,云计算时代软件需要新的开发技术软件工程师也需要使用云计算时代的软件开发技术去提高开发能力 开发作为服务,15,软件工程国家重点实验室,在云计算平台中,如何开发、运行和维护那些为(最终)用户提供云服务的软件系统(包括系统软件、工具软件和应用软件等各类软件),1.5 本报告关注的主题,关注云计算模式下的软件开发与设计技术,软件工程国家重点实验室,图片来源:美国加州大学圣巴巴拉分校,二、云计算时代软件的开发技术,软件工程国家重点实验室,16,软件工程国家重点实验室,17,云计算是在分布式计算、并行计算和网格计算的基础上,经一系列技术的创新和融合而形成的。目前,云计算平台本身以及云计算平
7、台上的应用软件的开发都使用分布式并行编程技术。,2.1 云计算时代的分布并行编程技术,云计算时代的分布并行编程技术 分布并行数据处理技术 Google Map/Reduce Hadoop Map/Reduce 分布式文件系统 Google File System Hadoop Distributed File System 分布式数据库 Google BigTable Hadoop HBase,2.1 云计算时代的分布并行编程技术,2.2 分布并行数据处理,19,软件工程国家重点实验室,Map/Reduce 用于大规模数据并行处理 数据量大(超过1TB) 在成百上千个CPU上并行处理用户只需实
8、现下面接口map (in_key, in_value) - (out_key, intermediate_value) listreduce (out_key, intermediate_value list) -out_value list,2.2 分布并行数据处理,20,软件工程国家重点实验室,Map/Reduce架构,图片来源:美国华盛顿大学课件,2.2 分布并行数据处理,MapReduce实现原理,图片来源:Google Research Publication,2.3 分布式文件系统,软件工程国家重点实验室,22,Google File System(GFS) 需求:在廉价、相对不可
9、靠的计算机上对巨量数据进行冗余存储。 为什么不用现有的文件系统?-Google面对特殊的挑战 文件较大,每个都在100M以上,通常为几个GB 文件通常需要频繁的追加 用流方式读取 高吞吐量 低延迟 针对上述问题,GFS在文件系统性能和可伸缩性方面进行了优化设计。,GFS的设计理念 文件用块存储 每个块固定为64MB 通过冗余解决可靠性问题 每个块同时拷贝在3个块服务器上 主服务器负责协调访问和保存元数据 简单化的集中管理 定制化的API 无数据缓存 较大文件块和流式读取使得缓存效果不佳,软件工程国家重点实验室,23,2.3 分布式文件系统,GFS架构,2.3 分布式文件系统,图片来源:Goog
10、le Research Publication,GFS集群 一个 GFS 集群有一个主服务器和多个块服务器 文件被分割成固定尺寸的块。 块服务器把块作为 linux 文件保存在本地硬盘上,并根据指定的块句柄和字节范围来读写块数据。 主服务器管理文件系统所有的元数据,包括名字空间、访问控制信息和文件到块的映射信息,以及块当前所在的位置。 客户端与主服务器交互,处理元数据 客户端与块服务器交互,存取数据本身,2.3 分布式文件系统,2.4 分布式数据库系统,Google BigTable 为了处理Google内部大量的格式化以及半格式化数据而构建的大规模分布式数据存储系统特点 面向大规模处理、容错
11、性强的自我管理系统,拥有TB级的内存和PB级的存储能力,每秒可以处理数百万的读写操作 能够保存记录的不同时段的版本 构建于GFS和Map/Reduce基础之上,软件工程国家重点实验室,26,BigTable的设计理念 面向网页数据的发布、搜索和浏览等特定处理的需要,简化数据管理系统的设计,并提高性能 不支持关联 不支持SQL查询 简化数据的一致性管理 网页数据的管理对一致性要求不高 简化事务管理 网页数据的处理(搜索、发布)对事务管理要求不高面向海量数据管理要求 设计分割和合并管理机制(基于元数据) 设计自动伸缩功能(根据数据量调整资源用量),软件工程国家重点实验室,27,2.4 分布式数据库
12、系统,BigTable的实现 GFS为表文件、元数据和日志提供存储服务 Chubby 提供分布式并行处理功能 一个Table按照行被分割为多个tablet 每一个tablet在物理层被存为SSTable文件 通过维护keydisk block索引, SSTable 文件管理系统提供 keyvalue的索引功能,2.4 分布式数据库系统,BigTable架构,软件工程国家重点实验室,29,2.4 分布式数据库系统,图片来源:Google Research Publication,软件工程国家重点实验室,2.5 Google App Engine,Google App Engine 提供运行和开发
13、的基础平台,允许开发人员编写网络应用,上传至App Engine部署运行 支持Java和Python两种开发语言 App Engine 应用程序易于构建和维护,并可根据访问量和数据存储需要,进行伸缩。 将应用程序隔离在它自己的安全可靠环境中,该环境与网络服务器的硬件、操作系统和物理位置无关,软件工程国家重点实验室,开发GAE应用的方法 利用App Engine SDK进行开发,本地创建Web 应用项目,本地编译Web 应用项目,上传应用程序到 Google AppEngine,2.5 Google App Engine,2.6 Salesforce F,F的云计算平台 基于Web的随需应变的企
14、业级软件开发和运行平台 开发的软件能在F平台上运行 由一组集成的工具和应用程序服务组成,图片来源:,F云计算平台整体概览,Native ERP Connectors,Native Desktop Connectors,Integration Middleware,Mash-ups from AppExchange,Developer Toolkits,2.6 Salesforce F,图片来源:,元数据驱动的平台:使用元数据,定义数据模型、对象、窗体、工作流等,在运行时动态生成租户的应用程序,2.6 Salesforce F,Apex 代码,多租赁虚拟机,元数据,可视化设计,应用程序开发模式
15、声明式开发 页面拖拽式设计 集成开发环境 API Metadata API Web Services API,2.6 Salesforce F,图片来源:,APEX语言 开发人员声明式开发APEX程序 编译后的APEX程序作为元数据存储在数据库中 F平台解释并控制APEX代码的运行,2.6 Salesforce F,图片来源:,APEX语言 Apex为第一个所需应变的、多租户编程语言和平台 Apex是一种Java式的语言,可以在S的服务上运行。用户能够使用这种语言创建客户组件、客户化和修改现有的S代码、创建触发器和编写程序。 Apex平台还包括一个应用程序编程接口以访问和管理复杂的数据关系和A
16、jax工具包。 Apex平台中的实时消息和整合工具允许其它应用程序获得S中的业务事件。,2.6 Salesforce F,图片来源:,F AppExchange 企业软件的在线“超市”,用户可以自行购买那些可以即选即用的功能模块,然后在其用户名下的S上运行,其中的大部分模块是由第三方开发并自主提供的。 提供一个开发人员与用户共享软件和数据的社区,2.6 Salesforce F,F for Google App Engine工具 使Google App Engine平台上Web应用的开发人员可以运行和使用驻留在F平台上的企业应用和数据 提供了Java和Python库,允许开发人员从Google
17、 App Engine中的应用软件,通过使用F中Web服务的API接口,查询和处理F中的数据,从而实现Google App Engine中应用软件与F中应用软件的无缝地集成。,2.6 Salesforce F,开发方 墨尔本大学云计算实验室 Manjrasoft主要负责人 Dr. Rajkumar Buyya相关信息 www.cloudbus.org ,2.7 Cloudbus,Aneka 基于.NET的云计算 针对企业和公共云的PaaS 基于服务契约的资源管理 云间互操作的要素-Brokers,将各种云联合起来,为应用程序提供跨分布式资源的扩展能力 第三方的云服务 使用不同厂商的云存储,建
18、立内容交付网络 绿色云 / 数据中心 充分利用资源,面向QoS的资源分配 CloudSim: 模拟云的工具集 为资源管理策略与算法,提供设计与评估支持,2.7 Cloudbus,2.7 Cloudbus,图片来源:Buyyas Presentation,Aneka: .NET-based Cloud Computing,SDK :包括针对多种编程模型和开发工具的 API 运行环境:管理应用程序执行 适用于: 开发企业云应用 将某些应用移植到云上 提供客户应用的移植: 企业 公共云,2.7 Cloudbus,图片来源:Buyyas Presentation,2.8 技术评价,已有的编程技术主要面
19、向特定领域 软件开发平台还待完善和发展 云计算时代的软件工程方法学需要创新,三、云计算时代软件开发技术的创新与发展,软件工程国家重点实验室,45,3.1 云计算时代应用软件的设计要求,云计算模式下应用软件系统的设计要求 基于SOA的SaaS模式 多租赁特征,47,软件工程国家重点实验室,SaaS是指:软件以在线服务的方式供租户使用 软件用户通过浏览器在线使用业务应用软件。 软件及其数据都存在因特网上的数据中心里 用户不需安装和管理软件系统,不需在硬件方面投入 用户按自己的需要选择、注册并使用软件,3.2 基于SOA的SaaS模式的软件设计,48,软件工程国家重点实验室,SaaS改变了软件的 交
20、付模式 使用方式 运行机制 开发方法SaaS将促进软件工程的创新与发展 新的方法学 非功能需求 技术需求 技术/管理/质量,3.2 基于SOA的SaaS模式的软件设计,SaaS模式的特性 服务(Service) 面向企业的服务(Line-of-business service) 面向个人消费者的服务(Consumer-oriented service) 多租赁(Multi-tenancy) 动态可伸缩性(Dynamic Scalable) 动态可配置性( Dynamic Configurable),3.2 基于SOA的SaaS模式的软件设计,3.2 基于SOA的SaaS模式的软件设计,云计算应
21、用软件的体系结构是一种基于SOA技术体系的软件体系结构 具有面向业务、粗粒度、基于服务、松散耦合和动态绑定等特点,3.2 基于SOA的SaaS模式的软件设计,云计算应用软件的体系结构设计 更关注软件系统的质量属性,例如高性能、伸缩性、并发性、分布性、安全性和容错性等 软件整体的并发性和分布性设计 服务自身的并发性和分布性设计满足软件系统的质量属性成为难题和挑战,成为不可回避的问题 如何建模、实现和测试这些属性,需要新的有效技术和方法。,3.3 多租赁特征的设计,多租赁特性 SaaS服务通常基于一套标准的软件系统,为成千上万的租户同时提供不间断的服务 设计要求 支持用户对界面、业务逻辑、数据等方
22、面的个性化需求 支持不同租户之间数据和配置的隔离,保证每个租户数据的安全与隐私 对支撑软件的基础设施平台的性能、伸缩性、可信性提出很大挑战,设计关注点 数据和应用隔离 多租户间最大程度共享资源的同时,严格区分和隔离属于不同租户的数据 ,以及应用的配置。例如:用数据表的字段或视图,区分不同租户的数据 可配置性 功能服务可以根据用户个性化需求灵活配置。 可伸缩特性 动态自动地适应大量的租户、大量的数据以及高并发的要求 性能 需要最大程度地提高系统并发性,更有效的使用系统资源,3.3 多租赁特征的设计,四、我们的工作,软件工程国家重点实验室,54,4.1 高考智能择校推荐系统,项目背景 中国2010
23、年预计有1319万人参加高考,计划招收629万人,估计80万左右因为学费、就业迷茫而弃考(可能对目前大学教育状况了解欠缺,如学费、生活消费、就业率、专业差异等) 高考系统的新增数据和使用率呈现“突爆性”,全年主要集中在1个月左右时间,而其他时间相对闲置,对数据实时性和系统快速响应要求很高。,项目背景 如何综合考虑考生信息和高校信息,帮助考生正确的选择最适宜其特点的高校? 考生信息:高考成绩、预考成绩、兴趣爱好、生活习惯、所能承受的学费及生活费用等 高校信息:地址、评价、专业、学费、就业率、正/负面新闻、奖学金、各专业就业率、专业全国排名等 如何根据系统使用率,弹性伸缩集群规模,满足实时性要求,
24、并节省系统维护成本?,4.1 高考智能择校推荐系统,现有的同类系统 中国高校录取在线 http:/ 择校网 http:/ 北大方正高考择校专家分析系统 http:/www.edu- 北京市西城区高考估分选校系统 http:/ 高考填报志愿参考系统 http:/,4.1 高考智能择校推荐系统,4.1 高考智能择校推荐系统,现有系统的不足 信息量庞大,彼此独立,缺乏有效的联系 以主动搜索为主,缺乏客观的智能推荐 缺乏数据挖掘、智能分析、综合评价体系 缺乏开放性和可重用性 未体现服务化的特点 应对应用井喷的能力不足,4.1 高考智能择校推荐系统,项目研发内容 基于云计算的高考数据/服务中心设计 按需
25、DeepWeb数据/服务采集技术 数据挖掘与智能分析 高考择校智能决策计算 基于语义的Web服务发现 自动和半自动相结合的Web服务组合技术,4.1 高考智能择校推荐系统,基于云计算的高考数据/服务中心设计 将高考数据(结构化数值、文字;非结构化图片、视频等)及相关服务在一个统一体系中进行综合管理 数据/服务资源分布式存储,每个节点对应一个虚拟机,从而通过弹性伸缩克服短时访问井喷 提供数据/服务的检索、迁移(数据/环境)、备份(数据/环境)等高效资源管理,以及半自动服务组合 基于Google和Salesforce平台,进行开发,4.1 高考智能择校推荐系统,按需DeepWeb数据/服务采集技术
26、 自动 DeepWeb数据接口分析、集成等 DeepWeb服务发现、识别、爬取等 手工(人人是服务提供者,人人是服务使用者) 服务倡导者(提出数据/服务需求) 服务提供者(注册数据/软件服务) 访问者:评价服务需求描述,或者最终服务质量,高考数据/服务中心跨硬件平台 Intel内核机架服务器*1(2*xeon 4core 2.4G cpu,4*4G ECC DDR3 1333内存, 272G SAS) AMD内核机架服务器*1(2*Opteron 4core 2.4G cpu,4*4G ECC DDR2 667内存, 272G SAS) Power内核刀片服务器*4(2*power 1core
27、 2.2G cpu,1G ECC DDR 333内存, 40G ATA) Intel内核刀片服务器*10(1*xeon 1core 3.0G cpu, 2*512M ECC DDR2 667内存, 72G SCSI) Intel内核普通PC*1(1*赛扬 1core 2.6G,512M DDR333, 80G ATA),4.1 高考智能择校推荐系统,高考数据/服务中心跨操作系统 目前已测试VM0可用的linux平台 Ubuntu、 Cent 、SUSE、Debian、Fedora/Red Hat 而VMn为任意操作系统(可实现全/半虚拟化),4.1 高考智能择校推荐系统,平台监控与管理(支持P
28、C和手机端),4.1 高考智能择校推荐系统,4.1 高考智能择校推荐系统,高考数据/服务资源的统计分析 支持PC端和手机端的分析与可视化展示,趋势分析 对比分析 评价分析 周边环境分析 就业率分析 ,五、总结,软件工程国家重点实验室,66,5.1 大型云服务软件的开发需求是现实的,软件是IT系统的灵魂 人类创造出的软件开发技术不会随着IT技术的发展而失去作用或降低重要性。它是我们在新的IT环境中开发更大规模、更复杂、更创新的应用软件系统的有力武器。 软件开发技术不但会跟随IT技术的发展而变化,而且它自己也处在不断的发展过程中。新的软件开发技术将提高人类开发软件系统的能力 云计算为人类使用更大、
29、更复杂的软件系统,提供了可能。,软件工程国家重点实验室,67,5.2 发展需求与机遇流动人口服务,软件工程国家重点实验室,68,生殖健康,犯罪预防,危机应对,社会保障,外来流动人口的压力,人口流动形态推动了珠三角地区的现代化进程,也在人口、社会、经济等方面带来新问题,不断冲击着以往的管理机制,对公共管理与服务部门提出新的要求,技术需求: 专业化 信息、应用分层处理, 多中心, 海量终端,教育卫生,民主法制,城镇化与 工业化进程,5.2 发展需求与机遇中小企业业务信息服务,软件工程国家重点实验室,69,面向中小企业商务的云服务,技术需求: 低成本专业信息服务、按需服务,数据密集服务,中小企业支持
30、珠三角地区经济社会发展,中小企业 1000,000,增加就业,增加经济活力,改善产业结构,扩大内需,克服: 技术实力弱 缺乏资金 长远的预见性差 信息化实施能力差,促进自主创新,5.2 发展需求与机遇大众健康服务,软件工程国家重点实验室,健康作为服务,健康的公民才能劳动创造价值,技术需求: 低成专业健康服务、按需服务,数据密集服务,5.3 云服务软件开发技术需要创新发展,云计算的分布并发编程和数据库技术技术的现状 仅提供API支持和简单的工具支持,欠缺编程模式、开发框架和方法学体系 仅适用于关系较简单的海量(网页)数据的高效处理,欠缺对具有复杂关系的数据的处理能力。 在云平台中,对于开发大规模
31、复杂的企业应用软件系统而言,软件开发技术仍不充分,软件工程国家重点实验室,71,Web应用开发与云服务软件开发,软件工程国家重点实验室,72,J2EE,Map/Reduce,Struts、Spring,Eclipse、 Oracle Jdeveloper NetBeans,J2EE设计模式,IBM MapReduce Tools for Eclipse,?,?,基础API与技术架构,开发框架,IDE工具,开发方法学,5.3 云服务软件开发技术需要创新发展,Web数据库与云数据服务,软件工程国家重点实验室,73,JDBC,Herbernat、JPA、SDO、JDO,传统的关系型数据库 (Oracle、MySQL ),云数据库服务 (BigTable、HBase),Bigtable API、Hbase API,?,开发框架,API,数据库,关系代数,?,理论体系,5.3 云服务软件开发技术需要创新发展,5.4 结束语,云服务软件系统的开发技术,需要创新、发展和积累。 云服务软件系统的开发技术将提高人类的软件生产能力,满足开发更大规模、更复杂软件系统的社会需求,软件工程国家重点实验室,74,软件工程国家重点实验室,75,谢谢,