660 likes | 967 Views
PaaS 平台相关技术. 邵津 shaojin07@sei.pku.edu.cn. 大纲. 一. PaaS 平台发展现状. 一. 1. 2. 3. 4. PaaS 平台发展现状. Google App Engine. Windows Azure Platform. AWS Elastic Beanstalk. Cloud Foundry. GAE 简介. Google App Engine 提供一整套开发组件来让用户轻松地在本地构建和调试网络 应用
E N D
PaaS平台相关技术 邵津 shaojin07@sei.pku.edu.cn
一 • PaaS平台发展现状
一 • 1 • 2 • 3 • 4 • PaaS平台发展现状 • Google App Engine • Windows Azure Platform • AWS Elastic Beanstalk • Cloud Foundry
GAE简介 • Google App Engine 提供一整套开发组件来让用户轻松地在本地构建和调试网络应用 • 用户可以通过GAE在Google强大的基础设施上部署和运行网络应用程序,并自动根据应用所承受的负载来对应用进行扩展,免去用户对应用和服务器等的维护工作。 • 提供大量的免费额度和灵活的资费标准。 • 在开发语言方面,现支持Java和Python这两种语言,并为这两种语言提供基本相同的功能和API。
GAE的基础:Google的十个核心技术(1) • 分布式基础设施 • GFS:分布式文件系统 • Chubby :分布式锁服务 • Protocol Buffer:Google内部使用的一种语言中立、平台中立、可扩展的序列化结构化数据的方式 • 分布式大规模数据处理 • MapReduce:并行编程模型 • Sawzall:构建在MapReduce之上的采用类似Java语法的DSL(Domain-Specific Language)
GAE的基础:Google的十个核心技术(2) • 分布式数据库技术 • BigTable:非关系型数据库,多级映射的数据结构 • 数据库 Sharding:对MySQL的分片(Sharding)的水平扩展(Scale Out)解决方案 • 数据中心优化技术 • 数据中心高温化:Power Usage Effectiveness=1.2 • 12V电池 • 服务器整合
GAE的设计特点 • 重用现有的Google技术 • Datastore是基于Google的bigtable技术,Images服务是基于Picasa的,用户认证服务是利用Google Account的,Email服务是基于Gmail的等 • 无状态 • 不在应用服务器层存储任何重要的状态,而主要在datastore这层对数据进行持久化 • 硬限制 • 对代码有一些硬限制来保证安全 • 利用Protocol Buffers技术来解决服务方面的异构性 • 分布式数据库
GAE主要组成部分 • 应用服务器:主要是用于接收来自于外部的Web请求。 • Datastore:主要用于对信息进行持久化,并基于Google著名的BigTable技术。 • 服务:除了必备的应用服务器和Datastore之外,GAE还自带很多服务来帮助开发者,比如:Memcache,邮件,网页抓取,任务队列,XMPP等。 • 管理界面:主要用于管理应用并监控应用的运行状态,比如,消耗了多少资源,发送了多少邮件和应用运行的日志等。 • 本地开发环境:主要是帮助用户在本地开发和调试基于GAE的应用,包括用于安全调试的沙盒,SDK和IDE插件等工具。
Java运行环境:概述 • 主要特点 • 选用了轻量级的Jetty技术,运行在Java 6上 • 支持大多数常用的Java API,但不支持一些比较高阶的API和框架,包括JDBC,JSF,Struts 2,RMI,JAX-RPC和Hibernate等。 • JRE白名单:http://code.google.com/intl/zh-CN/appengine/docs/java/jrewhitelist.html • 对应用的限制比较多
Java运行环境:安全保障机制 • 请求计时器 • 请求处理程序对请求生成和返回响应的时间是有限的,通常约为 30 秒。 • 达到限制时间后,请求处理程序将中断。 • Java 运行时环境通过引发 com.google.apphosting.api.DeadlineExceededException中断 servlet。 • 如果请求处理程序不捕获此异常,那么和所有未捕获的异常一样,运行时环境将向客户端返回 HTTP 500 服务器错误。
Java运行环境:安全保障机制 • 沙盒 • 无法向文件系统写入 • 只允许读取与该应用程序一起上传的“资源”文件。 • 无法产生子进程或线程 • 无法打开套接字或直接访问另一主机 • 禁用不适用于 GAE的 java.lang.System类的功能 • 允许应用程序对自己的类进行完全、无限制的反射访问,无法对不属于自己的任何其他类进行反射,也无法使用 setAccessible() 方法来避开这些限制
平台提供的基础服务 • Memcache • 定时任务 • App Engine Cron服务允许在指定时间执行或按指定间隔执行定期计划任务:cronjob • 网址抓取 • 应用程序可使用 App Engine 网址抓取服务分别向端口 80 和 443 上的其他主机发出 HTTP 和 HTTPS 请求 • Email • 用户认证 • 图形 • …
总结 • GAE适应的使用场景 • Web Hosting • Open For Questions • 日本大地震寻人 • REST服务 • BuddyPoke • 依赖Google服务的应用 • 比如应用能够通过App Engine的Email服务来发送大规模的电子邮件。
一 • 2 • 1 • 3 • 4 • PaaS平台发展现状 • Windows Azure Platform • Google App Engine • AWS Elastic Beanstalk • Cloud Foundry
Windows Azure • 计算 • 作为一个部署服务的平台 • 用户可以在Windows Azure上部署自行开发的服务 • 作为一个软件分发平台 • 用户可以使用Windows Azure来分发自己的软件 • 作为一个一般的分布式计算平台 • Fabric提供了极其强大的负载平衡的支持,所以可以很好的执行一些极为复杂的并行算法。Windows Azure支持多种开发技术,例如.NET,Win32,甚至是Java,从而满足大多数客户对分布式计算的需求。
Windows Azure • 四种存储服务 • Blob • 类似文件系统的存储方式 • Table • 结构化的存储方式 • Queue • 先进先出的存储方式 • Drive • 使用标准的NTFS API读写文件
Windows Azure • 管理 • 管理员可以直接使用Windows Azure门户来管理程序。 • 门户提供了创建,删除项目,创建,删除,更新部署,等众多功能。 • 此外还提供了Management API,让开发人员自行开发程序来管理他们的部署。 • 今后还会将System Center与Windows Azure集成,从而可以使用同一套工具,同时管理企业内部的服务器,以及云端的资产。
AppFabric • Service Bus • Service Bus可以被用于将本地的服务暴露给Internet • 解决:内网服务没有对外地址所以无法被直接访问 • AppFabric • 在云中,权限管理往往要比在企业内部来的困难。这是因为你无法直接使用诸如活动目录之类的产品来统一管理你的程序的访问控制。 • 其他 • 将现今Windows Server AppFabric中的功能移植到Windows Azure platform AppFabric中来:分布式缓存,以及WCF/WF管理的功能
SQL Azure • 部署在云端的关系型数据库引擎 • 绝大多数的管理工作都由微软为你完成,因此你不用担心任何诸如备份,集群,等管理方面的问题 • SQL Server 2008 Management Studio R2(目前为CTP版本)针对SQL Azure也提供了很强大的支持
一 • 3 • 1 • 2 • 4 • PaaS平台发展现状 • AWS Elastic Beanstalk • Google App Engine • Windows Azure Platform • Cloud Foundry
对应用的要求 • 应用尽可能设计的无状态 • 使用松耦合、可容错的组件,以便能在需要的时候进行伸缩 • 使用持久存储来存储数据 • AWS EB的应用是跑在EC2上的,而EC2的实例没有本地的持久化存储。在关闭之后,上面的所有数据都会被清除。 • 使用AWS提供的数据存储服务 • Amazon Simple Storage Service (Amazon S3) • Amazon Elastic Block Store (Amazon EBS) • Amazon SimpleDB • Amazon Relational Database Service (Amazon RDS).
搭建在EC2上 • 在EC2的instance上预装了一些运行环境
一 • 4 • 1 • 2 • 3 • PaaS平台发展现状 • Cloud Foundry • Google App Engine • Windows Azure Platform • AWS Elastic Beanstalk
Cloud Foundry • 2011年4月12日刚刚上线 • 由VMware的Spring建立的一个开源的PaaS平台 • With Cloud Foundry, VMware is providing a convenient and compelling destination for Java applications in public and private cloud.
Cloud Foundry Choice of Developer Framework Choice of Application Services Choice of Clouds Choice of Usage (It’s Open Source)
DEA(Droplet Execution Agent) • 一个droplet就是应用的代码和它的依赖库所打成的一个包,并且要添加一个start和stop命令 • 系统会维护一个待命的DEA的池,也就是一个虚拟机级别的应用容器 • DEA同时支持单租户和多租户的操作(即每个应用一个DEA虚拟机,或是n个应用一个DEA虚拟机) • DEA还提供了一个安全且受限的操作系统环境来运行应用所在的应用服务器和应用的代码
路由(Router) • 路由负责接收外界的所有请求,并负责维护外网URL到内部服务实例的映射 • 除了对应用的请求,对所有的Cloud Foundry的API的请求(一般是由vmc和STS发出的)也会经过路由 • 路由同时也是一个负载均衡器,负责把请求平均的分发给一个给定应用的所有实例
云控制器 • 负责系统中的所有状态改变 • 保证所有的依赖可用 • 将服务和应用绑定 • 所有影响用户、应用和服务的操作都由cloud controller来进行 • 比如,通过vmc进行的push、instances、create-service都是由cloud controller驱动的 • 当应用被组装好以后,cloud controller负责将应用和一个DEA执行单元连接起来
健康管理器 • 健康管理器与云控制器和DEA紧密的配合,来保证所有的应用都保持高的可用性 • 如果一个应用崩溃了,健康管理器会及时的发现,并安排一个替代的实例 • 如果健康管理器发现快速、重复的应用崩溃,它就会宣布应用进入“flapping”状态,并且停止恢复这个应用
Services • 服务为cloud foundry提供了很多扩展性 • 目前提供了包括MySQL, Redis, MongoDB, RabbitMQ等服务 • 应用之间可能会共享服务 • Cloud foundry把服务的供给抽象成一个统一的API,并将其托管于cloud controller之中 • 这样的好处就是可以通过一种统一的方式将服务添加到应用之中
二 • 1 • 2 • 3 • PaaS平台的监测与调整 • 服务的监测 • 分析与决策 • 运行时调整
不同角色的监测视图 • 云平台运营者 • 平台各个层次的运行状况 • 云平台开发者(部署者) • 所部署应用的运行状况 • 应用的用户访问情况 • 最终用户 • 对比服务之间的运行状况
虚拟机层监测 • VMware vSphereManagement APIs • Web-services based APIfor managing, monitoring, and controlling the life-cycle of all VMware vSphere components
vSphereClient-Server Architecture • Managed objects • 存在于vShpere服务器上(ESX/ESXi or vCenter Server system) • 代表vSphere的服务或者组件 • Managed object references • 客户端应用对服务器端的managed objects的引用 • Dataobjects • 包含managed objects的相关信息
操作系统层监测 • 通过操作系统提供的接口来获得系统的相关信息 • Windows资源管理器 • 不同的操作系统需要不同的实现 • 本地代码
HypericSigar • http://www.hyperic.com/products/sigar • Sigar为开发者提供了一个跨越平台的统一API来获得操作系统的相关信息 • System memory, swap, cpu, load average, uptime, logins • Per-process memory, cpu, credential info, state, arguments, environment, open files • File system detection and metrics • Network interface detection, configuration info and metrics • TCP and UDP connection tables • Network route table
中间件层监测 • J2EE中间件的管理:JMX • JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。 • JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。 • 大多数中间件都实现了JMX接口
应用层监测 • 请求 • 参数值、请求的顺序、请求的频度 • 响应 • 响应时间、响应的正确性 • 资源 • 管理操作 • 应用内部 • 运行时验证技术 • 实现技术 • 截取器、过滤器、监听器 • 代码插装技术:ASM、Javassist、Aspectj
应用层监测 • 软件运行时验证技术 • 将需求(对软件的约束)定义为对应的specification • 由specification自动或半自动的生成监测及验证代码 • 将监测代码插装到原程序中 • 在程序运行的过程中,获得相应的trace信息,并由验证代码进行验证 • 返回验证结果
应用层监测 • 约束的定义
监测用户的使用行为 • 用户感受到的QoS • 用户的使用行为模式 • 地域性 • 使用习惯 • 负载模式
二 • 1 • 2 • 3 • PaaS平台的监测与调整 • 服务的监测 • 分析与决策 • 运行时调整