面向云计算的分布式应用自动部署框架
面向云计算的大规模分布式数据库系统设计和实现

面向云计算的大规模分布式数据库系统设计和实现随着互联网的快速发展与普及,信息化也成为了时代的潮流,各类应用不断涌现。
在这个过程中,云计算技术的发展推动了数据库系统的更新迭代,面向云计算的大规模分布式数据库系统也应运而生。
本文将探讨如何设计和实现面向云计算的大规模分布式数据库系统。
一、云计算与大规模分布式数据库系统云计算是指基于互联网的各种服务和资源的共享与交换模式,包括计算、存储、网络和应用等。
而大规模分布式数据库系统(Massively Parallel Database System,简称MPDS)则是指采用分布式多节点计算的方式,进行大规模数据处理与存储的数据库系统。
云计算与MPDS之间有着千丝万缕的联系,云计算为MPDS的发展提供了有效的技术支持和发展空间。
二、面向云计算的大规模分布式数据库系统的设计1. 技术选型在设计面向云计算的大规模分布式数据库系统时,需要进行技术选型,选择合适的技术栈。
技术选型的核心是在保证系统功能和性能的前提下,选择可靠稳定的技术和工具。
一般需要选择可扩展性强、数据一致性好的数据存储技术、高性能调度和计算引擎技术、并发控制和分布式事务管理技术,以及优秀的开源分布式系统和框架等技术。
2. 架构设计在架构设计中,需要考虑分布式、高可用以及安全性等问题。
针对分布式问题,需要设计分布式数据存储、分布式计算和分布式任务调度等。
而高可用与安全性问题则需要采用高可用技术和安全技术,比如副本机制、集群容错、数据备份、访问控制等。
3. 数据库设计数据库设计是面向云计算的大规模分布式数据库系统的关键。
在数据库设计中,需要考虑如何保证数据的一致性、高效性、可靠性和安全性等问题。
数据库设计中包括数据模型设计、数据分区设计、索引设计、数据缓存和优化等问题。
4. 数据分析在大数据时代,数据分析也成为了数据库系统的一项重要功能需求。
因此,在面向云计算的大规模分布式数据库系统中,需要设计相应的数据分析功能,包括数据挖掘、机器学习、流式计算等,这些功能可以支持企业的业务决策、识别业务趋势、分析用户行为、发现异常等。
云计算的技术架构和实现

云计算的技术架构和实现随着现代科技的不断发展,互联网技术不断更新完善,云计算作为一种全新的计算方式和数据存储方式被广泛应用。
它的出现使企业能够更快更便捷地部署和使用IT资源,同时更加灵活地配置计算能力。
在本文当中,我们将探讨云计算的技术架构和实现,以了解云计算是如何获得成功和普及的。
一、云计算的技术架构云计算是一种新型的分布式计算模式,它的技术架构包括了硬件层、平台层和应用层。
硬件层主要是指服务器资源和存储,平台层则是云计算中的操作系统,而应用层则是云计算中的应用程序。
1. 硬件层硬件层是云计算的最底层,包括了基础设施,例如服务器、存储设备等。
它们作为云计算基础设施的核心,在处理和存储数据时起到至关重要的作用。
硬件层在云计算中扮演的角色包括了两方面:一方面是统一的基础设施的资源池化;另一方面是统一的服务级别协议。
2. 平台层云计算的平台层是基于虚拟化技术的操作系统平台。
平台层的主要任务是管理和协调硬件层的资源分配,同时提供操作系统环境。
传统的操作系统只能为单台机器提供服务,而云计算中的平台层可以同时管理多个虚拟机。
这样,云计算可以实现资源的优化、资产利用效率的提高和管理成本的降低。
3. 应用层云计算的应用层是指各种云计算应用程序,如邮件服务、网站托管、数据备份等。
云计算中,应用层是用户与云计算的连接,是云计算科技能给用户提供服务的重要保证。
在传统的计算环境中,企业需要自主建立应用程序,但在云计算环境中,这些应用程序可以由云服务提供商为用户提供。
因此,云计算的应用层可以降低企业的成本和风险。
二、实现云计算的技术手段通过以上对云计算的技术架构的介绍,可以看出,云计算的实现手段主要包括了虚拟化技术、管理工具技术、网络技术等。
1. 虚拟化技术虚拟化技术是实现云计算的基本技术之一。
虚拟化技术是将一台计算机虚拟分成多个逻辑设备,从而实现多个操作系统与应用程序的并行运行。
使用虚拟化技术,可以将硬件资源以服务的方式提供给其他计算设备,实现更好的利用效率。
云计算框架与应用

第一章OpenStack是一个进行云部署的操作平台或工具集,可以控制大量的计算、存储、网络资源,但它本身不能进行虚拟化,需要依赖第三方软件。
与其它开源IaaS云平台相比,OpenStack具有项目松耦合、组件配置较为灵活、二次开发容易等优势。
搭建OpenStack环境时,一般需要控制节点、计算节点、块存储节点、对象存储节点和网络节点。
其中块存储节点、对象存储节点和网络节点不是必选节点。
OpenStack工作流程(能根据图1-5 OpenStack 概念架构图进行论述)Kubernetes是基于容器技术的分布式架构方案,也是一个开放的开发平台,既不限制编程语言,也不限定编程接口。
Kubernetes是一个典型的Master/Slave式分布式集群架构,拥有Master和Node 两类节点。
Master节点为控制节点,负责整个集群的管理;Node节点为工作节点,负责处理Master分配的工作负载。
第三章网桥是工作在数据链路层的一个物理或虚拟设备。
网桥在宿主机上创建,用于为虚拟机提供网络连接。
连接在同一个网桥上的虚拟机之间可以相互通信。
网关是在具有路由功能的设备上的一个端口。
网关为虚拟机提供三层网络的连通性。
为了减小广播域,将一个局域网划分成多个虚拟局域网VLAN,但是不同虚拟局域网VLAN的物理机和虚拟机之间需要通过网关进行通信。
为了解决服务器物理接口数量有限,不能为众多VLAN提供连接到网关的接口的问题,将物理接口划分为若干个子接口网桥或者交换机上的端口,可以配置成Access端口或者Trunk端口, Access端口只能传输同一个VLAN的数据, Trunk端口可以传输所有VLAN的数据第四章安装OpenStack的基础组件至少需要一个控制节点和一个计算节点。
安装前需要配置好时间服务,保证所有节点时间一致。
MySQL是OpenStack的数据库组件,安装在控制节点上。
RabbitMQ是OpenStack的消息队列服务组件,用于协调各服务组件之间的信息交换。
云计算的服务模型与部署模式

云计算的服务模型与部署模式云计算是指通过网络以服务的方式提供计算资源的一种技术模式。
随着信息技术的快速发展,云计算在企业和个人用户中得到了广泛应用。
在实际应用中,云计算的服务模型和部署模式起着至关重要的作用。
本文将从云计算的服务模型和部署模式两个方面深入探讨。
一、云计算的服务模型1. 基础设施即服务(IaaS)基础设施即服务是云计算中最基本的服务模型之一。
它为用户提供了硬件资源,包括服务器、存储和网络设备等。
用户可以根据需求进行资源的灵活调整和使用,而无需购买和维护实际的物理设备。
通过IaaS,用户可以实现快速扩展和灵活管理计算资源。
2. 平台即服务(PaaS)平台即服务是一种更高级别的云计算服务模型。
它在基础设施的基础上,提供了更多的应用支持和开发环境。
用户可以利用PaaS来构建、测试和部署各种应用程序,而无需关注底层的基础设施。
PaaS的优势在于可简化开发过程,提高应用程序的交付速度。
3. 软件即服务(SaaS)软件即服务是云计算中最高级别的服务模型。
通过SaaS,用户可以直接访问云端提供的各种软件应用,无需安装和维护本地软件。
常见的SaaS应用包括在线办公套件、客户关系管理系统等。
SaaS具有快速部署、按需付费和无需繁琐的软件更新等优点,大大简化了用户的软件使用和管理流程。
二、云计算的部署模式1. 公有云公有云是指由云服务提供商建设和管理的云计算基础设施,对公众开放使用。
用户可以通过公有云来获取云服务提供商提供的各种资源和服务。
公有云的优势在于成本低、易于扩展和共享资源的高度利用率。
然而,公有云也存在数据隐私和安全性的隐患,需合理评估和管理风险。
2. 私有云私有云是针对特定组织或企业建立的专属云计算基础设施。
私有云通常由企业自行建设和管理,拥有更高的数据隐私和安全保障措施。
私有云的优势在于可定制性强、可更好地满足特定需求。
然而,私有云的建设和维护成本较高,需要投入大量的人力和资源。
3. 混合云混合云是将公有云和私有云相结合的一种部署模式。
基于云计算的分布式计算系统设计

基于云计算的分布式计算系统设计随着云计算的快速发展,分布式计算系统在不同领域得到了广泛的应用,以满足日益增长的计算需求。
本文将设计一个基于云计算的分布式计算系统,包括系统架构、任务调度、数据传输和容错处理等方面。
一、系统架构该分布式计算系统采用主从结构,包括一个主节点和多个从节点。
主节点负责任务的分配和管理,从节点负责任务的执行。
1.主节点主节点是系统的控制中心,负责接收任务请求、维护任务队列、分配任务给从节点、监控任务执行状态等。
主节点还负责和从节点进行通信,以获取从节点的执行结果。
2.从节点从节点是负责实际执行计算任务的机器,每个从节点都具有计算能力和存储能力。
从节点接收来自主节点的任务分配,并执行任务。
任务执行完成后,从节点将执行结果返回给主节点。
二、任务调度对于一个分布式计算系统来说,任务调度是一个关键的环节。
合理的任务调度可以提高系统的运行效率和资源利用率。
1.任务分配主节点根据任务量和从节点资源状况,将任务分配给空闲的从节点。
可以采用基于优先级、负载均衡、任务类型等因素的任务调度算法来决定任务的分配顺序。
2.任务监控主节点需要实时监控任务的执行状态和从节点的可用性,以及时发现故障并采取相应的处理措施。
可以通过心跳机制或定时检测的方式进行任务监控。
三、数据传输在分布式计算系统中,数据传输是一个重要的环节。
合理的数据传输策略可以减少网络延迟和提高系统的吞吐量。
1.数据划分对于大规模的数据集合,需要将数据划分成多个小块,以便分布式计算系统能够并行处理。
可以采用哈希、范围等划分策略。
2.数据传输主节点将任务和数据分配给从节点后,从节点需要从主节点获取任务和数据。
可以采用点对点的数据传输方式,通过网络传输数据。
可以使用TCP或UDP等协议来进行数据传输。
三:容错处理分布式计算系统需要具备良好的容错性,以保证系统的稳定性和可靠性。
1.节点故障检测与恢复在分布式计算系统中,节点故障是不可避免的。
主节点需要检测节点的故障,并将任务重新分配给其他健康的节点,以保证任务的顺利执行。
请简述云计算应用开发中用到的技术

请简述云计算应用开发中用到的技术在云计算应用开发中,常用的技术包括:1. 虚拟化技术:用于在云平台上创建虚拟资源,包括虚拟机、虚拟存储、虚拟网络等。
常见的虚拟化技术包括VMware、KVM、Hyper-V等。
2. 容器技术:用于实现应用程序的快速部署和动态扩展。
容器技术可以将应用程序及其依赖项打包成一个独立的运行环境,可以在不同的云平台上进行移植。
常见的容器技术有Docker、Kubernetes等。
3. 自动化部署和配置管理:利用自动化工具,如Ansible、Chef、Puppet等,实现应用程序的自动化部署和配置管理,提高开发和运维效率。
4. 微服务架构:将应用程序拆分为多个小型的、相互协作的服务,每个服务运行在独立的容器中,并通过API进行通信。
微服务架构能够实现敏捷开发、快速迭代和弹性扩展。
5. 分布式计算:通过将任务分解为多个子任务,并并行处理,实现高性能计算和大规模数据处理。
常见的分布式计算框架包括Hadoop、Spark等。
6. 数据存储和管理:云计算应用需要对海量数据进行存储和管理。
常见的数据存储技术包括关系型数据库(如MySQL、PostgreSQL)、NoSQL数据库(如MongoDB、Redis)、分布式文件系统(如HDFS、GlusterFS)等。
7. 性能监控和故障处理:利用监控工具和日志分析工具,实时监测应用程序的性能指标,并及时发现和处理故障。
常用的监控工具有Zabbix、Prometheus等。
8. 安全和隐私保护:云计算应用需要采取一系列的措施来保护数据的安全和隐私。
例如,通过身份认证和访问控制机制来限制对资源的访问,通过加密技术来保护数据的传输和存储。
9. 弹性计算和自动化伸缩:云计算应用可以根据需求动态分配和释放计算资源,实现弹性扩展。
通过自动化伸缩的方式,应用可以根据流量和负载情况自动调整资源的数量。
10. 服务化架构和API管理:云计算应用通常通过提供服务接口来实现功能的开放和共享。
云计算平台的架构与实现

云计算平台的架构与实现云计算是指通过互联网将计算资源和服务提供给用户的一种计算模式。
云计算平台是构建和运行云计算的基础设施,它的架构和实现决定了云计算系统的性能、可靠性和可扩展性。
本文将探讨云计算平台的架构和实现,以及其在实际应用中的一些关键技术。
一、云计算平台的架构云计算平台的架构主要包括以下几个组成部分:1. 前端界面前端界面是用户与云计算平台进行交互的接口,通常采用Web界面的形式。
用户可以通过前端界面访问和管理自己的计算资源和服务,例如虚拟机、存储空间等。
2. 资源池资源池是云计算平台中用于存储和管理大量计算资源的组件。
资源池可以包括物理服务器、虚拟机、存储设备等。
通过资源池,云计算平台可以实现资源的有效管理和调度,提高资源利用率。
3. 虚拟化层虚拟化层是云计算平台中的核心组件,提供虚拟化技术以实现资源的隔离和共享。
虚拟化层可以将物理资源转化为虚拟资源,使得用户可以按需使用资源,提高资源利用率。
4. 分布式存储分布式存储是云计算平台中的重要组件,用于存储和管理用户的数据。
分布式存储通过数据切分和冗余备份的方式,提高数据的可靠性和可扩展性。
常见的分布式存储技术包括Hadoop、Ceph等。
5. 网络互联网络互联是云计算平台中不可或缺的一部分,用于实现不同组件之间的通信和数据传输。
高速、可靠的网络互联可以提高云计算平台的性能和响应速度。
以上是云计算平台的主要架构组成部分,不同的云计算平台可能有不同的细节实现,但总体的基本架构是相似的。
二、云计算平台的实现云计算平台的实现涉及到多个方面的技术和工具,下面简要介绍一些关键的实现技术。
1. 虚拟化技术虚拟化技术是云计算平台的核心技术之一。
通过虚拟化技术,可以将物理服务器划分为多个虚拟机,使得用户可以按需使用计算资源。
常见的虚拟化技术包括VMware、KVM、Hyper-V等。
2. 分布式存储技术分布式存储技术是实现云计算平台中分布式存储的关键技术。
云计算知识:云计算的技术架构及原理

云计算知识:云计算的技术架构及原理云计算的技术架构及原理随着云计算的发展和普及,越来越多的企业和个人用户开始使用云计算技术,以提高计算和存储资源的利用效率,从而实现快速开发和部署应用程序、加强数据安全、降低成本、提高竞争力等目的。
那么,什么是云计算?云计算的技术架构和原理又是什么呢?下面将进行简单的介绍。
一、云计算简介云计算是一种基于互联网的计算模式,其基本思想是将计算和存储资源通过网络进行集中和共享,以达到提高资源使用效率的目的。
这样可以让用户通过任何网络连接或设备(例如,智能手机、平板电脑、笔记本电脑、台式机等)访问计算和数据资源,而不必拥有这些资源。
云计算按照服务模式可以分为三种类型:基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platformas a Service,PaaS)和软件即服务(Software as a Service,SaaS)。
IaaS模式为用户提供虚拟化的基础设施,例如虚拟服务器、存储资源、网络等,用户可以根据需要自行部署和管理应用程序和数据。
PaaS模式为用户提供基于云平台的运行环境和开发工具,用户不必关心基础设施的问题,而只需将应用程序和数据部署到云平台上,即可实现快速开发和部署。
SaaS模式为用户提供基于云平台的应用程序和数据服务,例如电子邮件、在线办公、客户关系管理(CRM)等,用户只需通过浏览器或其他终端设备访问这些服务即可。
二、云计算的技术架构云计算的技术架构涉及到多个层面,包括基础设施层、平台层、应用层和管理层。
这些层面组成了云计算的技术架构,用于支持和管理云计算的各种服务和功能。
1.基础设施层基础设施层是云计算架构的底层,包括物理服务器、虚拟化技术、存储设备、网络等,用于提供IaaS类型的云服务。
由于基础设施是云计算的核心,因此基础设施的可靠性和性能十分重要,对于云计算的稳定和可用性至关重要。
2.平台层平台层是云计算架构的中间层,提供PaaS类型的云服务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2017-08-08 修回日期:2017-12-13 网络出版时间:2018-02-24基金项目:国家自然科学基金;金融信息平台 新华08”金融财经数据云服务平台科研专项(TC 16037XX /01)(61602454)作者简介:李 超(1984-),男,工程师,研究方向为系统架构设计㊁微服务与容器管理㊁DevOps 技术㊂网络出版地址:http :// /kcms /detail /61.1450.TP.20180224.1525.096.html面向云计算的分布式应用自动部署框架李 超1,花 磊2,宋云奎2(1.新华通讯社中国经济信息社有限公司,北京100083;2.中国科学院软件研究所,北京100190)摘 要:云计算环境下的分布式应用规模巨大㊁交互复杂㊁层次众多,增加了应用部署的复杂度㊂同时,应用通常同时部署在多个云平台上,而异构云服务API 缺少统一标准,导致了多云之间不可互操作㊂针对以上问题,面向云计算环境,提出一种细粒度弹性应用自动部署框架CADep ,以管理云计算平台内部服务与基于云平台的业务组件之间的交互关系,并连接各种部署进程和资源㊂该框架使用轻量级的微内核实现了应用部署的核心机制,并通过可定制组件扩展部署功能㊂同时,通过分层描述应用及其执行环境,实现了细粒度的资源管理㊂实验结果表明,与当前分布式应用部署框架相比,CADep 具有较短的部署时间,有效减轻了部署的工作量,降低了部署的难度㊂关键词:分布式应用;应用部署;部署框架;云计算中图分类号:TP 39 文献标识码:A 文章编号:1673-629X (2018)06-0012-05doi :10.3969/j.issn.1673-629X.2018.06.003Deployment Framework for Distributed Applications inCloud ComputingLI Chao 1,HUA Lei 2,SONG Yun -kui 2(1.China Economic Information Service Co.,Ltd.,Xinhua News Agency ,Beijing 100083,China ;2.Institute of Software ,Chinese Academy of Sciences ,Beijing 100190,China )Abstract :Distributed applications in cloud computing have many components ,complex interactions and various layers ,so deploying these applications is difficult.Furthermore ,multiple cloud computing platforms have different service APIs ,so these cloud services cannot coop⁃erate with each other.For this ,we propose a fine -grained flexible deployment framework CADep for distributed applications in cloud computing to manage cloud services and interactions with application components ,and then integrate various deployment processes and resources.CADep with a light -weight micro -kernel uses a component -based framework to improve the extensibility of application de⁃ployment.Furthermore ,it uses the hierarchy description of applications and contexts to manage components in a fine granularity.Experi⁃ment shows that compared with typical deployment frameworks ,CADep has short deployment time ,reduces work amount and decreases operational difficulty.Key words :distributed application ;application deployment ;deployment framework ;cloud computing0 引 言在云计算环境下,分布式应用通常具有多个应用组件,同时部署在众多节点,因此云应用的配置管理面临着巨大挑战㊂首先,云计算引入了虚拟机(VM ),增加了配置管理的复杂度;同时,应用通常需要同时部署在多个云上,而云计算平台的API 缺少统一标准,导致了多云之间不可互操作㊂以云计算环境下典型的三层架构电子商务应用Rubis 部署为例,分析分布式应用部署所面临的问题㊂Rubis 是基于Servlet 的JavaEE应用,实现了类似于eBay 的网上交易应用,提供了交互型事务处理功能,如注册新用户㊁浏览㊁购买商品㊁付款㊂管理员使用Apache 作为Web 服务器分发请求,Tomcat 作为应用服务器处理请求,MySQL 作为数据库服务器提供数据存取㊂客户请求处理分为与资金相关的关键型业务处理和与浏览相关的非关键业务处理㊂在实际应用中,通常将关键业务部署在公司的私有云计算平台,由本地主机集群组成;而非关键业务,部署在接近客户的公有云中托管㊂公司会根据云计算第28卷 第6期2018年6月 计算机技术与发展COMPUTER TECHNOLOGY AND DEVELOPMENT Vol.28 No.6June 2018市场上的虚拟机租用价格,将应用运行在不同的公有云计算平台(如阿里云㊁百度云),当价格调整则将应用从一个云迁移到另一个云并进行自动化配置部署㊂同时,需要细粒度的应用管理,这样可以根据更新或迁移需要来决定操作WAR包还是其中的某个Servlet㊂针对该典型的应用部署实例,当前的分布式应用部署技术无法适应云计算环境,主要表现在以下几点:在云计算环境中,应用在VM中运行,而VM运行在物理机(PM)上,需要考虑多层部署问题;应用的运行环境是动态的,在整个生命周期内会在不同的云之间迁移,需要支持混合云部署;多个应用组件在不同云平台上部署,并且组件依赖关系存在着多样性,需要支持细粒度的应用部署管理㊂因此,文中提出了一个面向多云环境的可伸缩细粒度的应用自动部署框架CADep,用来管理云平台内部与基于云的业务单元之间的交互,以连接各种部署进程和相关资源㊂CADep主要设计思想如下:使用分层描述方法对应用和执行环境进行细粒度的描述;提供一组可重用组件,其中每个组件执行特定功能;实现了基本部署管理机制以感知环境,并根据环境与业务应用做出相应调整㊂1 相关工作当前的许多应用部署研究都是专门针对单个云平台或单一类型应用㊂文献[1]提出了基于Xen的云平台自动部署框架㊂文献[2-3]提出了PM㊁VM和应用等三个层次的云应用部署的描述语言㊂文献[4]提出了与云平台无关的可移植的应用部署的编排语言㊂文献[5]提出一种自动化部署与监控Hadoop平台的系统方案,自动化部署Hadoop平台,并监控集群及其中各个服务的状态㊂文献[6]提出一种结合Docker容器技术部署集群的解决方案,把Ambari及其运行环境和配置构建成Docker镜像,并把多节点容器的运行和Hadoop集群的部署过程写成Shell脚本,通过命令实现集群的自动化部署㊂文献[7]对Apache ODE结构以及部署㊁执行BPEL流程的原理进行分析,设计算法自动生成部署描述文件和服务的WSDL描述等,从而实现Apache ODE引擎环境下服务组合的自动化部署和执行㊂文献[8]基于用户审计与SSH单向信任安全机制,着力于规范化㊁流程化,设计自动化部署方案㊂文献[9]提出一种可运营的网络自动化部署架构,并对电信运营商开展多业务㊁多租户承载的云资源池网络自动化部署技术选型给出了建议㊂文献[10]利用可扩展的通用部署引擎来管理各种应用,从而减少生成定制引擎的步骤以减少构建开销㊂Bootware[11]创建部署引擎以部署应用实例,其使用通用部署引擎㊂文献[12]复用现有多样化开源系统,将不同类型的部署可执行程序转换为基于TOSCA标准的构件㊂云提供商提供了建模和编排工具[13],同时提供了PaaS (Platform-as-a-Service)服务[14],调用该服务可以部署和管理应用实例,而不需要显式建模应用拓扑㊂文献[15]提出一种便于移动应用开发和部署的整合方案,从设备属性㊁用户偏好以及QoS需求等多重维度入手,采用体系结构驱动的方法对应用进行建模,并生成满足用户个性化需求的部署方案㊂以上方法难以实现多云混合部署场景,将应用或部分应用自动化迁移非常困难㊂同时,必须通过开发自定义的粘合代码来手动包装,因此只适用于特定部署场景,缺乏通用性㊂2 分布式云应用自动部署框架CADep2.1 架构设计CADep设计目标是能够描述复杂分布式应用,并自动实现整个应用或各应用组件的灵活部署㊂该框架提供了微内核机制,通过动态插入新的功能组件来应对新的应用和部署环境,从而具有灵活性,以支持部署规模的伸缩以及应用的动态重配㊂图1描述了CADep架构,由以下几个模块构成:图1 CADep系统架构(1)部署管理器(DM):提供VM接口以管理VM 及其应用,在PM中实例化VM及其应用㊂(2)代理:部署在VM的软件组件,使用插件对应用实例进行部署和管理,并支持不同部署技术(如An⁃sible㊁Puppet)㊂CADep使用轻量级微内核,插件可以灵活加入内核,通过异步消息实现服务器间通信㊂(3)应用实例管理器:作为CADep的插件,在不同的软件平台上监控应用实例并管理其生命周期㊂(4)消息服务器:负责在DM和代理之间通过消息服务器进行异步通信,包括消息定义㊁消息服务器与应用实例的交互接口㊂(5)构件和镜像库:可以从本地或公共存储库中管理和检索软件包与VM镜像㊂镜像库将每个需要的㊃31㊃ 第6期 李 超等:面向云计算的分布式应用自动部署框架VM镜像映射到相应的基础设施组件,所需的VM镜像可以是公共VM镜像库中的可用镜像或者是人工创建的镜像文件㊂(6)管理控制台:基于Shell的控制台和基于An⁃gularJS的Web应用,提供不同用户界面,将Java Bean 转换为JSON并通过REST与部署管理器进行交互㊂CADep负责启动VM并部署软件,在软件组件之间动态解析依赖关系,更新组件配置,并启动所有组件㊂CADep以非侵入方式管理应用生命周期,支持应用组件弹性伸缩的热重配,并且保持组件启动或停止时的一致性㊂应用组件为其他应用组件提供服务,并且依赖于其他应用组件所提供的服务㊂应用组件使用消息队列进行通信,并根据部署或启动的服务执行相应的操作,而这些操作由插件实现(如Java的Servlet㊁OSGi的Bundle)㊂CADep采用基于RESTFul的分布式通信技术,支持IaaS层或PaaS层的云应用部署,能够满足多云需求,如组件细粒度的分层描述,动态的依赖管理,并发的组件部署,多云的分布式部署,以及制定可配置的部署计划㊂2.2 部署方法2.2.1 系统配置CADep将分布式应用作为相互调用的组件集合,并且定义相关导入\导出的相关变量㊂典型的分布式架构应用(如Rubis)通常包括表示层(如Apache)㊁逻辑层(如Tomcat)和数据层(如MySQL)㊂其中,组件是指Apache,而实例是指部署在特定主机的Apache 实例,组件之间交换数据是字符串或结构化数据㊂分布式应用的组件需要导入\导出变量(如IP地址或端口号),需要来自其他应用的变量为 导入变量”,其他应用组件需要的变量为 导出变量”,例如,Apache导入来自于Tomcat变量,即应用服务器的IP地址和端口号㊂此外,组件可以继承导入\导出变量的默认值,如Tomcat组件可以继承 应用服务器”组件的属性㊂文中定义了组件与实例的导入\导出变量,表1给出了Apache和MySQL的组件配置,其中,安装参数是强制的组件属性,指定了CADep的插件以管理部署组件实例㊂文中采用Ansible作为插件,导入变量列出了启动前需要被解析的变量㊂例如,Tomcat导出IP变量,依赖组件将导入该变量;MySQL导出了其他组件所需要的变量,而无需从其他组件导入变量㊂表1 组件配置部署组件安装参数导入变量导出变量Apache Ansible Tomcat.portAJP,Tomcat.ipXMySQL Bash XMySQL.ipMySQL.port 配置文件包括应用描述符与应用关系图,前者包含应用的元信息(名称㊁版本限定符),后者描述了软件组件(如虚拟机㊁云平台㊁应用包),并且定义了包含和运行时关系㊂包含关系描述了可以在一个组件上部署另一个组件,例如,在VM上部署Tomcat服务器,或者在Tomcat服务器上部署Web应用㊂运行时关系描述了共同工作的组件,例如,Web应用需要数据库(包括数据库的IP地址和端口)㊂这些信息通常采用硬编码,而CADep在运行时解析,通过配置或管理API来更新组件(如JMX㊁REST),可以并行部署Apache㊁Tomcat和MySQL㊂Tomcat部署时,在获得数据库位置之前,将无法启动㊂数据库部署并启动后,CADep将更新Tomcat配置,以便获得MySQL位置,从而形成运行时间依赖关系㊂CADep列出了开发人员希望部署或可能部署的应用组件,包括部署的根节点(如VM㊁设备㊁远程主机)㊁数据库㊁应用服务器㊁应用模块(如WAR,ZIP)㊂将应用作为组件的层次结构,准确追踪系统中实现的实例,从而在动态部署中做出决策㊂分层模型解析包含关系,以及导入\导出变量模型的运行时关系,同时,使用图来决定哪些组件可以实例化以及如何部署㊂图中建模的内容是各种粒度的组件,将应用组件进行捆绑,例如将给定的WAR与应用服务器相关联㊂CADep为部署的应用提供三个文件㊂第一个文件包含CADep配置的应用描述文件,该文件描述了应用信息,如应用名㊁功能描述㊁模型文件的位置等;第二个文件描述了应用组件之间的关联图,其中,组件是安装的软件,也可以是部署的VM等;第三个文件提供了部署组件所需的资源(如脚本㊁软件包㊁配置文件)㊂在运行时,CADep首先实例化组件,对实例进行分层结构描述,然后对其配置以准备部署㊂如果根组件带有子组件,那么必须在根实例中定义子实例,并且将实例的属性覆盖组件的属性,例如,如果Tomcat组件导出具有默认值8080的端口属性,则实例可能会以实际端口(如8081)覆盖㊂2.2.2 初始部署文中使用三层架构的应用实例来描述CADep的工作方式㊂图2描述了组件之间的依赖关系,在云计算平台弹性伸缩的场景中,可以对多个Tomcat节点进行增\删,以适应负载的变化,但需要对Apache节点进行动态重新配置,使得请求转发模块可以感知所有可用的Tomcat节点㊂CADep在3个独立的虚拟机中部署Apache㊁MySQL和Tomcat,并在特定依赖关系下更新配置文件,例如,CADep发现MySQL的IP地址和端口号时,发送到Tomcat节点,这样它就可以更新配置并启动㊂VM支持Apache㊁Tomcat或MySQL组件㊃41㊃ 计算机技术与发展 第28卷的部署,并且每个组件都以导入\导出形式进行描述㊂有了该描述信息,CADep就能够感知何时可以启动部署组件,通过导入\导出配置信息来实现组件之间的数据交换,同时,实现应用组件的生命周期管理,例如,在导入配置信息时启动组件㊂图2 组件描述2.2.3 动态重部署当系统处于运行状态,创建㊁更改或删除实例时,需要指定要实例化或修改的组件,重命名组件实例并定义部署位置㊂例如,由于负载增加,需要自动添加新Tomcat实例的VM,创建新的VM实例,代理会监测到运行环境的变化,并向DM发送通知㊂CADep提供了规则来响应检测到的变化,DM执行相应动作对环境变化做出响应㊂例如,CADep从本地Zabbix的Agent 中获取CPU等度量,如果度量超过阈值,则将运行状态发送给DM㊂DM调用请求处理程序来响应该消息,添加完整路径以及两个实例到应用模型中㊂在添加过程的开始阶段,这两个新程序都没有启动,后来由DM部署并启动它们㊂DM首先创建VM,向VM发送部署命令,并在上面部署新的Tomcat实例;然后, CADep代理将该实例的相关信息进行发布,即新Tomcat实例的IP地址和端口号;Apache负载均衡器会收到该信息,部署在该VM上的代理将调用一个CADep插件来更新Apache服务器的配置文件,这样负载均衡器就可以感知这两个Tomcat服务器㊂3 实例研究3.1 实验1:部署时间比较3.1.1 实验环境CADep解析组件的动态依赖关系,同时并发部署组件㊂CADep与典型的部署框架Cloudify㊁RightScale 和Scalr进行部署时间的对比,每个框架分别重复部署10次㊂文中选择阿里云作为部署应用的云计算平台,使用Ansible作为CADep的安装插件,部署Rubis应用㊂如果用户可以使用Web浏览器连接并登录Ad⁃ministration页面,并创建数据库,则表明部署成功㊂每个框架都有自己的生命周期管理,将所有这些状态分成启动和运行等两个阶段㊂(1)启动阶段:客户端发送 部署”请求到DM, DM处理请求,并获得脚本和其他必要的文件,启动脚本(包括设置代理㊁向DM发送启动信息等)㊂具体步骤包括:资源供给㊁启动虚拟机㊁部署Apache㊁MySQL㊁Administration㊂(2)运行阶段:系统执行脚本,在服务器上运行服务或组件,包括预设状态(下载tarball㊁传输脚本和必要的文件到VM㊁准备运行时环境等),配置,安装(将资源和配置文件放置到正确位置,并设置权限等),预启动(建立软件组件的依赖关系),启动,生效(更新变量,配置监控)㊂具体步骤包括:启动Apache㊁MySQL㊁Administration㊂3.1.2 实验结果与分析表2给出了应用部署时间的比较,部署时间为从启动到最后一个组件正确安装的时间㊂实验结果表明,CADep的部署时间明显比其他框架都要低;Scalr 与CADep的部署阶段的时间最为接近;运行阶段的时间比CADep的少,这是由于其不解析服务间的动态依赖关系;在Scalr中,组件之间的依赖关系是通过We⁃bUI中的配置来交换部署信息,虽然时间较短,但操作复杂,易于出错㊂表2 应用部署时间比较 sCADep Cloudify RightScale Scalr 启动阶段164227178182运行阶段209384286197总计373611464379 3.2 实验2:部署工作量3.2.1 实验环境该实验基于OSGi的SPECjms2007基准测试应用,部署在阿里云的VM上㊂OSGi应用通常由一个或多个OSGi组件构成,以提供应用的运行时环境并管理OSGi组件,如Joram㊁JNDI㊂使用阿里云的两个VM实例,分别选择Felix或Equinox作为底层OSGi 框架以管理Joram实例㊁OSGi JNDI实例和JMS OSGi 客户端,由 osgi-bundle”安装程序管理㊂由于Cloudi⁃fy提供了脚本语言,可以用来表达分布式应用结构,故选择了Cloudify作为比较对象,但CADep以分层结构描述应用,而Cloudify则以扁平结构描述应用㊂3.2.2 实验结果与分析CADep用户只需要为每个阿里云VM实例分别编写一个部署计划,而多个OSGi组件(包括Joram㊁CADep㊁JNDI)可以重用相同的部署计划㊂然而, Cloudify用户则需要为VM实例和每个组件分别编写一个对应的部署计划,总共需要编写六个部署计划,是CADep编写部署计划工作量的两倍㊂该实验结果表明,CADep具有细粒度描述组件的能力,具有较好的㊃51㊃ 第6期 李 超等:面向云计算的分布式应用自动部署框架适用性,能够减少开发部署计划的工作量㊂3.3 实验3:部署复杂度3.3.1 实验环境在多云平台上部署流数据处理系统Storm集群以执行流数据处理,将CADep和根据说明书手动部署时间进行比较㊂Storm由Zookeeper集群㊁Nimbus服务器㊁Storm管理器组成,需要安装JZMQ㊁ZeroMQ和Python㊂该实验在多云环境中进行,使用两个公有云(阿里云和百度云)和一个私有云(Xen Serve)㊂CADep为这些云提供了三个IaaS插件,以协调IaaS 平台间的服务调用,其中每个插件都需要实现API Ja⁃va接口㊂实现这些插件的代码行数分别为:阿里云196行代码,百度云387行代码,而Xen Server是132行代码㊂Zookeeper安装在阿里云,Nimbus安装在百度云,Storm安装在Xen Server私有云平台㊂3.3.2 实验结果与分析Storm的在线安装指南有8页长度的篇幅,同时也有许多依赖的外部文档链接㊂要求一名未曾安装过Storm的软件运维工程师按照安装指南手动对其进行配置,其第一次安装用了7小时18分钟,第二次安装用了4小时12分钟,而第三次安装则用了1小时14分钟㊂理解描述不够详细的安装说明㊁解决环境问题㊁寻找\下载所需的依赖包以及调试等操作消耗了其大量时间㊂同样的工作是由另一位从未配置安装过Storm的软件运维工程师使用CADep完成,时间主要用于编写Zookeeper,Nimbus,Supervisors,JZMQ,Ze⁃roMQ和Python的部署计划㊂他编写140行左右的Storm组件的部署脚本,配置之后可以通过CADep对Storm进行管理(部署㊁启动㊁停止㊁反部署㊁更新),并自动连接到其他应用㊂部署脚本开发时间大约是2小时35分钟,其中,38分钟用来设计组件,75分钟用来编写脚本,42分钟用于调试和测试㊂如果需要从In⁃ternet上下载所需的包,安装Storm需要26分钟;如果从本地存储库检索包,安装Storm大约9分钟㊂使用CADep自动化安装Storm,可以使得开发者在多云上部署其应用,而无需了解实现的技术细节㊂同时, CADep保证了过程的可重复,为大规模系统部署提供了便利㊂该实验结果表明,CADep能够支持多云分布式环境的部署,同时降低了分布式应用部署的复杂性㊂4 结束语CADep是细粒度可伸缩的多云部署框架,基于轻量级微内核实现了基本部署机制,使用动态可插拔组件实现了应用部署的改进和扩展㊂同时,框架多层次细粒度描述应用和执行环境,实现了组件(如PM㊁VM㊁应用)的精细管理㊂实验结果表明,与典型的分布式应用部署框架相比,CADep具有较短的部署时间,有效降低了部署的工作量,减轻了部署的难度,适用于多云环境下复杂分布式应用的高效部署㊂参考文献:[1] ZHANG Youhui,LI Yanhua,ZHENG Weimin.Automaticsoftware deployment using user-level virtualization for cloud-computing[J].Future Generation Computer Systems, 2013,29(1):323-329.[2] DE ALFONSO C,CABALLER M,ALVARRUIZ F,et al.Infrastructure deployment over the cloud[C]//Third interna⁃tional conference on cloud computing technology and sci⁃ence.Athens,Greece:IEEE,2011:517-521.[3] SEINTURIER L,MERLE P,FOURNIER D,et al.A compo⁃nent-based middleware platform for reconfigurable service-oriented architectures[J].Software Practice&Experience, 2012,42:559-583.[4] BINZ T,BREITER G,LEYMANN F,et al.Portable cloudservices using TOSCA[J].IEEE Internet Computing,2012, 16(3):80-85.[5] 于金良,朱志祥,李聪颖.Hadoop平台的自动化部署与监控研究[J].计算机与数字工程,2016,44(12):2457-2461.[6] 李 杰,刘广钟.Hadoop分布式集群的自动化容器部署研究[J].计算机应用研究,2016,33(11):3404-3407. [7] 黄 亮,姚放吾,金仙力.Apache ODE环境下Web服务组合技术的研究[J].计算机技术与发展,2011,21(7):98-100.[8] 王海侠,吴爱华,曾卫明.基于JBoss和Tomcat的自动化部署研究[J].现代计算机,2015(13):38-42. [9] 赖培源,马卫民,刘 艺,等.云资源池网络自动化部署技术研究与实践[J].电信科学,2015,31(7):96-103. [10]LU Hongbin,SHTERN B,SIMMONS M,et al.Pattern-based deployment service for next generation clouds[C]//Ninth world congress on services.Santa Clara,CA,USA:IEEE,2013:464-471.[11]VUKOJEVIC-HAUPT K,KARASTOYANOVA D,LEY⁃MANN F.On-demand provisioning of infrastructure,mid⁃dleware and services for simulation workflows[C]//6th in⁃ternational conference on service-oriented computing&ap⁃plications.Koloa,HI,USA:IEEE,2013:91-98. [12]ANDRIKOPOULOS V,REUTER A,GOMEZ-SAEZ S,etal.A GENTL approach for cloud application topologies[C]//Service-oriented and cloud computing.[s.l.]:[s.n.],2014:148-159.[13]ROSNER T.Learning AWS OpsWorks[M].UK:Packt Pub⁃lishing Ltd,2013.[14]COUTERMARSH M.Heroku cookbook[M].UK:PacktPublishing Ltd,2014.[15]张晓薇,曹东刚,陈向群,等.一种网络化移动应用部署方案优化方法[J].软件学报,2011,22(12):2866-2878.㊃61㊃ 计算机技术与发展 第28卷。