云应用引擎技术的研究与策略
2018-01-09范平平
范平平
【摘 要】随着互联网技术和云计算技术的发展,应用引擎技术已经相当成熟,它是一种新的应用开发模式。这种开发模式避免了传统开发模式技术门槛高、开发效率低、开发维护成本高等缺陷,可以大大提高开发者的工作效率和节省成本。本文详细阐述了应用引擎技术的三个关键技术:应用托管运行技术、数据库服务技术、开发测试服务技术。针对应用引擎的技术发展和成熟度进行了深入研究,提出了应用引擎的发展策略,具有很强的研究价值。
【关键词】应用引擎;云计算;关键技术
1 技术概述
应用引擎是指基于网络侧的软件资源构建的应用部署运行平台,它整合了应用容器、中间件和数据库等应用基础软件,向开发者提供应用开发、部署、运行和运维服务,与IaaS 托管技术相比,应用引擎从软件底层架构层面解决了可扩展性、可靠性等问题,简化了应用的部署和运维模型,让开发者更专注于业务本身的实现。
2 云应用引擎涉及的主要关键技术
2.1 应用托管运行技术
应用托管运行技术基于IaaS 基础资源构建云应用的托管运行环境,实现云应用快速部署、可靠运行、弹性扩展和安全隔离。从资源共享和隔离的角度看,应用托管运行环境可分为虚拟机容器、操作系统容器和中间件容器三种类型:虚拟机容器采用“虚拟机+OS+中间件容器+应用实例”的托管堆栈,每个虚拟机部署一个应用实例,多个应用实例共享同一个物理主机,以虚拟机为粒度进行资源隔离和资源调度,可严格控制每个应用实例的CPU、内存和磁盘配额,开发者可自主选择和控制虚机容器中的操作系统和中间件,应用托管的灵活性和应用安全隔离度最高,而资源利用率和部署的效率最低。
操作系统容器采用“虚拟机+OS+系统容器+中间件容器+应用实例”的托管堆栈,基于Linux Container 等轻量级的系统容器,每个系统容器部署一个应用实例,多个应用实例共享同一个操作系统;通过kernel namespace 实现对用户容器的进程、网络、消息、文件系统、主机名等的隔离,使容器对外展现出独立计算机的能力,从而实现容器在OS 层面的隔离;通过cgroups 实现以系统容器为粒度的资源调度和度量,可控制每个应用实例的CPU、内存、磁盘配额;基于AUFS等文件系统的分权、分层特性构建容器镜像,实现应用实例的复制、移动和重建;开发者可自主选择和控制系统容器中的中间件,既兼顾了部署的灵活性,又提升了资源利用率。
中间件容器采用“虚机+OS+中间件容器+应用沙箱+应用实例”的托管堆栈,多个应用实例共享同一个中间件容器,通过应用沙箱实现应用内存隔离和API控制,严格限制应用对本地I/O、线程等资源的调用,开发者不仅无法自主选择中间件版本,还必须按照中间件容器的API 限制对应用进行适当的改造,这种类型的容器其资源利用率和部署速度最高,而部署灵活性最差。
2.2 数据库服务技术
数据库服务为托管应用提供多租户的关系或非关系数据库服务,开发者以租赁的方式使用数据库服务,无需关心数据库的部署和维护。数据库服务主要分为SQL 数据库服务、NoSQL 数据库服务两种类型:
SQL 数据服务以传统关系数据库为基础,为应用提供兼容传统关系数据模型、支持ACID强一致性事务数据库服务,如MysqlCat、PostGres+、Windows SQLAzure、Oracle Apex、Database.com等。
NoSQL数据服务基于分布式非结构化数据库提供多租户非结构化数据的存储、查询和备份服务,具有良好的水平扩展能力,不支持ACID强事务一致性,只支持最终事务一致性,如Garantia Data、MongoDB。
2.3 开发测试服务技术
应用开发环境用于开发可部署在应用引擎上的云计算应用,它支持应用引擎特有的开发语言,提供开发云应用所需的类库、组件、程序框架和调试工具,降低云应用的开发门槛。应用开发环境可分为本地集成开发环境和在线Web 开发环境两类:本地开发环境通常是在传统的IDE(如Eclipse、VisualStudio)上集成了开发云应用的专用插件,云应用在本地完成开发调试之后再打包部署到应用引擎上;在线Web 开发环境是基于浏览器的一种在线开发工具(如CloudIDE、Force.com),它集成了构建Web 应用所需的模板和控件,开发的应用可以直接加载到应用引擎上运行。
应用测试环境提供了用于测试和验证云应用的工具和服务,包括仿真测试环境和真实测试环境:仿真測试环境是应用引擎的模拟器,可模拟应用引擎的接口、行为和功能,供开发者在本地对云应用进行测试;真实测试环境是可进行端到端真实测试的多租户测试平台,通常是全功能的应用引擎副本或生产环境的应用引擎测试去,真实测试环境拥有与应用引擎相同的功能,仅仅在平台资源和访问对象上受到一定限制。
3 云应用引擎技术的主要技术发展
(1)开源技术逐渐成为主流应用引擎的普遍选择,最大的互联网公有PaaS平台Heroku 和最大的私有PaaS 平台CloudFoundry 均完全采用开源的容器和数据库,最大的企业PaaS 平台Microsoft Azure 也开始引入开源的Hadoop、ode.JS。
(2)硬件资源池逐步向软件资源池迁移,在IaaS 硬件资源的基础上叠加中间件软件资源池,提供IaaS+中间件服务已成为Amazon、Microsoft、阿里等诸多国内外云运营商的选择。
(3)强化了移动应用的服务端支持,Azure、Heroku、AppFog、DotCloud、CloudFoundry、Parse 等主流应用引擎均提供了RESTFul 服务生成、JSON 消息处理和WebSocket 服务端框架以简化移动应用服务端的开发。
(4)操作系统容器技术的发展, Docker的分层镜像技术提供了轻量级、可移植、增量式的应用部署方案,有助于实现应用的自动化部署、增量升级和统一监控管理。
(5)应用集群部署技术的发展,Cloudify 提供了基于脚本编排的应用集群部署技术,通过应用集群部署脚本快速完成大型应用集群的部署,包括应用容
器、数据库、负载均衡的安装、配置和激活。
(6)NewSql 数据库技术的兴起,NewSQL 数据库在SQL 数据库的基础上引入了内存计算、透明分片和分布式事务机制,大大增强了SQL 数据库的性能和容量扩展能力。
4 云应用引擎技术应用成熟度
(1)应用托管运行技术方面
基于虚拟机容器的应用托管技術已发展成熟,亚马逊、Microsoft、IBM 等传统IaaS 厂家都已在其公有或私有IaaS 平台上推出IaaS+中间件形式的应用托管服务,开源的Cloudify 实现了基于虚机容器的应用集群自动化部署、调度和监控,逐步在国内外的多个私有PaaS 项目中得到应用。
基于中间件容器的应用引擎如GAE164、HeroKu,虽然目前占据了最大的互联网应用引擎市场份额,然而由于多应用共享中间件带来的安全隔离度低、系统资源争用冲突、应用迁移困难等问题仍然存在,导致这类应用引擎主要还是用于小微型互联网应用托管。
(2)数据库服务技术方面
SQL 关系数据库服务技术已基本成熟,业界已出现多种商用级SQL 数据库服务产品,主流的互联网公有云服务提供商大多提供基于Mysql 或PostgreSQL的开源SQL 数据库服务。高性能的NewSql 数据库产品也开始出现,号称全球最快的SQL 数据库MemSQL 能达到150 万TPS,Google 也逐步将广告等核心业务从Mysql 分片集群中迁移到支持PB 级数据量、提供全局事务一致性和跨数据中心可靠性的Spanner/F1 数据库上。
分布式数据库服务仍在不断发展之中,目前最成熟的NoSQL数据库是MongoDB,已经在GAE、Azure 等应用引擎中商用。
(3)开发测试服务技术方面
主流的云应用开发环境仍以基于离线IDE 提供云能力组件和插件的形式为主,在线开发环境仍然不够成熟,多用于脚本式、配置式的后台应用开发或者终端应用开发。
(4)运营商应用进展
国外运营商方面,AT&T 推出了IaaS+中间件的通用应用托管环境和基于LongJump的SaaS应用托管环境。
国内运营商主要将应用引擎用于移动互联网应用托管和企业IT 系统架构转型,中国移动南方基地推出了MM 应用引擎,面向移动互联网应用提供Java 和PHP 应用托管运行环境以及Mysql 和Memcache 数据服务,中国联通通过ITPaaS 平台整合了IaaS 云资源、中间件/数据库资源池、技术组件库和业务组件库,初步实现集团IT 系统架构的标准化,采用标准化开源技术重构了MSS 等集团级IT 系统,取得了IT 系统架构转型的阶段性进展。
(5)云应用引擎标准化进展
云应用引擎标准化方面,目前得到业界较为认可的标准是OASIS 的CAMP和TOSCA两项标准。TOSCA定义了一种标准化语言用来描述基于云计算的web 服务拓扑、包含的组件、组件之间的关系以及管理这些web 服务的创建和修改流程;CAMP 定义了一套云应用引擎组件和API 从而能够实现云计算环境中管理应用的构建、运行、监控、运维、补丁等操作。
中国电信在从2010年开始PaaS试点和大型平台云化工作,在虚机单平台应用引擎、大型平台云化迁移、传统数据库云化迁移等方面有较多的积累,而在多平台应用引擎、分布式数据库服务、私有PaaS 平台、开源基础软件池化、业务平台架构转型等方面与业界的差距较大。
5 云应用引擎技术发展策略
(1)以合作伙伴需求为导向, 依托企业优势能力资源,借鉴互联网业界最佳实践,基于成熟的开源应用引擎、云数据库和云应用开发框架,打造业务网络和IT 系统的软件定义平台(Software Defined Platform),推进中国业务平台架构转型,实现业务平台架构标准化、部署自动化、运维智能化。
(2)积极推进IaaS+中间件模式,重点研究中间件/数据库池化、标准化技术,适时在IaaS 资源池的基础上引入成熟的商用或开源的中间件、数据库,提供优质的基础软件租赁服务。
(3)基于PaaS 应用引擎推进业务平台软件技术标准化体系,实现业务平台的架构和技术标准化,规范新兴业务平台的开发、部署和运维流程。
(4)以重点行业为切入点,提供行业共性应用框架和应用模版,实现行业应用快速定制,推进行业应用孵化创新。
6 结束语
论文对应用引擎技术三种关键技术进行了深入分析,可以看出应用引擎技术已经相当完善。通过其技术发展和技术成熟度的分析可以看出应用引擎是公司云战略的重要组成部分。因此应用引擎技术具有重要的理论价值和现实意义。
【参考文献】
[1]袁卉欣,叶德建.面向智能移动终端的应用引擎系统[J].微型电脑应用.2015,31(9):9-12.
[2]王硕,孙鹏,郭志川,胡琳琳.嵌入式Web应用引擎的设计与实现[J].网络新媒体技术.2016,5(1):38-43.
[3]徐鹏,陈思,苏森.互联网应用PaaS平台体系结构[J].北京邮电大学学报.2012,35(1):121-122.