云计算环境下教育信息化资源共建共享研究(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-11 22:08:38

点击下载

作者:罗桂琼

出版社:吉林人民出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

云计算环境下教育信息化资源共建共享研究

云计算环境下教育信息化资源共建共享研究试读:

前言

计算机技术,特别是云计算技术的深入发展,给教育模式和方法带来了革命性的影响。教育信息化资源共建共享已经成为当今教育发展的必然趋势和前沿课题。

本书着眼云计算环境下教育信息化资源共建共享发展的最新成果,系统地阐述了云计算技术的基本理论及方法,特别是对基于云计算技术的教育信息化资源共建共享等相关内容作了详细介绍。目的就是为了比较系统、全面地介绍云计算环境下教育信息化资源共建共享的发展现状、制度机制、技术手段和体系结构等方面的知识,使相关专业的人员,在理论和实际应用方面得到较为有价值的参考。

本书共七章,第一章主要介绍云计算技术的基本理论和基础知识,第二章主要介绍云计算技术在教育信息化中的应用,第三章主要介绍云计算环境下教育信息资源建设,第四章主要介绍教育信息资源共建共享云服务体系结构研究的最新成果,第五章重点围绕国内外教育信息资源共建共享可持续发展进行研究分析,第六章主要介绍教育信息资源共建共享可持续发展的运行机制,第七章重点对云计算环境下共建共享数字教育资源的可持续利用进行介绍。

全书内容结构合理,条理清晰分明,注重内容的系统性和技术的应用性,本书的首要特色及创新之处在于从基本的知识讲起,追踪前沿热点问题,全面反映了现代云计算应用技术条件下教育信息化资源共建共享方面最新发展和时代特色。

由于作者水平所限,书中难免有疏漏之处,为此,真诚欢迎各位行业同仁提出宝贵意见,以便日后进一步完善。第一章云计算技术简述

云计算,是一种基于因特网的超级计算模式,在远程的数据中心里,成千上万台电脑和服务器连接成一片电脑云。因此,用户可以通过电脑、笔记本、手机等方式接入数据中心,云计算可以让你体验每秒超过10万亿次的运算能力,将改变现在电脑“机箱+显示器”的模式。互联网突破了人与人之间通信的边界,已经成为公认的产业发展大方向。在互联网三大关键技术领域中,与传感网及数据传输部分受限于众多因素过程仍显漫长不同,云计算的出现,不仅提高了信息处理能力,而且彻底改变了计算与存储的方式,凭借其高效和按需的计算能力成为互联网的前奏“大脑”。计算方式的革命已成为互联网应用取得突破的关键领域:相对于传统通信而言,互联网在信息传输网前向增加了信息采集即传感网、后向增加了海量信息处理环节。极其强大的海量计算能力,对于互联网下庞大数据的处理尤为重要,云计算的出现,正好解决了这个问题。第一节云计算技术

云计算的理念生动地体现了互联网时代的信息服务特性,并且正在推动一系列技术创新去解决互联网平台的服务生命周期管理问题,大规模分布式计算、存储、通信问题,以及服务按需提供、按量计费问题。本节将从技术维度更深入地讨论云计算,着重介绍云计算中的快速部署、资源调度、大规模多租户、海量数据处理、大规模消息通信、大规模分布式存储、许可证管理与计费等关键技术。一、快速部署

自数据中心诞生以来,快速部署就是一项重要的功能需求。数据中心管理员和用户一直在追求更快、更高效、更灵活、功能更齐全的部署方案。云计算环境对快速部署的要求将会更高。首先,在云环境中资源和应用不但规模变化范围大而且动态性高。用户所需的服务主要采用按需部署的方式,即用户随时提交对资源和应用的请求。云环境管理程序负责分配资源、部署服务。其次,不同层次云计算环境中服务的部署模式是不一样的,如虚拟化的基础设施云上的应用都被打包在虚拟机里面,而多租户平台上的应用则会选择更加轻量级的打包方案。另外,部署过程所支持的软件系统形式多样,系统结构各不相同,部署工具应能适应被部署对象的变化。基于流传输的虚拟机部署方法通过Copy-on-Write的操作方式,使得虚拟机部署可以边传输边启动,可以有效地减少单个虚拟机的部署时间,但是包含了操作系统、中间件、应用软件的虚拟机镜像,大小通常为几个GB到几十个GB,镜像的复制速度会严重影响虚拟机的部署速度和用户体验。另外,虚拟机的激活涉及整个软件的配置和关联关系,操作非常复杂,自动化程度的高低直接关系着虚拟机部署的效率。因此,即使采用了流传输来部署,这个过程仍然会耗费大量时间。此外,在部署多个虚拟机时,基于流传输的虚拟机部署采用的是顺序的、串行的部署方法,如果想进一步提高云环境中虚拟机的部署速度,则需要考虑并行部署或者协同部署技术。并行部署是指将传统的顺序部署方式改变为并行执行,同时执行多个部署任务,将虚拟机同时部署到多个物理机上。理想情况下,并行部署可以成倍地提高部署的速度,但存储镜像文件所在的部署服务器的读写能力或者部署系统的有限网络带宽却制约实际的并行程度,即部署速度。例如,在网络带宽有限的情况下,同时运行多个部署任务时,这些任务会争抢网络带宽,当网络带宽被占满时,部署速度就不能进一步提高了。在这种情况下,协同部署技术可以用来进一步提高部署速度。协同部署技术的核心思想是使虚拟机镜像在多个目标物理机之间的网络中传输,而不是仅仅在部署服务器和目标物理机之间传输,从而提高了部署速度。通过协同部署,部署服务器的网络带宽不再成为制约部署速度的瓶颈,部署的速度上限取决于目标物理机之间的网络带宽的总和。基于虚拟化技术和协同部署技术,我们可以构建一个协同部署系统,从而保证大规模数据中心中服务的部署速度、效率和质量。部署服务器负责将协同部署器及用户空间文件系统(通过I/O操作截获技术,将用户的本地文件访问重定向到网络上)的安装文件发送到被部署节点,并发起部署任务;部署控制器负责协调各个节点之间的部署进度,交换文件片信息;被部署节点在部署任务开始以后,根据启动顺序向用户空间文件系统发出虚拟镜像文件块请求,用户空间文件系统调用协同部署器获取文件块。协同部署技术能够大大提高系统部署的速度。由于物理机之间存在大量的共享带宽,因此协同部署可能会影响其他物理机的网络带宽。并行部署和协同部署技术同样可以运用到物理解决方案的自动化部署过程中,加速部署过程。云环境中物理解决方案的部署包括两种情形:(一)在构建云平台环境并安装了服务器硬件后,需要在这些硬件上安装云的软件环境,这就涉及大规模的操作系统的部署、虚拟机运行平台的配置、云基础设施层管理软件的安装等;(二)在扩展云平台环境时(如为现有的数据中心加入新的物理机),需要在新节点上面部署和配置操作系统、虚拟化平台、中间件等全套软件。与虚拟机的部署相比,物理解决方案自动化部署的难点在于软件的多样性和解决方案的复杂性。为了能够自动化部署物理解决方案,需要定义一种标准的解决方案打包格式,将软件程序文件、安装配置脚本、元数据等内容一起打包;还需要一个通用的部署引擎和一组自动化安装配置流程,这种流程也被称为工作流(Workflow)。在有些情况下,还需要对应的部署脚本。通过这种方式,部署引擎在接收到解决方案的打包文件以后,能够解析解决方案的元数据,按照自动化流程执行任务或者执行部署脚本,驱动整个解决方案的安装配置过程。二、资源调度

资源调度是指在特定的资源环境下,根据一定的资源使用规则,在不同的资源使用者之间进行资源调整的过程。这些资源使用者对应着不同的计算任务(如一个虚拟解决方案),每个计算任务在操作系统中对应于一个或者多个进程。通常有两种途径可以实现计算任务的资源调度:在计算任务所在的机器上调整分配给它的资源使用量,或者将计算任务转移到其他机器上。云计算中虚拟机的出现使得所有的计算任务被封装在一个虚拟机内部。由于虚拟机具有隔离特性,因此可以采用虚拟机的动态迁移方案来达到计算任务迁移的目的。目前的技术已经实现了在几秒钟内(暂时停机时间为毫秒级)将一个操作系统(即虚拟机)进程从一台物理机器迁移到另一台物理机器,从而实现计算任务在不同物理机器之间的迁移。云计算的海量规模为资源调度带来了新的挑战。首先,由于云计算环境中虚拟机的数量可能会很多,动态迁移在大规模环境下会遇到一些问题。

第一,动态迁移要求迁移虚拟机的双方物理机共享使用一个存储服务,当虚拟机数量非常多时,存储服务可能会成为性能瓶颈,甚至无法提供服务。在这种场景下,需要动态迁移能够支持迁移双方分别使用自己的存储服务的场景。目前比较成熟的技术是V Mware的Storage v Motion技术,它可以支持动态迁移时实现虚拟机镜像文件在不同存储服务之间的迁移。

第二,当虚拟机迁移时,其网络配置是不变的,而在云计算环境中,网络配置需要灵活地进行调整,目前V Mware已经意识到了这个问题,并在最新的V Motion中提供了对网络配置修改的支持。

第三,目前动态迁移限制迁移的双方物理机处于同一个广播域内。在云计算环境中,虚拟机的数量非常大时,可能导致广播域无法给所有的虚拟机分配地址。针对这个问题,V Mware推出了v Network Distributed Switch技术,将多个广播域整合成一个虚拟的广播域,并维护所有虚拟机的地址。但这样的场景下还会有新的问题,如广播风暴、安全问题等,目前业界还在努力解决这些问题。资源调度需要考虑到资源的实时使用情况,这就要求对云计算环境的资源进行实时监控和管理。

云计算环境中资源的种类多、规模大,对资源的实时监控和管理就变得十分困难。在这方面,主要依赖于云计算平台层的技术提供者能够提供详尽的资源使用情况数据。此外,一个云计算环境可能有成千上万的计算任务,这对调度算法的复杂性和有效性提出了挑战,调度算法必须在精确性和速度之间寻找一个平衡点,或者提供给用户多种选择,是偏重精确性还是速度。对于虚拟化技术的云基础设施层,虚拟机的大小一般都在几个GB以上,大规模并行的虚拟机迁移操作很有可能会因为网络带宽等各因素的限制而变得非常缓慢。从调度的力度来看,虚拟机内部应用的调度才是云计算用户更关心的。如何调度资源以满足虚拟机内部应用的服务级别协定也是目前待解决的一个难题。以性能为例,一个应用资源调度系统需要监控应用的实时性能指标,如吞吐量、响应时间等。通过这些性能指标,结合历史记录及预测模型,分析出未来可能的性能值,并与用户预先制定的性能目标进行比较,得出应用是否需要及如何进行资源调整的结论。

目前,大多数虚拟化管理方案只能通过在虚拟机级别上的调度技术结合一定的调度策略来尝试为虚拟机内部应用做资源调度,普遍缺乏精确性和有效性。为了能够根据虚拟机内部应用的需求进行资源调度,需要有一套对于虚拟机内部应用的形式化记录方式。另外,需要一套形式化的方法能够将应用的服务级别协定映射为一组资源调度的需求或者规则,这样,资源调度程序才能实现针对虚拟机内部应用需求的资源调度。三、大规模多租户技术

传统的软件运行和维护模式要求软件被部署在用户所购买或租用的数据中心当中,这些软件大多服务于特定的个人用户或者企业用户。在云计算环境中,更多的软件以SaaS的方式发布出去,并且通常会提供给成千上万的企业用户共享使用来降低每个企业用户的成本。与传统的软件运行和维护模式相比,云计算要求硬件资源和软件资源能够更好地共享,具有良好的可伸缩性,任何一个企业用户都能够按照自己的需求对SaaS软件进行客户化配置而不影响其他用户的使用。多租户(Multi-Tenant)技术就是目前云计算环境中能够满足上述需求的关键技术。多租户技术是一项云计算平台技术,该技术使得大量的租户能够共享同一堆栈的软、硬件资源,每个租户能够按需使用资源,能够对软件服务进行客户化配置,而且不影响其他租户的使用。

在多租户作为一项平台技术时,需要考虑提供一层抽象层,将原来需要在应用中考虑的多租户技术问题,抽象到平台级别来支持,需要考虑的方面包括安全隔离、可定制性、异构服务质量、可扩展性以及编程透明性等等。同时在支持各个方面时需要考虑到应用在各个层面(UI、业务逻辑、数据)可能涉及的各种资源。各个层面对应用中可能涉及的各种资源提供相应的平台级多租户技术的支持,IT人员经常会面临选择虚拟化技术还是多租户技术的问题。多租户与虚拟化的不同在于:虚拟化后的每个应用或者服务单独地存在一个虚拟机里,不同虚拟机之间实现了逻辑的隔离,一个虚拟机感知不到其他虚拟机;而多租户环境中的多个应用其实运行在同一个逻辑环境下,需要通过其他手段,如应用或者服务本身的特殊设计,来保证多个用户之间的隔离。多租户技术也具有虚拟化技术的一部分好处,如可以简化管理、提高服务器使用率、节省开支等。从技术实现难度的角度来说,虚拟化已经比较成熟,并且得到了大量厂商的支持,而多租户技术还在发展阶段,不同厂商对多租户技术的定义和实现还有很多分歧。当然,多租户技术有其存在的必然性及应用场景。在面对大量用户使用同一类型应用时,如果每一个用户的应用都运行在单独的虚拟机上,可能需要成千上万台虚拟机,这样会占用大量的资源,而且有大量重复的部分,虚拟机的管理难度及性能开销也大大增加。在这种场景下,多租户技术作为一种相对经济的技术就有了用武之地。

目前普遍认为,采用多租户技术的SaaS应用需要具有两项基本特征:第一是SaaS应用是适应于Web的,能够服务于大量的租户并且可以非常容易地伸缩;第二则在第一的基础上要求SaaS平台提供附加的业务逻辑使得租户能够对SaaS平台本身进行扩展,从而满足更特定的需求。目前,多租户技术面临的技术难点包括数据隔离、客户化配置、架构扩展和性能定制。数据隔离是指多个租户在使用同一个系统时,租户的业务数据是相互隔离存储的,不同租户的业务数据处理不会相互干扰。多租户技术需要实现安全、高效的数据隔离,从而保证租户数据安全及多租户平台的整体性能。对多租户的数据库管理有三种基本方式:第一种方式是给每一个租户创建单独的数据库,这样做的好处是租户间数据充分隔离,缺点是数据库管理的成本和开销比较大;第二种方式是将多个租户的数据保存在同一个数据库中,但是采用不同的Schema,这样在一定程度上减少了数据库的管理成本和开销,但是相应地影响了数据隔离的效果;第三种方式是将多个租户的数据保存在一个数据库中,采用相同的Schema,也就是说将数据保存在一个表或者一类具有相同Schema的表中,通过租户的标识码字段进行区别,这样的管理成本和开销最低,但是数据隔离的效果最差,需要大量的安全性检验来保障租户间的数据隔离。

客户化配置是指SaaS应用能够支持不同租户对SaaS应用的配置进行定制,如界面显示风格的定制等。客户化配置的基本要求是一个租户的客户化操作不会影响到其他租户。这就要求多租户系统能够对同一个SaaS应用实例的不同租户的配置进行描述和存储,并且能够在租户登录SaaS应用时能根据该租户的客户化配置为其呈现相应的SaaS应用。在传统的企业应用运行模式中,每个企业用户都拥有一个独立的应用实例,因此可以非常容易地存储和加载任何客户化配置。但在多租户场景下,成千上万的租户共享同一个应用实例。在现有的平台技术中,如J2EE,对应用配置的更改通常会对该平台中的所有用户产生影响。因此,如何支持不同租户对同一应用实例的独立客户化配置是多租户技术面临的一个基本挑战。架构扩展是指多租户服务能够提供灵活的、具备高可伸缩性的基础架构,从而保证在不同负载下多租户平台的性能。在典型的多租户场景中,多租户平台需要支持大规模租户的同时访问,因此平台的可伸缩性至关重要。一个最简单的方法是在初始阶段就为多租户平台分配海量的资源,这些资源足以保证在负载达到峰值时的平台性能。然而,很多时候负载并不是处于峰值的,这个方法会造成巨大的计算资源和能源浪费,并且会大幅增加多租户平台提供商的运营成本。因而,多租户平台应该具有灵活可伸缩的基础架构,能够根据负载的变化按需伸缩。

性能定制是多租户技术面临的另一个挑战。对于同一个SaaS应用实例来说,不同的用户对性能的要求可能是不同的,如某些客户希望通过支付更多的费用来获取更好的性能,而另一些客户则本着“够用即可”的原则。在传统的软件运营模式中,由于每个客户拥有独立的资源堆栈,只需要简单地为付费多的用户配置更高级的资源就可以了,因此相对而言性能定制更容易一些。然而,同一个SaaS应用的不同租户共享的是同一套资源,如何为不同租户在这一套共享的资源上灵活地配置性能是多租户技术中的难点。四、海量数据处理

以互联网为计算平台的云计算,将会更广泛地涉及海量数据处理任务。海量数据处理指的是对大规模数据的计算和分析,通常数据的规模可以达到TB甚至PB级别。在互联网时代,互联网数据的统计和分析很多是海量数据级别的,一个典型的例子就是搜索引擎。由于数据量非常大,一台计算机不可能满足海量数据处理的性能和可靠性等方面的要求。以往对于海量数据处理的研究通常是某种并行计算模型和计算机集群系统。并行计算模型可以支持高吞吐量的分布式批处理计算任务和海量数据,计算机集群系统则在通过互联网连接的机器集群上建立一个可扩展的可靠的计算环境。在互联网时代,由于海量数据处理操作非常频繁,很多研究者在从事支持海量数据处理的编程模型方面的研究。例如,Remzi等人在1999年设计了River编程模型,开发人员可以基于该编程模型开发和执行计算任务。River编程模型的设计目的就是使得大规模计算机集群的编程和计算更加容易,并且获得极佳的计算性能。River编程模型有两个核心设计特性:高性能的分布式队列和一个存储冗余机制。因此,River需要对磁盘和网络的数据传输进行非常精确的调度。当今世界最流行的海量数据处理的编程模型可以说是由Google公司的Jeffrey Dean等人所设计的Map Reduce编程模型。Map Reduce编程模型将一个任务分成很多更细粒度的子任务,这些子任务能够在空闲的处理节点之间调度,使得处理速度越快的节点处理越多的任务,从而避免处理速度慢的节点延长整个任务的完成时间。下面我们将介绍Map Reduce框架的工作原理和设计原则,从而加深读者对海量数据处理系统的理解。

Map Reduce框架从Lisp及很多其他类似的语言中获得灵感,研究人员发现大多数分布式运算可以抽象为Map和Reduce两个步骤,从而实现可靠、高效的分布式应用。Map步骤负责根据输入的key/value(键值)对生成中间结果,中间结果同样采用key/value对的形式。Reduce步骤则将所有的中间结果根据key进行合并,然后生成最终结果。开发者只需要实现Map和Reduce函数的逻辑,然后提交给Map Reduce运行环境,计算任务便会在由大量计算机组成的集群上被自动、并行地调度执行。运行环境负责将输入数据进行分割、调度任务、自动处理运行过程中的机器失效,以及协调不同节点之间的数据通信。

Map Reduce的运行环境由两种不同类型的节点组成:Worker和Master。Worker负责数据处理;Master负责任务调度及不同节点之间的数据共享。

具体执行流程如下。利用Map Reduce提供的库将输入数据切分为M份,每份的大小为16~64 MB,然后在计算机集群上启动程序。Master节点的程序负责为所有Worker节点分配子任务,其中包括M个Map子任务和R个Reduce子任务。Master负责找出空闲的节点并分配子任务。获得Map子任务的Worker节点读入对应的输入数据,从输入数据中解析key/value对,并调用用户编写的Map函数。Map函数的中间结果缓存在内存中并周期性地写入本地磁盘。写入本地磁盘的数据根据用户指定的划分函数被分为R个数据区。这些中间结果的位置被发送Master节点。Master节点继续将这些数据信息发给负责Reduce任务的Worker节点进行Reduce处理。执行Reduce子任务的Worker节点从Master节点获取子任务后,使用远程调用的方式从执行Map任务的Worker节点的本地磁盘读取数据到缓存。执行Reduce子任务的Worker节点首先遍历所有的中间结果,然后按照关键字进行排序。执行Reduce子任务的Worker节点遍历获得Map子任务产生的中间数据,将每个不同的key和value进行结合并传递给用户的Reduce函数。Reduce函数的结果被写入到一个最终的输出文件。当所有的Map子任务和Reduce子任务完成后,Master节点将R份Reduce结果返回给用户程序。用户程序可以将这些执行Reduce子任务的Worker节点生成的结果数据合并得到最终结果。

在设计Map Reduce的时候,研究人员考虑了很多大规模分布式计算机集群进行海量数据处理时所要考虑的关键问题:容错处理保证了在Master和Worker都失效的情况下计算任务仍然能够正确执行;操作本地化保证了在网络等资源有限的情况下,最大限度地将计算任务在本地执行;任务划分的粒度使得任务能够更加优化地被分解和并行执行;对于每个未完成的子任务,Master节点都会启动一个备份子任务同时执行,无论初始任务还是备份子任务,一旦处理完成,该子任务都会立即被标记为完成状态,通过备份任务机制可以有效避免因个别节点处理速度过慢而延误整个任务的处理速度。大规模数据处理的另一类新技术被称为流计算(Stream Computing)。传统的计算或者数据处理的步骤:首先收集数据,然后将数据储存起来,储存方式可能有数据库、文件等,最后对储存好的数据进行计算处理,将计算结果返回或者输出。这种计算模式,在现在的海量数据情况下遇到了挑战:(一)数据量非常大,目前互联网时代的数据不只是文本数据,而绝大多数是图像、音频、视频等,将这些数据进行存储就是很大的问题,针对海量数据进行计算也是很大的问题;(二)用户对于计算速度的要求越来越高,如天气预报、金融分析、市场预测等应用,要求数据计算产生结果的速度尽量地快;(三)大量数据是实时生成的,如用户的使用日志、交通流量实时监测、证券实时报价等,对这些数据进行分析计算的结果,很多时候都需要实时可用,而如果等待存储——计算——输出的过程,则无法满足需求。流计算是正式应对这些挑战的一项新兴技术。流计算的计算模式为:数据实时地进行输入,不需要强调存储过程,实时计算,实时输出。流计算将计算过程转化成一个流程图的形式,每一个计算模块负责流程中的一个步骤,通过网络连接将这些模块串接成一个反映整个计算过程的图,图的起始端就是用户输入的数据,而图的终止端就是计算输出的结果。流计算着重在“实时”上,以此来解决上文提到的传统计算和数据处理面临的挑战。

目前,流计算还在研发阶段,需要研究对不同类型数据的处理方式、处理性能、硬件架构、软件支持等问题,同时也需要业界逐渐接受这种新兴的计算模式。目前,IBM、Google、NVidia等公司都在进行流计算的研发,并推出了一些产品,如IBM的System S。五、大规模消息通信

云计算的一个核心理念就是资源和软件功能都是以服务的形式进行发布的,不同服务之间经常需要通过消息通信进行协作。可靠、安全、高性能的通信基础设施对于云计算的成功至关重要。通常,消息通信可以分为同步通信和异步通信两种方式。在同步消息通信中,直接请求服务器端的服务,并等待服务结果返回后才继续执行;在服务器端,服务的运行环境则需要保存与客户端通信的信息,在处理完成时将结果返回给客户端。这种同步消息通信机制有可能对客户端系统的处理速度和服务器端系统的可用性造成影响:(一)客户端系统因为需要同步等待而无法并发处理任务;(二)同步通信机制造成服务器端系统资源长时间被占用,服务实例也由于需要与远程客户端通信而无法在任务处理完成时立即处理下一个任务;(三)同步消息通信会降低服务的可用性,因为在分布式环境中,客户端所请求的服务实例有可能因为各种原因而不可用,从而造成客户端请求无法得到处理。因此,异步消息通信对于云计算环境就显得尤为重要。在异步消息通信中,客户端和服务器端并不直接通信。客户端把请求以消息的形式放在请求消息队列里面,然后继续处理其他业务逻辑。服务实例则会从请求消息队列中获取请求消息,并且将处理结果放入响应消息队列里面,然后立即处理下一个请求。消息通信管理软件通过判断消息请求是否成功发给目标服务实例来判断该实例是否可用,并且在目标服务实例不可用的情况下将消息发给其他服务实例,从而为客户端提供高可用的服务。

异步消息通信机制已经经过了多年的发展。早在1995年就提出了生产者/消费者模型的分布式消息队列方案,并且能够根据分析模型考量和预测消息队列的性能。Java Message Service(JMS)是J2EE平台上的一个消息通信标准,J2EE应用程序可以通过JMS来创建、发送、接收和阅读消息。Apache ActiveMQ是JMS的一个开源实现版本,IBM Web Sphere MQ则是实现了JMS的一个商业产品,并且通过一系列的增强特性提高了JMS消息通信的性能和可管理性。异步消息通信已经成为面向服务架构中组件解耦合及业务集成的重要技术。面向服务的理念使得异步消息通信对云计算更加重要。异步消息通信机制可以使得云计算每个层次中的内部组件之间及各个层次之间解耦合,并且保证云计算服务的高可用性。异步消息通信机制对于服务的可伸缩性也非常重要,消息队列管理软件可以通过队列中的消息数量和消息请求的服务类型预测每种服务的工作负载变化趋势,并且通过该趋势自动增加和减少服务实例。云计算也给分布式系统中的消息通信带来了新的挑战。首先,消息通信服务必须足够稳定,以保证在应用程序需要使用消息服务的时候该服务一定是可用的,并且保证消息在互联网传输过程中不会丢失。一旦消息传送出现问题,需要有技术能够保存消息,并不断重试传送,等待故障被修复后再次进行通信。这样就需要有消息的保存机制、冗余备份机制、副本同步机制等。其次,消息通信服务必须能够伸缩,从而支持大规模节点同时执行高性能的消息读写操作,为此必须要支持多种方式的消息读写模式,如边读边写、边读边发送、边写边发送等。云计算的安全问题一直以来备受关注,因此消息通信服务还要保证消息的传递是安全的,从而保证业务是安全的。此外,紧凑、高效的消息内容模型对提高消息处理效率非常重要,这在云计算这样的大规模消息通信处理环境中体现得尤为明显。云中的消息通信还要能够支持各种各样的消息格式,兼容多样的消息长度,因为使用云的用户并不局限于某一领域或者某一平台。目前,云计算环境中的大规模数据通信技术仍在发展阶段,Amazon公司的Simple Queue Service(SQS)是当今业界著名的云计算大规模消息通信产品。六、大规模分布式存储

分布式存储的目标是利用多台服务器的存储资源来满足单台服务器所不能满足的存储需求。分布式存储要求存储资源能够被抽象表示和统一管理,并且能够保证数据读写操作的安全性、可靠性、高效性等各方面要求。随着过去几十年互联网技术的发展,越来越多的互联网应用需要存储海量数据,如搜索引擎和互联网视频网站,这些需求催生了一系列优秀的大规模分布式存储技术。分布式存储技术可以通过多种方式实现,一种比较典型的实现方式是分布式文件系统。分布式文件系统允许用户像访问本地文件系统一样访问远程服务器的文件系统,用户可以将自己的数据存储在多个远程服务器上,分布式文件系统基本上都有冗余备份机制和容错机制来保证数据读写的正确性。云环境的存储服务基于分布式文件系统并根据云存储的特征做了相应的配置和改进。另一类分布式存储的实现方式是分布式存储软件或服务,如著名的Ryze存储服务以及很多P2P文件存储系统。下面分别介绍分布式文件系统和云存储服务。

Frangipani是一个伸缩性很好的高性能分布式文件系统,该系统采用了两层的服务体系架构:底层是一个分布式存储服务,该服务能够自动管理可伸缩、高可用的虚拟磁盘;在这个分布式存储服务上层运行着Frangipani分布式文件系统。Jet File是一个基于P2P的组播技术、支持在Internet这样的异构环境中分享文件的分布式文件系统。Ceph是一个高性能并且可靠的分布式文件系统,它通过把数据和对数的管理在最大程度上分开来获取极佳的I/O性能。

Google File System(GFS)是Google公司设计的可伸缩的分布式文件系统。Google公司的工程师在考虑了分布式文件系统的设计准则的基础上,又发现了以下几个不同于传统分布式文件系统的需求:(一)PC服务器极易发生故障,造成节点失效,故障的原因多种多样,有机器本身的、网络的、管理员引起的及外部环境引起的,因此需要对整个系统中的节点进行监控,检测出现的错误,并开发相应的容错和故障恢复机制;(二)在云计算环境中,海量的结构化数据被保存为非常大的文件,一般为GB量级,因此需要改变原有的基于对中小文件(KB或者MB量级)进行管理的文件系统设计准则,以适应对超大文件的访问;(三)系统中对文件的写操作绝大多数是追加操作,也就是在文件的末尾写入数据,在文件中间写入数据的情况其实很少发生,而且数据一旦被写入,绝大多数情况下都是被顺序地读取,不会被修改,因此在设计系统时把优化重点放在追加操作上,就可以大幅度提高系统的性能;(四)设计系统时要考虑开放的、标准的操作接口,并隐藏文件系统下层的负载均衡、冗余复制等细节,这样才可以方便地被上层系统大规模地使用。因此,GFS能够很好地支持大规模海量数据处理应用程序。云计算的出现给分布式存储带来了新的需求和挑战。在云计算环境中,数据的存储和操作都是以服务的形式提供的;数据的类型多种多样,包括了普通文件、虚拟机镜像文件这样的二进制大文件、类似XML的格式化数据,甚至数据库的关系型数据等;云计算的分布式存储服务设计必须考虑到各种不同数据类型的大规模存储机制,以及数据操作的性能、可靠性、安全性和简单性。

目前,在云计算环境下的大规模分布式存储领域已经有了一些研究成果和应用。Big Table是Google公司设计的用来存储海量结构化数据的分布式存储系统,Google公司使用该系统来将网页存储成分布式的、多维的、有序的图。Dynamo是Amazon公司设计的一种基于key/value(键值)对的分布式存储系统,该系统在设计之初的一个主要考虑就是Amazon公司的大规模数据中心时时刻刻都可能发生大大小小的部件失效,因此Dynamo能够提供非常高的可用性。Amazon公司的Simple Storage Service(S3)是一个支持大规模存储多媒体的二进制文件的云计算存储服务。Amazon公司的Simple DB是建立在S3和Amazon EC2之上的用来存储结构化数据的云计算服务。七、许可证管理与计费

许可证管理与计费是IT基础设施的最终支付环节,涉及服务提供商与用户的切身利益。用户通过购买许可证或者支付费用获得对软件、硬件、服务的产权或使用权利,以及相应的售后服务支持;各提供商获得用户支付的费用。因此,通过许可证管理与计费,整个信息技术行业才得以运转。

从软件的许可证计费模型来看,在传统的软件许可证购买方式下,用户需要估算自己需要使用的软件的CPU数量、主机数量、用户数量,然后根据软件发售商提供的许可证计算方法,得到一个需要购买的许可证数量的最大值,作为最终购买的数量。举例来说,用户的数据中心有200台机器需要使用一个软件,每台机器有1个CPU,那么用户购买软件时,需要购买200个许可证。但在实际使用时,可能只有几台机器在使用这个软件,而使用软件的机器上的CPU占用率也远远不足100%。也就是说,在传统的软件许可证计费模型下,用户购买了远远超过其真实使用量的许可证数量,可以说是花了不必要的费用。

随着云计算时代的到来,IT基础设施的许可证管理与计费模式将发生重大变化。在云计算的场景下,用户可以按需付费或者按使用计费,高效而经济。在按需付费模式下,用户可以估计自己对于软件许可证的使用情况,决定自己采购的许可证数量。云计算环境会根据用户的支付给用户一定量的许可证,并按照用户在云计算环境中的使用情况计算已使用的许可证数量或释放许可。当剩余的许可证数量少于某一个特定的阈值时,系统会提醒用户,让用户决定是否追加付费,或者减少他当前使用的许可证数量。在按使用计费的模式下,用户甚至不需提前估计自己需要的许可证数量,系统会自动跟踪用户在云计算环境里的使用情况,定期生成许可证账单。也就是说,未来用户使用云计算环境中的资源会像使用水和电一样简单方便。虽然云计算的新型计费模型设计得非常美好,但是目前为了达到这个目标还有很多工作要做,其中最迫切的一个问题就是大量的软件、硬件提供商目前还没有制定出其产品对应在云计算环境下的计费模式,从而成为这些产品进入云计算环境的障碍。

目前,比较成熟的云环境计费模型是Amazon公司提供的Elastic Compute Cloud(EC2)和Simple Storage Service(S3)的按量计费模型,用户按占用的虚拟机单元(固定频率和数量的CPU、固定数量的内存、特定操作系统)、IP地址、带宽和存储空间付费。具体来说,在EC2中,对虚拟机单元的计费分为两类:一类是按需要的虚拟机单元,即用户使用时才生成、部署,EC2不保证该单元一直在系统中存活;另一类是预留的虚拟机单元,该类虚拟机单元一旦被购买,EC2会为该虚拟机预留空间,并根据用户的需求一直保持开机状态。两种计费类型都支持按使用时间计费。

在S3中,存储服务被分为三类:数据存储、数据传输和数据请求操作。S3对数据存储和数据传输按流量计费,且流量越大,单位存储的资费越低。对于数据请求操作,按照请求的类型按次计费:PUT(修改值)、COPY(拷贝值)、POST(增加值)三个占用存储空间的操作以及LIST(列表)这个比较复杂的操作费用较高,GET(取值)这个最常用的且不占用存储空间的操作,费用为前面几个操作费用的十分之一,而DELETE(删除)这个释放空间的操作不收取费用。Amazon公司通过上面EC2和S3的计费机制已经收到了很好的盈利效果,但是还不能大规模推广到其他的云环境,因为Amazon EC2的计费是以虚拟机为单元的,没有考虑虚拟机内运行的软件及软件的使用情况。第二节云计算分类

我们知道,从基本的功能来看,云计算中的云分为基础设施云、平台云和应用云。这样的分类方式其实已经包含了云架构的基本层次。云架构通过虚拟化、标准化和自动化的方式有机地整合了云中的硬件和软件资源,并通过网络将云中的服务交付给用户。云架构包含3个基本层次:基础设施层(Infrastructure layer)、平台层(Platform layer)和应用层(Application layer)。该架构层次中每层的功能都以服务的形式提供出来,这就是云服务类型分类方式的来源,即从云架构不同层次所提供的服务来进行划分的。我们可以发现,这3种层次向外提供服务的方式有公有云、私有云和混合云3种类型,这3种方式是基本的云计算部署模型。一、按服务类型分类

所谓云计算的服务类型,就是指为用户提供什么样的服务;通过这样的服务,用户可以获得什么样的资源以及用户该如何去使用这样的服务。目前业界普遍认为,云计算按照服务类型可以分为以下3类。(一)基础设施云(Infrastructure Cloud)。这种云为用户提供的是底层的、接近于直接操作硬件资源的服务接口。通过调用这些接口,用户可以直接获得计算资源、存储资源和网络资源,而且非常自由灵活,几乎不受逻辑上的限制。但是,用户需要进行大量的工作来设计和实现自己的应用,因为基础设施云除了为用户提供计算和存储等基础功能外,不做任何应用类型的假设。(二)平台云(Platform Cloud)。这种云为用户提供一个托管平台,用户可以将他们所开发和运营的应用托管到云平台中。但是,这个应用的开发和部署必须遵守该平台特定的规则和限制,如语言、编程框架、数据存储模型等。通常,能够在该平台上运行的应用类型也会受到一定的限制,如Google App Engine主要为Web应用提供运行环境。但是,一旦客户的应用被开发和部署完成,所涉及的其他管理工作,如动态资源调整等,都将由该平台层负责。(三)应用云(Application Cloud)。这种云可以为用户提供直接所用的应用,这些应用一般针对某一项特定的功能。应用云最容易被用户使用,因为它们都是开发完成的软件,只需要进行一些定制就可以交付。但是,它们也是灵活性最低的,因为一种应用云只针对一种特定的功能,无法提供其他功能的应用。二、按服务方式分类

云计算作为一种革新性的计算模式,虽然具有许多现有模式所不具备的优势,但是也不可否认地带来了一系列挑战,不论是从商业模式上还是从技术上。首先,安全问题至关重要。对于那些对数据安全要求很高的企业(如银行、保险、贸易、军事等)来说,客户信息是最宝贵的财富,一旦被人窃取或损坏,后果将不堪设想。其次,如何保证可靠性。如银行希望每一笔交易都能快速、准确地完成,因为准确的数据记录和可靠的信息传输是让用户满意的必要条件。还有就是监管问题,有的企业希望自己的IT部门完全被公司所掌握,不受外界的干扰和控制。虽然云计算可以通过系统隔离和安全保护措施为用户提供有保障的数据安全,通过服务质量管理来为用户提供可靠的服务,但是仍有可能不能满足用户的所有需求。针对这一系列问题,业界按照云计算提供者与使用者的所属关系为划分标准,将云计算分为3类,即公有云、私有云和混合云,用户可以根据需求选择适合自己的云计算模式。(一)公有云(Public Cloud)。公有云是由若干企业和用户共同使用的云环境,IT业务和功能以服务的方式通过互联网来为广泛的外部用户提供;用户无须具备针对该服务在技术层面的知识,无须雇佣相关的技术专家,无须拥有或管理所需的IT基础设施。我们前面所举的Amazon EC2、Google App Engine和Sales都属于公有云的范畴。在公有云中,用户所需的服务由一个独立的、第三方云提供商提供。该云提供商也同时为其他用户服务,这些用户共享这个云提供商所拥有的资源。(二)私有云(Private Cloud)。私有云是由某个企业独立构建和使用的云环境,IT能力通过企业内部网在防火墙内以服务的形式为企业内部用户提供;私有云的所有者不与其他企业或组织共享任何资源。私有云是企业或组织所专有的云计算环境。在其中,用户是这个企业或组织的内部成员,他们共享着该云计算环境所提供的所有资源,公司或组织以外的用户无法访问这个云计算环境提供的服务。(三)混合云(Mix Cloud)。混合云是整合了公有云与私有云所提供服务的云环境。用户根据自身因素和业务需求选择合适的整合方式,制定其使用混合云的规则和策略。在这里,自身因素是指用户本身所面临的限制与约束,如信息安全的要求、任务的关键程度和现有基础设施的情况等,而业务需求是指用户期望从云环境中所获得的服务类型。例如,网络会议、帮助与培训系统这样的服务适于从公有云中获得;数据仓库、分析与决策系统这样的服务适于从私有云中获得。

整体而言,对安全性、可靠性及IT可监控性要求高的公司或组织,如金融机构、政府机关、大型企业等,是私有云的潜在使用者。因为他们已经拥有了规模庞大的IT基础设施,因此只需进行少量的投资,将自己的IT系统升级,就可以拥有云计算带来的灵活与高效,同时能够有效地避免使用公有云可能带来的负面影响。除此之外,他们也可以选择混合云,将一些对安全性和可靠性需求相对较低的日常事务性的支撑性应用部署在公有云上,来减轻对自身IT基础设施的负担。相关分析指出,一般中小型企业和创业公司将选择公有云,而金融机构、政府机关和大型企业则更倾向于选择私有云或混合云。值得注意的是,虽然私有云能够为企业或组织创建一个独占的云环境,具有防火墙内的信息安全保障,提供资源与服务共享的便利,但是拥有和运营一个私有云需要较高的资金投入与持续的技术支持,即便是实力雄厚的公司也会感到负担很重。同样,虽然公有云能够为用户快速而便捷地提供IT能力,但是有些企业和组织希望能够获得更强的私密性。因此,在现实的生产环境中,云的私有性和公有性并不是泾渭分明的,而是存在着多种逐级过渡的方案。除了完全由自己拥有和运营的私有云外,用户还可以选择“被管理的私有云”和“被托管的私有云”两种提供模式。在被管理的私有云中,承载云环境的IT设备和基础设施仍由所属的企业或组织拥有,在物理上位于企业的数据中心内,但其私有云的创建和运维将由专业的第三方公司来完成。多数情况下,这样的第三方公司常常会通过以下步骤来帮助客户完成私有云的搭建:第一,将客户现有的物理资源通过虚拟化技术进行逻辑化,形成便于划分的资源池;第二,在该逻辑资源池上创建业务应用,并订立服务目录以便使用者浏览;第三,为业务应用提供自助访问接口和用量计费功能,服务上线并为私有云所属的企业或组织内用户所用。此后,该第三方公司还将为客户持续地提供在运维上的支持,如安全管理、业务升级、新服务上线等。与被管理的私有云相同,被托管的私有云的创建与运维将由第三方公司来完成。相比前者更进一步,如果客户选择后者作为自己拥有私有云的模式,它将不再需要建设自己的数据中心,云环境所需的IT设备和基础设施将被托管在由第三方公司提供的专业数据中心内,并可根据合同的订立来保证客户在该数据中心内对资源在物理上或逻辑上的独占性。这种独占性是该模式与公有云的本质区别。在公有云中,不同客户需通过多租户(Multi-Tenancy)技术来共享底层资源。同样,用户对于公有云的选择还可以分为排他的公有云和开放的公有云2种。在排他云中,云服务的提供者和使用者不是同一个企业,但他们事先知道谁会提供何种服务,谁会使用何种服务,他们通过线下的协商确定服务价格和服务质量。排他云通常出现在企业的联盟中,例如,某大企业与它的众多供应商和业务伙伴间可以建立排他云,大企业为供应商们提供云服务;某一行业联盟中的企业间可以建立排他云,如航空公司、酒店、旅行社等组成的联盟。在开放的公有云中,服务的使用者和提供者在服务预订前彼此不知晓对方,他们的关系是通过在线服务订阅的方式确立的。服务条款通常是由服务提供方预先定义和控制的,而服务价格和服务质量约定也是自动的和标准化的,由服务提供方预先设定。综上所述,从私有云到公有云,第三方公司能够为客户提供不同深度的自下向上的整合服务,帮助用户便捷可靠地获得私有云,同时有效减轻其建设数据中心、购置基础设施和运维云环境的负担。第三节云计算体系架构

云计算的体系架构主要可分为基础设施层、平台层和应用层三个层面。一、基础设施层

基础设施层将经过虚拟化的计算资源、存储资源和网络资源以基础设施即服务的方式通过网络提供给用户使用和管理。虽然不同云提供商的基础设施层在所提供的服务上有所差异,但是作为提供底层基础IT资源的服务,该层一般都具有以下基本功能。(一)资源进行虚拟化

基础设施层的基本功能是在搭建基础设施层时,首先面对的是大规模的硬件资源,如通过网络相互连接的服务器和存储设备等。为了能够实现高层次的资源管理逻辑,必须对资源进行抽象,也就是对硬件资源进行虚拟化。虚拟化的过程一方面需要屏蔽掉硬件产品上的差异,另一方面需要对每一种硬件资源提供统一的管理逻辑和接口。值得注意的是,根据基础设施层实现的逻辑不同,同一类型资源的不同虚拟化方法可能存在着非常大的差异。例如,存储虚拟化方面有IBM SAN Volume Controller、IBM Tivoli Storage Manager(TSM)、Google File System、Hadoop Distributed File System和VMware Virtual Machine File System等几种主流的技术。另外,根据业务逻辑和基础设施层服务接口的需要,基础设施层资源的抽象往往是具有多个层次的。例如,目前业界提出的资源模型中就出现了虚拟机(Virtual Machine)、集群(Cluster)和云(Cloud)等若干层次分明的资源抽象。资源抽象为上层资源管理逻辑定义了被操作的对象和粒度,是构建基础设施层的基础。如何对不同品牌和型号的物理资源进行抽象,以一个全局统一的资源池的方式进行管理并呈现给客户,是基础设施层必须解决的一个核心问题。(二)资源监控

资源监控是保证基础设施层高效率工作的一个关键功能。资源监控是负载管理的前提,如果不能对资源进行有效监控,也就无法进行负载管理。基础设施层对不同类型的资源监控的指标不同。对于CPU,通常监控的是CPU的使用率。对于内存和存储,除了监控使用率,还会根据需要监控读写操作频率。对于网络,则需要对网络实时的输入、输出流量,可获得带宽及路由状态进行监控。基础设施层首先需要根据资源的抽象模型建立一个资源监控模型,用来描述资源监控的对象及其度量。Amazon公司的Cloud Watch是一个给用户提供监控Amazon EC2实例并负责负载均衡的Web服务,该服务定义了一组监控模型,使得用户可以基于模型使用监控工具对EC2实例进行实时监测,并在此基础上进行负载均衡决策。同时,资源监控还具有不同的粒度和抽象层次。一个典型的场景是对包括相互关联的多个虚拟资源的某个具体的解决方案整体进行资源监控。整体监控结果是对解决方案各个部分监控结果的整合。通过对结果进行分析,用户可以更加直观地监控到某个解决方案整体资源的使用情况及其对解决方案整体性能的影响,从而采取必要的操作对解决方案进行调整。(三)负载管理

在基础设施层大规模的集群资源环境中,任何时刻参与节点的负载都是起伏不定的。节点之间的负载允许存在一定的差异和起伏,它们的负载在一定程度上不均匀也不会导致严重的后果。然而,如果太多节点资源利用率过低或者节点之间负载差异过大就会造成一系列突出的问题。一方面,如果太多节点负载过低,会造成资源使用上的浪费,需要基础设施层提供自动化的负载平衡机制将负载进行合并,提高资源使用率并且关闭负载整合后闲置的资源。另一方面,如果有些节点的负载过高,上层服务的性能将会受到影响。理想的处理器负载在60%~80%,基础设施层的自动化负载平衡机制可以将负载进行转移,即从负载过高节点转移部分负载到负载过低节点,从而使得所有的资源在整体负载和整体利用率上面趋于平衡,尽量将服务器负载控制在理想范围内。(四)存储管理

在基础设施层的存储有两个主要用途:1.存储虚拟机的镜像文件;2.保存“云”中虚拟机系统所保存的应用业务数据。一个典型的基础设施服务上面会运行成千上万台虚拟机,每台虚拟机都有自己的镜像文件。通常一个镜像文件的大小会在10个GB左右,随着虚拟机的运行过程中业务数据的产生,存储往往还会增加。基础设施云对镜像文件存储有着巨大的需求。另外,在云中运行的虚拟机内部的应用程序通常会有存储数据的需要。如果将这些数据存储在虚拟机内部则会使得支持高可用性变得非常困难。为了支持应用高可用性,可以将这些数据都存储在虚拟机外的其他地方,当一台虚拟机不可用时就直接快速启动另外一台相同的虚拟机并使用之前在虚拟机外存储的数据。为了保证虚拟机动态迁移的性能,通常会让不同硬件服务器上的虚拟机管理器使用共享存储。这些存储设备需要通过高速I/O网络和传输协议链接起来,如iSCSI。因此,基础设施即服务云通常也会提供相应的存储服务来保存应用业务数据,如Amazon S3。(五)资源部署

资源部署指的是通过自动化部署流程将资源分配给上层应用的过程,即,使基础设施服务变得可用的过程。在应用程序环境构建初期,当所有虚拟化的硬件资源环境都已经准备就绪时,就需要进行初始化过程的资源部署。另外,在应用运行过程中,往往会进行两次甚至多次资源部署,从而满足上层应用对于基础设施层中资源的需求,也就是运行过程中的动态部署。在云计算的基础设施层,动态部署有多种应用场景。一个典型的场景就是实现基础设施层的动态可伸缩性,也就是说云的应用可以在极短的时间内根据用户需求和服务状况的变化而调整。当用户应用的工作负载过高时,用户可以非常容易地将自己的服务实例从数个扩展到数千个,并自动获得所需要的资源。通常这种伸缩操作不但要在极短的时间内完成,还要保证操作复杂度不会随着规模的增加而增大。另外一个典型场景是故障恢复和硬件维护。在云计算这样由成千上万服务器组成的大规模分布式系统中,硬件出现故障在所难免,在硬件维护时也需要将应用暂时移走。基础设施层需要能够复制该服务器的数据和运行环境并通过动态资源部署在另外一个节点上来建立起相同的环境,从而保证服务从故障中快速恢复过来。资源部署的方法也会随构建基础设施层所采用技术的不同而有着巨大的差异。使用服务器虚拟化技术构建的基础设施层和未使用这些技术的传统物理环境有很大的差别,前者的资源部署更多是虚拟机的部署和配置过程,而后者的资源部署则是从操作系统到上层应用的整个软件堆栈的自动化安装和配置。相比之下,采用虚拟化技术的基础设施层资源部署更容易实现。(六)安全和风险管理

在基础设施层,安全管理的目标是保证基础设施资源被合法地访问和使用。在个人电脑上,为了防止恶意程序通过网络访问计算机中的数据或者破坏系统,一般都会安装防火墙来阻止潜在的威胁。数据中心也设有专用防火墙,甚至通过规划出隔离区来防止恶意访问入侵。云计算需要提供可靠的安全防护机制来保证云中的数据和系统安全,并提供安全审查机制以保证对云中数据的操作都是经过授权的并且是可被追踪的。

另外,云计算环境对于用户来讲,也存在着一些其他风险,Gartner发布了一份名为《云计算安全风险评估》的报告,其中列出

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载