大型WEB网站架构深入分析_云计算 paas技术
1. 云计算-Paas 技术概述1.1 定义 Paas 是面向互联网开发者,把端到端的分布式软件开发、测试、部署运行环境以及应用程序托管当作服务,通过互联网提供给用户,所谓PaaS 实际上是指将软件
1. 云计算-Paas 技术概述
1.1 定义 Paas 是面向互联网开发者,把端到端的分布式软件开发、测试、部署运行环境以及应用程序托管当作服务,通过互联网提供给用户,所谓PaaS 实际上是指将软件研发的平台(计世资讯定义为业务基础平台)作为一种服务,以SaaS 的模式提交给用户。因此,PaaS 也是SaaS 模式的一种应用。但是,PaaS 的出现可以加快SaaS 的发展,尤其是加快SaaS 应用的开发速度。在2007年国内外SaaS 厂商先后推出自己的PAAS 平台。
PaaS 之所以能够推进SaaS 的发展,主要在于它能够提供企业进行定制化研发的中间件平台,同时涵盖数据库和应用服务器等。PaaS 可以提高在Web 平台上利用的资源数量。例如,可通过远程Web 服务使用数据即服务(Data-as-a-Service :数据即服务),还可以使用可视化的API ,甚至像800app 的PaaS 平台还允许你混合并匹配适合你应用的其他平台。用户或者厂商基于PaaS 平台可以快速开发自己所需要的应用和产品。同时,PaaS 平台开发的应用能更好地搭建基于SOA 架构的企业应用。
1.2 特点
PaaS 能将现有各种业务能力进行整合,具体可以归类为应用服务器、业务能力接入、业务引擎、业务开放平台,向下根据业务能力需要测算基础服务能力,通过IaaS 提供的API 调用硬件资源,向上提供业务调度中心服务,实时监控平台的各种资源,并将这些资源通过API 开放给SaaS 用户。PaaS 主要具备以下三个特点
平台即服务:PaaS 所提供的服务与其他的服务最根本的区别是PaaS 提供的是一个基础平台,而不是某种应用。在传统的观念中,平台是向外提供服务的基础。一般来说,平台作为应用系统部署的基础,是由应用服务提供商搭建和维护的,而PaaS 颠覆了这种概念,由专门的平台服务提供商搭建和运营该基础平台,并将该平台以服务的方式提供给应用系统运营商;
平台及服务:PaaS运营商所需提供的服务,不仅仅是单纯的基础平台,而且包括针对该平台的技术支持服务,甚至针对该平台而进行的应用系统开发、优化等服务。PaaS 的运营商最了解他们所运营的基础平台,所以由PaaS 运营商所提出的对应用系统优化和改进的建议也非常重要。而在新应用系统的开发过程中,PaaS 运营商的技术咨询和支持团队的介入,也是保证应用系统在以后的运营中得以长期、稳定运行的重要因素;
平台级服务:PaaS运营商对外提供的服务不同于其他的服务,这种服务的背后是强大而稳定的基础运营平台,以及专业的技术支持队伍。这种“平台级”服务能够保证支撑SaaS 或其他软件服务提供商各种应用系统长时间、稳定的运行。PaaS 的实质是将互联网的资源服务化为可编程接口,为第三方开发者提供有商业价值的资源和服务平台。有了PaaS 平台的支撑,云计算的开发者就获得了大量的可编程元素,这些可编程元素有具体的业务逻辑,这
,就为开发带来了极大的方便,不但提高了开发效率,还节约了开发成本。有了PaaS 平台的支持,WEB 应用的开发变得更加敏捷,能够快速响应用户需求的开发能力,也为最终用户

带来了实实在在的利益。
1.3 服务形态
通过互联网提供服务,按需提供,按量计费
2. PaaS 核心技术 分布式技术:把多台机器虚拟成一台性能极强的超级计算机

分布式存储、分布式计算、分布式数据库、同步机制、负载分担、任务调度
分布式软件开发、测试、运行工具
编程环境SDK 、编程接口、代码库、测试工具、运行工具
运营管理系统
用户管理、计费认证、资源监控、应用管理
,
IaaS 提供的只是“硬件”,保证同一基础设施上的大量用户拥有自已的“硬件”资源,实现硬件的可扩展性和可隔离性。PaaS 则在同一基础设施上同时为很多用户提供其专属的应用运行平台,实现多应用的可扩展性和隔离运行。隔离运行表示用户的应用互不影响,具有很好的性能和安全性,主要采用多租户技术实现。可扩展性要求PaaS 能为用户提供根据应用负载自动扩展平台的能力,因此以Google 为代表的大多数PaaS 服务提供商都将分布式系统作为其开放平台的基础架构,并将分布式基础平台能力直接集成到其应用运行环境中,使利用其PaaS 服务运行的应用在数据存储和处理方面具有强大的可扩展能力。
分布式技术体系主要包括分布式文件系统、分布式数据库、并行计算模型、分布式同步等。
2.1 分布式文件系统
目的是在分布式系统中以文件方式实现数据的共享。分布式文件系统实现了对底层存储资源的管理,屏蔽了存储过程的细节,特别是实现了位置透明性和性能透明性,使用户无需关心文件在云中的存储位置。与传统的分布式文件系统不同,云计算分布式文件系统具有更为海量的存储能力、更强的系统可扩展性和可靠性,也更为经济
,
2.2 分布式数据库
分布式数据库是足结构化的数据集,逻辑上属于同意系统,而物理上分散在计算机网络连接的多个场地上,并统一由一个分布式数据库管理系统管理
以Google BigTable和Hadoop Hbase为代表的分布式数据库是符合云计算基础架构要求的典型分布数据库,可以存储和管理大规模结构化数据,具有良好的可扩展性,可在部署在上千台廉价服务器上,存储petabyte 级别的数据,这类型的数据库通常不提供完整的关系数据模型,只能提供简单的数据模型,使得客户端可以动态控制数据的布局和格式
分布式数据库通常建立在分布式文件系统上,Bigtable 使用Google 分布式文件系统来存储日志和数据文件,Bigtable 采用SSTable 格式存储数据,后者提供永久存储的、有序的、不可改写的关键字到值的映射,以及相应的查询操作。此外,BigTable 还使用分布式锁服务Chubby 来解决一系列问题,如:保证任何时间最多只有一个活跃的主备份;存储BigTable 数据的启动位置;发现Table 服务器;存储BigTable 模式信息、存储访问权限等
2.3 分布式计算模型
分布式计算是让几个物理上独立的组件作为一个单独的系统协同工作,这些足迹可能指多个CPU ,或者网络中的多台计算机,对于分布式编程而言,把一个大的应用程序分解成若干可以并行处理的子程序有两种可能处理的方法,一种是分割计算,即把应用程序的功能分割成若干个模块,由网络上多台机器协同完成;另一个是分割数据,即把数据集分割成小块,由网络上的多台计算机分别计算,对于海量数据分析等计算密集型问题,通常才去分割数据的分布式计算方法,对于大规模分布式系统则可能同时采取这两种方法
基于C/S架构的分布式系统可借助中间件技术解决各模块间的协同工作问题,中间件是分布式系统中介与操作系统与分布式应用程序之间的基础软件,他屏蔽了底层环境的复杂性,有助于开发和集成复杂的应用软件,通过中间件,分布式系统可以把数据转移到计算所在的地方,把网络系统的所有组件集成为一个连贯的可操作的异构系统
,2.4 分布式协同管理
目的是确保系统的一致性。因为云计算系统中的所有资源都分布在网络之上,一旦网络出现异常,会造成数据操作的不一致,进而严重影响系统的正常运行。针对支撑PaaS 的分布式系统的松耦合特性,分布式协同管理技术也具有特别的设计
3. PaaS 的战略核心地位 在云产业链中,如同传统中间件所起的作用一样,PaaS 也将会是产业链的制高点。无论是在大型企业私有云中,还是在中小企业和ISV 所关心的应用云中,PaaS 都将起到核心的作用。
基于 PaaS

模式构建应用运行平台,需要满足以下典型需求:
∙
∙
∙ 提供定义应用需求的接口:用户可以方便地定义满足应用功能需求所需的组件,同时可以定义应用的非功能性需求,例如可用性,服务水平等; 提供基于应用需求快速构建应用运行环境的能力:能将应用需求映射为物理的 IT 资源和基础设施的具体配置和拓扑结构,并进行快速部署; 提供运行时实时动态满足应用需求的能力:将应用需求映射为运行策略,在运行时,根据系统运行的实际状况,例如负载状况,动态地对物理的 IT 资源和基础设施进行调整,例如调整负载分配或增减计算资源,使 ARP 具备足够的弹性和灵活性,以实时动态地满足应用需求。 针对上述需求,基于 PaaS 模式构建 ARP 的解决方案至少需要包括如下组件:
∙
∙
∙
∙
∙ 需求与运行策略库: 向用户提供定义应用需求的界面,保存应用需求,并将应用需求转化为部署及运行策略,提供给平台交付组件和运行时控制组件; 软件映像库: 提供应用运行平台所需的基础软件; ARP 硬件资源池: 基于 Hypervisor ,以虚拟化的方式,提供应用运行平台所需的硬件资源; 平台交付组件: 根据部署或调整策略,通过部署或调整软件及 APR 硬件资源池来创建或调整应用运行平台; 运行时控制组件: 根据运行策略和实际运行状况动态调整 ARP 资源池,并向平台交付组件动态提供调整策略。
如下图 2 所示:
图 2. 基于 PaaS 模式的应用运行平台
,3.1 以PaaS 为核心构建企业私有云
在种情况下,PaaS 实质上就是一个预先装好的Web Container和一组公共服务,如数据存储服务(不一定是关系型数据库) 、消息队列、集中式session 及cache 等等。对于个人用户或者简单应用来说,公有云PaaS 平台使得开发人员仅关注应用逻辑开发本身,不用把精力花费在基础实施和应用的扩展和维护上。
所谓企业级PaaS 平台,主要包含两类,一是大型企业内部的私有云PaaS 平台,另一类是面向ISV 厂商的PaaS 平台。然而对于企业级PaaS 平台,PaaS 不仅仅是云环境下的应用部署平台。 抛开安全问题不讲,私有云PaaS 平台和公有云PaaS 有如下核心区别:
(1)复杂的多租户模型:对于公有云PaaS 平台,其租户模型是 (用户-> 应用 -> 应用实例),一个用户可以部署多个应用,每个应用可以有多个运行时实例,应用实例共享资源池。对于一个大型企业,一个大部门可能是一个租户,大部门下面的子部门也是一个租户;或者一个SaaS 应用系统的一个实例就是一个租户。对于租户的资源使用,大部门租户是共享资源池里面的资源,也可能某些关键租户需要独占一些资源以保证安全。
(2)已有应用的兼容:企业的历史应用都是基于关系型数据库的,某些PaaS 平台不支持关系型数据存储,即使是简单的已有应用都无法迁移到PaaS 平台上。
(3)复合应用的构建: 企业On-Premise 应用在很长一段时间内都是要存在的,私有云PaaS 平台要成为On-Premise 和公有云之间的桥梁。私有云PaaS 平台除了是应用部署平台外,还需要提供集成和方便构建复合应用的能力,就是Gartner 所提的iPaaS 能力。 企业级PaaS 平台不仅仅是应用部署平台,而且是复杂多租户环境和复杂应用环境下的共享基础设施平台,是On-Premise 部署通往公有云部署的必经之路。
大型企业都有复杂的IT 系统,甚至自己筹建了大型数据中心,其运行维护工作量非常大,同时资源的利用率又很低——据统计大部分企业数据中心的计算资源利用率都不超过30。在这种情况下,企业迫切需要找到一种方法,整合全部IT 资源,进行池化,并且以动态可调度的方式供应给业务部门。大型企业建设内部私有云有两种模式,一种是以IaaS 为核心,另外一种是以PaaS 为核心,如下图所示:

首先,企业会采用成熟的虚拟化技术首先实现基础设施的池化和自动化调度。当前,有大量电信运营商、制造企业和产业园区都在进行相关的试点。但是,私有云建设万不可局限
,于IaaS ,因为IaaS 只关注解决基础资源云化问题,解决的主要是IT 问题。在IaaS 的技术基础上进一步架构企业PaaS 平台将能带来更多的业务价值。PaaS 的核心价值是让应用及业务更敏捷、IT 服务水平更高、并实现更高的资源利用率。
以PaaS 为核心的私有云建设模式是在IaaS 的资源池上进一步构建PaaS 能力,提供内部云平台、外部SaaS 运营平台和统一的开发、测试环境:
内部云平台:建立业务支撑平台
外部SaaS 运营平台:向企业外部供应商或者客户提供SaaS 应用
开发、测试环境:为开发人员提供统一的开发和测试环境平台

以某航空运输领域的集团为例。它正从单一的航空运输企业,转型为以航空旅游、现代物流、现代金融服务三大链条为支柱,涵盖“吃、住、行、游、购、娱”六大产业要素的现代服务业综合运营商,其产业覆盖航空运输、旅游服务、现代物流、金融服务、商贸零售、房地产开发与管理、机场管理。对于这么一个大型企业集团,当前信息化的挑战不仅在于如何高效整合、集中管控整个集团的IT 资源,更重要的在于如何快速地、更好的满足客户的需求,如何更高效地整合外部供应商,使IT 真正成为其创新的驱动力。云计算为该集团带来契机,以PaaS 为核心构建其对内、对外云平台必将成为其最佳选择。
3.2 公有云Paas 平台
对于公有云PaaS 平台,PaaS 就是云环境下的应用部署平台。
(1)基于商业软件的部署方式:Application - Framework/Libs - Websphere/Weblogic RMBMS
(2)基于开源软件的部署方式:Application - Frameworks/Libs - Tomcat/JBoss RDBMS
(3)云环境下的部署方式:Application - Frameworks/Libs - PaaS(Goole App Engine, Amazon) 【注:1、WebSphere :是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere 提供了可靠、灵活和健壮的软件。
,2、Weblogic :是一个基于Javaee 架构的中间件,BEA WebLogic是用于开发、集成、部署和管理大型分布式Web 应用、网络应用和数据库应用的Java 应用服务器。将Java 的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
3、Tomcat 服务器是一个免费的开放源代码的Web 应用服务器
4、JBoss 是一个管理EJB 的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss 核心服务不包括支持servlet/JSP的WEB 容器,一般与Tomcat 或Jetty 绑定使用。
5、RDBMS :指的是关系型数据库管理系统】
3.3 私有云PaaS 平台和公有云PaaS 核心区别 (1)复杂的多租户模型:对于公有云PaaS 平台,其租户模型是 (用户-> 应用 -> 应用实例),一个用户可以部署多个应用,每个应用可以有多个运行时实例,应用实例共享资源池。对于一个大型企业,一个大部门可能是一个租户,大部门下面的子部门也是一个租户;或者一个SaaS 应用系统的一个实例就是一个租户。对于租户的资源使用,大部门租户是共享资源池里面的资源,也可能某些关键租户需要独占一些资源以保证安全。
(2)已有应用的兼容:企业的历史应用都是基于关系型数据库的,某些PaaS 平台不支持关系型数据存储,即使是简单的已有应用都无法迁移到PaaS 平台上。
(3)复合应用的构建: 企业On-Premise 应用在很长一段时间内都是要存在的,私有云PaaS 平台要成为On-Premise 和公有云之间的桥梁。私有云PaaS 平台除了是应用部署平台外,还需要提供集成和方便构建复合应用的能力,就是Gartner 所提的iPaaS 能力。 企业级PaaS 平台不仅仅是应用部署平台,而且是复杂多租户环境和复杂应用环境下的共享基础设施平台,是On-Premise 部署通往公有云部署的必经之路。