基于 windows azure 平台的在线商城系统改造与实现

基于 windows azure 平台的在线商城系统改造与实现

ID:10714884

大小:134.50 KB

页数:96页

时间:2018-07-07

上传者:U-3269
基于 windows azure 平台的在线商城系统改造与实现_第1页
基于 windows azure 平台的在线商城系统改造与实现_第2页
基于 windows azure 平台的在线商城系统改造与实现_第3页
基于 windows azure 平台的在线商城系统改造与实现_第4页
基于 windows azure 平台的在线商城系统改造与实现_第5页
资源描述:

《基于 windows azure 平台的在线商城系统改造与实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

基于WindowsAzure平台的在线商城系统改造与实现代号10701学号0910092019代号10701学号0910092019代代号号1100770011学学号号00991XXXXXXXXXX01199分类号TP311.5密级公开分类号TP311.5密级公开分分类类号号TTPP331111..55密密级级公公开开UDC编号 UDC编号UUDDCC编编号号题目WindowsAzure题(中、英文)目WindowsAzure(中、英文)题题((中中、、英英文文))目目基于WWiinnddoowwssAAzzuurree平台的在线商城系统改造与实现TransformationandRealizationOfOnlineShoppingTransformationandRealizationOfOnlineShoppingTTrraannssffoorrmmaattiioonnaannddRReeaalliizzaattiioonnOOffOOnnlliinneeSShhooppppiinnggSystemBasedonWindowsAzurePlatform SystemBasedonWindowsAzurePlatformSSyysstteemmBBaasseeddoonnWWiinnddoowwssAAzzuurreePPllaattffoorrmm作者姓名王小燕学校指导教师姓名职称高海昌副教授工程领域软件工程企业指导教师姓名职称郭富强教授提交论文日期二○一二年五月西安电子科技大学学位论文独创性声明秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢 中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说明并表示了谢意。申请学位论文与资料若有不实之处,本人承担一切法律责任。本人签名:日期西安电子科技大学关于论文使用授权的说明本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保留送交论 文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后结合学位论文研究课题再撰写的文章一律署名单位为西安电子科技大学。本人签名:日期导师签名:日期摘要摘要摘摘要要互联网的高速普及,对以电子商务网站为代表的互联网服务提供商而言既是机遇也 是挑战。不断增长的访问量给网站创造大量利润的同时,也为其使用的网站系统带来了挑战。如何应对日益增长且多变的访问量,使用更低的运营成本提供更高质量的服务成为了摆在互联网相关开发者面前的首要课题之一。国内外的学者和研究机构为此提出了很多解决方案,云计算平台是其中的代表。不过,对于既有的网站来说,如何应用新的平台,通过对现有的系统进行有限的改造即可获得更好的扩展性、可用性,最终实现计算能力的弹性扩展尚缺乏参考。为了解决如何基于云计算平台对现有系统进行改造的问题,作者首先对云计算基础技术、微软公司WindowsAzure云计算平台以及新的设计思想进行了深入的研究,提出 了一个将传统技术网站向云计算平台进行迁移改造的开发模式。然后,作者使用该模式,对一个传统设计的电子商务网站进行改造,使之适应微软公司云计算平台。在本文中,作者重点介绍了该开发模式中各组成部分的定义、目标、部分实现细节和注意要点。最后,作者通过对改造后网站的功能和非功能测试证实了该模式的可行性。通过作者的改造工作,一个基于ASP.NET技术开发的传统网站被成功迁移到微软WindowsAzure云计算平台,在实现了各种功能和非功能性需求的同时获取了更加的扩展性和可用性。关键词:电子商务云计算WindowsAzureBASEAbstract AbstractAAbbssttrraaccttThedevelopmentoftheInternetisanopportunityaswellasachallengetotheInternetserviceprovidersuchasE-Businesswebsites.TheITsystemofthewebsiteischallengedbytheincreaseofvisitorswhiletheybroughtmuchmoreprofitforthewebsiteholders.HowtohandlethevariantandincreasingtrafficwithbetterexperienceandlowercostbecomesthemostimportanttargetoftheITsystemdevelopers.ThescientistsandinstitutesfocusedonthisfieldpresentedlotsofsolutionssuchastheCloudComputing.Whiletherecommendationson howtomakethetraditionalwebsitemorescalableandcapablebasedonthecutedgeplatformwithlessmigrateworksisstillaproblem.TheauthorofthispaperconductedextensiveresearchontheCloudComputingplatformwiththeresearchachievementsonCloudComputing,WindowsAzurebyMicrosoft,newarchitecturesandthenpresentedadevelopmentguidelineonsolvingtheproblemonhowtomigrateatraditionalwebsitetotheCloudComputingplatform.Withthisguideline,theauthormigrateanE-BusinesswebsitebuiltonthetraditionaltechnologytoawebsitebasedontheCloudComputingplatformandprovedthe Feasibilityofthisguidelinebythebothfunctionalitytestsandnon-functionalitytestingresultsofthewebsiteonWindowsAzureaftermigration.Afterall,theE-BusinesswebsitebuiltonASP.NETwassuccessfullymigratedtotheWindowsAzurewithalltestspassedandalladvantagesoftheCloudComputing.Briefly,theauthorofthispaperprovidedapracticablesolutionandguidelineforthedeveloperswhoareinterestsformigrateatraditionalwebsitetotheCloudComputingplatformformorescalableandcapable.KeyWords: KeyWords:KKeeyyWWoorrddss::E-BussinessCloudComputingWindowsAzureBASE目录目录目目录录第一章绪论.........................................................................................................................11.1课题背景及研究意义................................................................................................11.2 国内外研究现状.........................................................................................................1云计算研究现状................................................................................................2BASE现状............................................................................................................31.3本文工作.....................................................................................................................41.4论文组织结构.............................................................................................................4第二章相关技术介绍...........................................................................................................7 2.1微软AZURE云计算平台..............................................................................................7云端平台WindowsAzure.................................................................................8云端数据库SQLAzure...................................................................................122.2BASE风格介绍..........................................................................................................14BASE的必要性.................................................................................................14BASE的概念...................................... ................................................................152.3本章小结...................................................................................................................17第三章系统需求分析.........................................................................................................193.1系统背景简介...........................................................................................................19系统结构...........................................................................................................20改造范围...........................................................................................................21 技术特点...........................................................................................................213.2功能性需求分析.......................................................................................................22维持不变的功能需求......................................................................................22进行改造的功能需求......................................................................................233.3非功能性需求分析..................................................................................................24方便监控.......................... .................................................................................25简化配置...........................................................................................................25性能可扩展.......................................................................................................253.4本章小结...................................................................................................................25第四章系统设计与实现....................................................................................................284.1系统迁移...................................................................................................................28 平台迁移...........................................................................................................28数据库迁移.......................................................................................................34配置框架...........................................................................................................38诊断与监控框架..............................................................................................424.2角色分离...................................................................................................................48 规划辅助应用程序角色..................................................................................49定时执行任务..................................................................................................50队列驱动任务..................................................................................................51小结...................................................................................................................554.3BASE风格的改造......................................................................................................55一致性建模.......................................................................................................55 最终一致性模型的设计和实现.....................................................................57小结...................................................................................................................624.4本章小结...................................................................................................................62第五章系统运行及测试....................................................................................................645.1测试环境...................................................................................................................64关于Windows Azure模拟器.........................................................................64部署到WindowsAzure模拟器.....................................................................65部署到WindowsAzure云端.........................................................................665.2测试与测试结果.......................................................................................................66功能测试...........................................................................................................66非功能测试.......................................................................................................68 5.3本章小结...................................................................................................................69第六章结束语.....................................................................................................................72致谢....................................................................................................................................74参考文献................................................................................................................................76第一章绪论1第一章绪论第一章绪论 第第一一章章绪绪论论本章中首先介绍了课题相关背景和研究意义,引入了基于云计算技术解决“弹性计算”的课题;然后简要介绍了云计算、新设计风格等国内外的研究现状;最后大体介绍了本文的主要工作和本文的结构。1.1课题背景及研究意义随着互联网的发展,信息化在各个领域开花结果,越来越多的人把越来越多的事情交给互联网来处理。在不断提升互联网用户工作效率和生活质量的同时,对于互联网应用提供商来说,数据量和计算的压力也越来越大。为了提供更高质量的服务,互联网提 供商的机房被不断扩建,更多的计算机和相关设备被生产出来,并部署在这些机房,随之而来的自然是避免不了的高额成本。这里的成本不止是维持一个服务器集群所需要的电力、冷却和互联网带宽等维护成本,还有越来越高的投入门槛――对于成长型的网站,建立服务器集群的初始投资正在困扰着那些心怀创意的网站创业者。对于互联网应用的代表之一,电子商务网站即“在线商城”,即便在花费巨额资金之后摆脱了上述困扰,又开始遭遇耗费不菲的人力物力搭建和维护的大量计算资源在很长的时间段内却被闲置和浪费的困境。在传统的模式下,为了满足以国庆,春节甚至11月11日“光棍节”为代表的节假日里,突发客流高峰下系统仍然可以为客户提供可接受 的用户体验的要求,在线商城提供商必须部署一个可以满足最高峰客流的服务器集群,而在这些假期结束之后,这个集群将会以很低的资源占用率运行,长期的看,维护和购置成本存在巨大的浪费。如何才能拥有一个“弹性”――也就是高可用和高扩展性――的计算资源,可以在高峰到来时增加计算资源以获取更好的用户体验,而在低谷时减少计算资源以节约运维成本?这是摆在每一个电子商务网站甚至每一个互联网应用的开发者和维护者面前的巨大挑战。除此之外,现有的电子商务网站多数建立于数年前,已经拥有稳定的客流,虽然期望通过改造实现高扩展性和可用性来解决目前的危机,但是因为要控制投资规模和降低风险,仍然希望尽可能少的对现有系统进行调整。 本文的研究就是在这样的背景下展开。在尽可能少的对现有系统进行修改的前提下,探索一条基于云计算技术解决这个难题的途径,这就是本文的主要研究目的。1.2国内外研究现状面对上文谈到的挑战,人们尝试通过使用计算能力更强大的计算机,效率更高的基础软件,如操作系统,服务器和数据库等来解决问题,但是这些显然无法从根本上实现“”[1]弹性。于是,业内人士普遍认为,互联网提供商需要更加彻底的技术变革。这种变2基于WindowsAzure平台的在线商城系统改造与实现 革主要体现在两个方面,云计算的兴起和BASE(基本可用,软状态及最终一致)风格[2]的形成。云计算研究现状这场变革是从虚拟化技术的普及开始的。虚拟化实现了资源的逻辑抽象和统一表示,大大降低了管理复杂度,提高了资源利用率和运营效率,从而有效地控制了IT的成本。但是只有这些是不够的,硬件的虚拟化需要构建数据中心,所以硬件采购、软件安装、系统维护等环节也是避免不了的。于是,租借数据中心成为了解决剩余问题的法宝。 就像上个世纪早期,人们从自备发电机发电转向使用发电厂提供给公众的电能,向面向公众开放的数据中心租借抽象后的虚拟化计算资源来搭建自己的信息化系统开始替代自己建立和维护数据中心。这样,对数据中心有很大需求的互联网提供商,比如电子商务网站可以摆脱对数据中心的搭建和维护,只需要向计算资源租赁服务的提供者(就是下文谈到的云计算提供商)租借统一的计算单元就可以承载自己的计算任务了。这样,电子商务网站在遇到淡季时少租借一些,而旺季多租借一些计算单元就可以初步实现上文提到的弹性计算。因为作为计算资源的使用者并不了解自己使用的计算资源来自什么样的计算机和网络结构,这些信息都被互联网隔离而且不需要使用者关注,人们形象的 “”称这种提供计算资源的服务为云计算。总之,云计算是一种采用创新的计算模式可以使用户对计算和服务取用自由、按量31付费。一般的说,云计算有个最基本的特征:第个是基础设施架构在大规模的服务器集群之上;第二是应用程序与底层服务协作开发,最大限度地利用资源;第3个是通过多个服务器之间的冗余,通过软件获得高可用性。[3]根据云计算提供商提供服务的层次和对平台架构的隔离程度,业界将云计算分为以 [4]下三个层次:基础设施即服务(IaaS),平台即服务(PaaS)和软件即服务(SaaS),三者的层次如图1.1所示。图1.1云计算的分层IaaS基础设施即服务():这个层次的云计算服务涵盖了计算机硬件,网络设施,安第一章绪论3全保障,备份冗余等基础设施。使用IaaS的用户面对的是一台虚拟化的机器,只需要自行安装和管理操作系统,服务器软件,自身业务系统即可。IaaS是云计算的基础。直接 使用的话,IaaS的主要优点是对现有系统的影响最小;缺点是进行计算量伸缩(增加或减小计算能力)有明显的时间间隔,没有实现无缝伸缩。IaaS的代表有美国亚马逊公司提供的EC2计算服务,日本IIJ株式会社提供的IIJGIO服务等。平台即服务(PaaS):这个层次的云计算服务是在IaaS的基础上增加了操作系统,[5]数据库系统,服务器软件和一些中间件。使用PaaS的用户面对的是一个运行平台,只需要部署和维护基于该平台开发的系统即可。PaaS的主要优点是可以实现计算量随使用需求自由增大和缩小,并按照使用量进行计费,真正实现了无缝伸缩;缺点是使用者 需要根据云计算提供商的平台进行系统开发或改造。PaaS的代表有美国微软公司提供的WindowsAzure平台,美国谷歌公司提供的AppEngine平台等。软件即服务(SaaS):SaaS是云计算在最终用户面前的展现形式,最终用户不需要关心系统的细节,只需要通过互联网直接使用即可。因为这个层次的云计算是直接面对最终用户的,在本文中就不进行深入探讨了。SaaS的代表有美国Salesforce公司提供的在线CRM网站等。BASE现状除了以云计算为代表的计算和商业模式的创新,业务处理的模型也在发生着转型。2000719EricBrewer 为了应对软件系统对扩展性等的要求,年月日,教授(现执教ACMCAP“于加州大学伯克利分校)在研讨会上提出了著名的理论任何分布式系统在”[6]一致性,可用性和分区容错性(可以理解为可扩展性)三者中只能满足两者,随后[7]学术界对这个理论进行了证明。后来因为业务的快速膨胀,一些成长型的网站开始陆续遭遇CAP原则带来的困境――传统的设计思想中维持强一致性是首要任务,这样的 系统中可用性和分区容错性很难得到保证。根据业务的需要,多数网站开始寻求在对一致性做出一定退让的前提下,提高可用性和分区容错性的解决方案。于是以业务分区为代表的一系列反传统设计范式的技术方案开始被大规模应用。在这个反传统的浪潮中,eBay公司的架构师DanPritchett博士于2008年用BASE风格(基本可用、软连接和最终一致性)这个概念深入总结了适度牺牲一致性换取高可用和高扩展性的技术思想[2],BASE风格也就成为了解决高可用和高扩展性的新选择。理论上的进步带来了技术的进一步发展。早在BASE风格被总结归纳之前,亚马逊[8] 公司就推出了基于BASE风格设计的AmazonS3数据服务,并且引入了对用户屏蔽数据库物理结构,根据实际使用量付费的新运营模式。后来,这种对扩展性更加友好的技术思想伴随着拥有高可用性和扩展性的云计算平台,让互联网服务提供商,尤其是成4基于WindowsAzure平台的在线商城系统改造与实现长型的网站看到了低成本解决可用性和扩展性的新思路。综上所述,在解决高可用及高扩展性计算方面,国内外的专家学者以及工程师们正在寻找多种解决方案。云计算平台解决了计算和商业模式的问题,BASE风格解决了业务逻辑中常见的与云计算相冲突的部分。作者认为,理论上讲,只要按照BASE原则设 计和实现网站系统,然后在云计算平台――尤其是扩展性和可用性更好的PaaS――上部署就能实现前文所提到的“弹性”计算。但是,云计算平台尤其是对开发人员最为关注的PaaS服务,对运行其上的业务系统也有很多的要求。以微软公司的WindowsAzure云计算平台为例,把包含复杂业务处理的现有应用迁移到云计算平台,需要面对全新的运行环境,受限制的维护接口等一系列问题,于是开发者需要对网站进行一定程度的改造以适应新的平台。而这个改造的过程除了微软提供的一些概要性技术指导文档外,实践性资料,尤其是针对有着复杂业务 逻辑和维护性要求的电子商务网站领域的实践性参考资料较少。除此之外,作者认为传统应用一般开发于上个时代,系统几乎全部使用强一致性优先原则进行设计,当迁移到云计算平台时,这种设计风格将严重影响云计算优势的发挥。所以,改造过程中还需要涉及到针对云计算的特点进行BASE风格的业务改造,然而这种实践通常与系统的业务紧密相关,加上商业企业对自己系统的敏感程度,实用价值强的参考资料就更是少之又少。1.3本文工作本文的工作是将一个网上商城系统从传统的ASP.NET平台转换为BASE风格的微软Azure平台。转换过程分为系统迁移、角色分离和BASE 风格的业务改造三个部分。系统迁移是指将传统网站改造成一个基于WindowsAzure加SQLAzure运行的云计算系统,使之可以在云计算平台下顺利运行,并可以提供必要的诊断和日志功能。角色分离是将业务逻辑根据需要分拆到WindowsAzure的不同计算角色中去,实现对计算资源的更高效率利用。业务改造是根据对系统中的业务进行分析,对可以接受最终一致性功能的业务进行BASE风格改造,使之可以适应WindowsAzure存储服务要求,并最终实现将这部分数据从SQLAzure迁移到存储服务中,以实现更好的扩展性和可用性。1.4论文组织结构 第一章绪论。本章将要介绍本论文的问题背景、当前相关领域的研究现状和本文主要工作。第二章相关技术介绍。本章将介绍本文中主要使用的微软Azure云计算平台和BASE第一章绪论5设计风格。第三章系统需求分析。本章将对升级前的系统进行业务和技术分析,介绍系统背景,对改造的功能及非功能需求第四章系统的设计和实现。本章将介绍从ASP.NET平台迁移到微软Azure平台的开发模式和技术细节。 第五章系统运行及测试。本章将介绍系统的测试平台、测试方法和测试结果,对整个转换工作进行了检查和总结。第六章结束语。本章主要介绍了本文的研究结论及下一步的工作展望。6基于WindowsAzure平台的在线商城系统改造与实现第二章相关技术介绍7第二章相关技术介绍第二章相关技术介绍第第二二章章相相关关技技术术介介绍绍本章对可能使用到的平台和设计思想进行了介绍,并介绍微软Azure云计算平台和BASE设计风格的相关知识。 2.1微软Azure云计算平台Azure2008102720102微软的云计算平台诞生于年月日,并在年月开始商业运行。在业内有观点认为,这是微软自2002年发布.NET以来最重要的技术进步,同时也[9]是整个软件技术发展史上最具标志性的里程碑事件之一。微软Azure云计算平台提供了高度可用的计算功能,能够在云中运行应用程序代码并允许快速向上扩展或缩小应用程序以满足不同的计算能力需求。在Azure中,每个计算实例都是一台虚拟机,可实 现不同客户之间的隔离。而在将计算资源分配给应用程序之后,Azure会自动处理网络负载平衡和故障转移以提供持续可用性。与常见的IIS(微软公司为WindowsServer开发的互联网服务器软件)附加网络中心托管构成的服务器托管不同,微软Azure云计算平台不止为用户提供了一个服务器或虚拟机,他更提供了一个基于WindowsAzure操作系统虚拟化技术服务器组成的服务平台,使用它部署网站后,开发者不需要自己操作服务器,甚至不需要考虑页面该放在那里,数据库又放在哪里。为了实现这一目标,WindowsAzure应用了微软公司在互联网服务器及相关领域的一系列最新技术,比如.NETFramework2.0至4.0,ASP.NET3.5和 4.0,ASP.NETMVC1.0至3.0等。除此之外,WindowsAzure还提供了使用友好的数据存储服务,如存储结构化数据的表存储,存储大尺寸整体数据的块存储以及队列服务。而这些都通过WindowsAzureAppFabric被整合在一起,以一个整体提供给开发者。对于开发者而言,这些只是WindowsAzureSDK中的组件,可以使用VisualStudio集成开发环境像开发ASP.NET一样,使用熟悉的语言和技术进行开发和调试。除了提供互联网服务器平台功能的WindowsAzure之外,微软Azure云计算平台还提供了基于云计算的数据库服务MicrosoftSQLAzure。在实际使用中,关系型数据库仍 然是很多业务系统中必不可少的组成部分,它们承载了用户的数据和一部份计算逻辑。为了帮助用户在WindowsAzure下使用现有的关系型数据库,微软将传统的SQLServer搬到云端,提供SQLAzure关系型数据库应用。开发者可以使用传统SQLServer2008R2附带的管理工具如SQLManagementStudio通过TCP管道直接连接到云端进行部署,维护甚至调试。但是相比于WindowsAzure的存储服务,SQLAzure因为数据库尺寸较大,性能伸缩比较迟缓,可扩展性存在一定差距。8基于WindowsAzure平台的在线商城系统改造与实现当然,微软在Azure中依然提供了基础设施即服务的解决方案,以VMRole的形式 将虚拟机提供给用户,由用户自行配置和使用。因为与本文的关系不大,所以就不再详细介绍了。总之,微软Azure平台提供了各个层次的云计算服务,包括IaaS的VMRole服务,PaaS的WindowsAzure服务和SaaS的SQLAzure服务。通过这些服务,我们可以尽可能利用已经掌握的微软平台开发技能,使用熟悉的微软开发平台和软件灵活的开发,调[10]试和部署云计算下的业务系统。云端平台WindowsAzureWindowsAzure是微软Azure平台中的PaaS部分,WindowsAzure提供了一个整合 2.1了存储等附加功能的互联网服务器平台。该平台的结构如图所示。图2.1WindowsAzure的主要组成结构1角色Web应用程序(WebRole):WindowsAzure中的WebRole具有特殊用途,它提供了用于承载前端Web应用程序的专用InternetInformationServicesIISWeb服务器。开发者可以通过IIS7对Web角色进行预配置,可以使用常用Web技术(如ASP.NET、PHP和Node.js)轻松创建应用程序。开发完成后,使用WindowsAzure的网站,开发人员可以快速轻松地将Web应用程序部署到WebRole,然后向上扩展或缩 小计算功能以满足需求。辅助应用程序(WorkerRole):辅助角色中承载的应用程序可运行独立于用户交互的异步任务、运行时间较长的任务或永久性任务。借住辅助应用程序,WindowsAzure第二章相关技术介绍9可以更好地分发应用程序逻辑并更精细地控制应用程序的扩展方式。应用程序通常由Web角色和辅助角色组成。WindowsAzure中的常见实现会获取来自WebRole的输入,再通过队列将这些请求发送给WorkerRole,然后处理这些请求并存储输出。WebRole和WorkerRole的关系如图2.2所示。来自互联网的HTTPS请求Web应用服务角色 辅助应用角色负载均衡WindowsAzure内部网络图2.2WindowsAzure个角色的交互关系需要注意的是,每个角色运行实例都是无状态的,也就是说,如果运行实例重启或迁移到别的虚拟机节点上,则保存在原来运行实例虚拟机的数据会全部丢失,而且每个运行实例不可以直接访问其他运行实例上的数据,所以无法实现数据共享。因此,WindowsAzure应用程序角色不可以完全依赖本地硬盘来存储数据,而是需要一个全新 的可以永久保存数据的存储系统,而且各个运行实例可以通过直接访问存储系统来共享[11]数据。这个存储系统就是WindowsAzure存储服务。2存储服务存储服务是WindowsAzure提供的诸多附加功能中最重要的一个。WindowsAzure存储服务并不是一个关系型数据库,相比于SQLAzure提供的关系型数据库,存储服务使用RESTful(可表述的状态转移)API按照OData(开放数据协议)协议对外提供数据的存取。理论上,只要开发平台可以处理HTTP请求,即便不是WindowsAzure平台上的应用甚至不是微软开发平台都可以自由使用存储服务。根据应用系统的使用需求不 同,WindowsAzure主要提供了三种不同的数据存取模式,分别为表存储,块存储和队列存储。相比于SQLAzure,WindowsAzure存储服务可以更大程度上提供高可用性和高扩“”展性。对于弹性的电子商务应用,应该首选存储服务来存取数据。10基于WindowsAzure平台的在线商城系统改造与实现表存储(TableStorage):表存储是一种存储结构化数据的服务。在表存储中,数据被组织成如图2.3的结构。和通常意义上的数据表不同,在表存储中,系统不会对存入表中的实体模式(Schema) 进行约束,拥有不同属性的异构数据实体(书籍和笔)可以放置在同一个表(商品表)内。这样灵活的方式可以为开发人员的设计,甚至系统的维护带来很大的便利。图2.3表存储中数据的逻辑结构表存储中可以存放布尔值、二进制数据、GUID、时间、整形和浮点数和字符串等类型的数据。开发者可以使用LINQ,ADO.NET和REST操作表存储。不论使用哪种方式操作,WindowsAzure可以保证同一个实体范围内各属性数据操作的一致性。为了让开发者可以实现有针对性的性能优化,每个实体都提供了一个特殊的属性:分区键 (PartitionKey),同样分区键的实体会尽可能被放置到一个物理的存储分区内,此外,只有同一分区键的实体可以组成一个实体组,建立提交事务(除此之外,还需要满足位于同一表,数量不超过100个的限制)。块存储(BlobStorage)块存储是一种存储非结构化数据的方式,可以用来存储没有数据结构的大尺寸数据,比如文档、图像和视频文件等。在块存储中,数据被组织成如图2.4的结构。在一个容器(MediaLib)中可以存放各种大小,各种数据类型的块(图片和视频)。块存储有数据块模式(BlockBlob)和数据页模式(PageBlob)两种,其中块模式对上传进行优化,一次操作4MB大小的块,单个Blob 的容量限制为200GB,页模式对随机读写进行优化,可以以512个字节为单位对文件内的部分数据进行操作,单个Blob的容量限制为1TB。WindowsAzure提供了自由修改存储模式的API,开发者可以自由切换数据块模式和数据页模式。第二章相关技术介绍11图2.4块存储中数据的逻辑结构消息队列(Queue)与前两者不同,消息队列的主要职责不是保存数据而是用来通讯。消息队列提供了[11] 一个WebRole和WorkerRole共享的消息队列,一般用于两者之间的通讯。其中的一方向队列中压入一个包含有小于8KB指令的消息,另一方通过轮询消息来获取指令如图2.5,处理完成后通知处理结果也是同样的原理。在实现松耦合设计思想时消息队列可以提供很重要的支持。辅助应用角色1,接收任务Web应用角色4,处理任务3,读取消息2,消息入队5,删除消息 消息队列图2.5消息队列的使用场景3WindowsAzure的开发平台WindowsAzure推荐使用微软公司的VisualStudio2008或VisualStudio2010产品作为工具,利用C#或VisualBasic.NET语言进行开发。如需开发WindowsAzure的应用,除了安装VisualStudio外还需要安装WindowsAzureSDK、模拟WindowsAzureWebRole的IIS组件以及模拟WindowsAzure存储服务时使用的SQLServer或SQLServer12基于WindowsAzure平台的在线商城系统改造与实现Express。 因为微软传统的互联网技术平台ASP.NET本身也是使用VisualStudio进行开发,语言和基础运行平台和WindowsAzure兼容,对于使用ASP.NET技术的网站而言,选择WindowsAzure作为升级云计算的首选平台既实现了无缝伸缩、免去维护系统的成本,[12]又能避免大规模修改现有系统以适应软件即服务(SaaS)厂家的结构。4小结WindowsAzure是微软公司基于IIS,ASP.NET等成熟技术打造的PaaS层次云计算。WindowsAzure同时提供了应用和存储两种服务,前者负责处理用户请求或执行计算处 理,后者负责存储数据和内部通讯。WindowsAzure的应用角色分为负责响应用户请求的Web应用程序角色和负责在后台处理数据的辅助程序角色;存储则以表存储、块存储和消息队列分别完成结构化数据的存取,非结构化数据的存取和应用角色内部通讯。作者认为,WindowsAzure既具备云计算的高扩展性高可用性,同时也可以支持开发者使用熟悉的工具和技术进行开发,是升级既有ASP.NET网站的优先选项。云端数据库SQLAzureSQLAzure是微软Azure平台中的SaaS的部分。简单的说,SQLAzure提供了一个放置在云端的关系型数据库。用户可以像使用传统的SQLServer一样使用SQLAzure 来完成现有的数据库业务。与SQLServer不同的是,SQLAzure中单个数据库的容量上限被限制为50GB。1访问SQLAzureSQLAzure可以支持灵活的使用方式。图2.6描述了两个可供使用的一般性方案,演示不同位置的应用程序如何使用SQLAzure数据库访问数据。在左侧的方案A中,应用程序代码保存在用户的公司数据中心内部,但数据库驻留在SQLAzure数据库中。应用程序代码使用客户端库来访问SQLAzure数据库中的数据库。在右侧的方案B中,应用程序代码在WindowsAzure中承载,而数据库则驻留在SQLAzure数据库中 [13]ASQLAzure。应用程序可以使用与在方案中所提供的相同的客户端库来访问数据库中的数据库。在WindowsAzure平台中可以承载多种不同类型的应用程序。方案A比如本地安装的SQLManagementStudio软件可以连接SQLAzure进行日常的数据库维BWindowsAzureWorkerRoleSQLAzure护和查询功能;方案比如中的连接进行数据汇总操作。第二章相关技术介绍13 方案A方案B应用程序代码基于Web的客户端(浏览器等)HTTPSTDS+SSL互联网WindowsAzure代码TDS+SSLTDS+SSLSQLAzure图2.6SQLAzure的体系结构和使用方案 2SQLAzure的技术特点与传统的SQLServer相似,SQLAzure数据库为基于T-SQL的数据库访问公开了数据流TDS接口。这样,应用程序就可以采用与它们使用SQLServer的相同方式来使用SQLAzure数据库了。但是,SQLAzure数据库是一种建立与云计算平台上的服务,所以SQLAzure数据库中的管理会稍有不同。SQLAzure数据库对SQLServer的管理方式进行了修改,实现了物理管理和逻辑管理的分离:开发者继续管理数据库、登录名、用户和角色这些逻辑内容,但SQLAzure的云计算平台会管理服务器和存储之类的物理硬件。正因如此,SQLAzure服务可提供企业级别的可用性、可伸缩性、安全性 和自我修复。此外,SQLAzure为了向所有数据库客户提供很好的体验,当发生类似于过多资源14基于WindowsAzure平台的在线商城系统改造与实现占用、过长时间的单个事务处理等情况是,应用程序与该服务的连接可能会被强行关闭[14]。3小结SQLAzure是微软公司提供的软件即服务级别云计算。SQLAzure在云端为用户提供几乎完整的SQLServer关系型数据库服务。用户的应用程序可以在WindowsAzure平 台或本地机器上使用安全的连接登录到SQLAzure进行数据处理。SQLAzure支持使用现有SQLServer的SQLManagementStudio等工具进行查询和管理,支持几乎所有的T-SQL语法。作者认为,SQLAzure是将现有的SQLServer升级到云计算平台的首选方案。2.2BASE风格介绍BASE风格是一种对扩展性和可用性友好的设计风格。DanPritchett在2008年将BASE[2]BASECAP风格定义为基本可用,软状态及最终一致。风格是对理论中保留 可用性和分区容错性的实践指导。作者认为当一个系统或子系统需要牺牲一定程度的一致性来换取更高的可用性和可扩展性时,BASE风格是个不错的选择。BASE的必要性为了解决计算能力不足的问题,大型电子商务网站早已走上了分布式的道路。但是,从最早为大型独占式计算(比如环境模拟等)设计的分布式系统被引入到海量并发应用领域开始,分布式系统就暴露出了一致性和性能不能两全的问题。在这个问题上很多学者都提出过设想和理论,其中以HaifengYu和AminVahdat为代表的学者还贡献了一些[15]2000CAP 模型和实践框架。但是,年时理论的出现让人们认识到这个问题的必然性。CAP理论认为一个分布式系统有三个系统需求,以一种特殊的关系存在,这三个需求是一致性Consistency、可用性Availability和分区容错性PartitionTolerance,对一个数据[6]而言,这三者中最多只有两者可以满足,2002年来自麻省理工大学的SethGilbert和[7]NancyLynch从理论上证明了CAP理论。面对这个困局,不同类型应用的开发者做出了不同的选择。对于一个致力于提升用户体验,并承载更多订单的电商网站来说,可 用性与分区容错性是相当重要的,甚至一致性都可以在一定程度上做出退让,比如美国最大的电子商务网站电子海湾(eBay)选择用数据一致性上的损失来换取系统整体伸缩[16]性和性能上相当大的改进。对于一致性,可以分为强一致性和弱一致性。强一致性要求更新过的数据能被后续的访问都能看到;如果能容忍后续的部分或者全部访问不到,则是弱一致性。对于弱一致性而言,如果可以保证如果对象没有新的更新,最终所有访问都将返回最后更新的值,第二章相关技术介绍15[17] 则称之为最终一致性。在亚马逊看来,最终一致性是换取可用性及可扩展性时的底线,也就是保证最终一致性的前提下容忍数据一致性的损失。对于电子商务网站而言,以最终一致性为底线,牺牲一定的一致性换取可用性和可扩展性是解决一致性困局的首选思路。BASE的概念最终一致性的引入打破了传统应用中单一适用强一致性的局面,适当牺牲强一致性后,系统会变成什么样子?2008年,BASE风格出现在业内人士的视野中,并且毫无疑问的引起了大家的关注。BASE是英文单词基本可用,软连接和最终一致性的缩写, [2]这个概念深入总结了适度牺牲一致性换取高可用和高扩展性的技术思想。1ACID与BASE在传统的设计思想中,强一致性被放在不可置疑的高度,以MicrosoftSQLServer,Oracle等为代表的关系型数据库把强一致性保证作为自身最优先的设计目标之一,进而影响着几乎所有基于关系型数据库建立的应用系统。在这些业务系统中,各种级别的锁在增加了系统复杂度,引入死锁风险的同时带来了系统吞吐量的下降。这种系统在对事务的处理上有以下的特征[2]:原子性Atomicity:事务中的所有操作,要么全部成功,要么全部不做。 一致性Consistency:在事务开始与结束时,数据库处于一致状态。隔离性Isolation:事务如同只有这一个操作在被数据库所执行一样。持久性Durability.:在事务结束时,此操作将不可逆转,也就是只要事务提交。系统将保证数据不会丢失,即使出现系统崩溃。相比于ACID风格,BASE风格更加强调可用性和可扩展性。BASE风格下强一致性并不是系统的必要特征,最终一致性也是可以接受的。BASE有以下的特征,BASE这个名字也是从这些特征中得出来的:BasicallyAvailable基本可用:允许数据没有被复制到某个分区内。Softstate软状态:状态可以有一段时间不同步。 Eventuallyconsistent最终一致:最终数据是一致的就可以了,而不是时时都要一致。一定程度上说BASE是ACID的反模型,但两者并不是不能共存的,在同一系统中,可以同时存在两种风格的应用,用来处理不同的需求。不过,相比于传统的ACID风格,更加贴近于云计算平台高可用性搞扩展性特征的BASE风格是本文研究和实践的重点。2BASE的典型实践BASE风格是一个设计理念,而不是一种严格的实践标准。但是,一般的说以下技术是BASE风格设计的代表。他们都具备多重数据冗余,存在数据复制造成的数据不一16基于WindowsAzure平台的在线商城系统改造与实现 致时间窗也都能实现最终一致性。读写分离在传统的数据库设计范式中,一个数据表中只能保存一种数据,如果出现一种数据和另一种数据的关联则需要使用关系将两者连接在一起。比如订单数据需要保存在“订单”表中,而订单中的商品信息则需要保存在“商品表”中,两者使用“外键”建立关联。如此设计确实可以减少数据冗余,但是,如果需要查询订单和其中所有商品的信息时,表连接操作会很大程度上降低查询的性能。为了解决这个问题,将系统使用的数据按照读取和写入进行归类,按照数据库传统设计范式进行设计,完成的表称之为“写入表” ,写入表需要对写入操作进行优化;而除此之外,还需要根据业务的需求从写入部分的数据中抽取一部分组成对读取友好的表,这些表称为“读取表”,读取表类似于持久化的视图,业务系统仅靠对读取表的查询就能获取完整的数据,尽量避免表连接操作。读取表中需要组合若干写入表中的信息,导致这种表的列数往往多于传统数据库设计出的写入表,作者将这种设计称为大表设计。大表设计中,数据存在一定程度上的冗余。为了保证每个冗余的数据都能得到更新,达成最终一致性,应用程序还应设计相关的同步机制。数据分片(碎片化数据库)数据分片(Database sharing)技术又称碎片化数据库技术,是一种把数据库分散到[18]多个物理节点上的一种有效的方式。分散后,每一个分区包含数据库的某一部分,被称为一个“片”,分区方式可以是任意的,一个片可以包含一个或多个表的内容。每个片被放置在一台服务器上。而一台服务器也可以承载一个或多个片的数据。相比于传统的单个数据库,分片之后的数据因为容量更小,计算负载更轻,不论负载均衡还是简单的冗余容错都变得更加容易。当然,分片后的数据库会产生大量片之间的复制过程,期间虽然有机制保证复制的速度大于片数的增长速度,也就是说每个数据段都可以被复制 到所有包含这个数据段的片上,也就是可以实现最终一致性。不过,在这个过程中,仍然存在一个或长或短的时间窗,在这段时间里,数据的一致性没有得到保证,也就是BASE中的软连接。[19]数据分片技术现在大量应用在非关系型的数据库上,在追求高可用性的大并发系统中,这种被称作NoSQL的非关系型数据库是传统数据库的重要补充。作为云计算平台,WindowsAzure在高扩展性和高可用性上的追求超过了强一致性。尤其是WindowsAzure存储服务通过数据分片等技术完全体现了BASE的设计风格,而且开发接口方面也对BASE更加友好。如果开发者选择在WindowsAzure 平台上开发高可用和高扩展性的应用程序,尽可能按照BASE风格改造应用系统,以此利用存储服务的优势是必经之路。第二章相关技术介绍172.3本章小结本章中主要介绍了本文研究过程中使用到的主要技术和思想。以WindowsAzure为代表的云计算技术辅以与之适合的BASE设计风格是解决“弹性”计算的有效方案。本文中的主要内容便是基于WindowsAzure平台改造一个电子商务网站,并使用BASE风格进行进一步的改造,以实现更好的可扩展性与可用性。 18基于WindowsAzure平台的在线商城系统改造与实现第三章系统需求分析19第三章系统需求分析第三章系统需求分析第第三三章章系系统统需需求求分分析析本章将对需要进行改造的网站系统(开发代号MoonCake,以后略称MoonCake)背景,现状和改造的要求等进行简要介绍。3.1系统背景简介MoonCake是一个销售书籍的电子商务网站的开发代号。随着网站知名度的提升,业务量成倍增长,原有的网站系统虽经过很多次改造,在面对圣诞节,复活节等传统假 期的峰值客流时仍然力不从心。为了彻底改变这种闲时资源浪费,忙时资源不足的状况,出资人同意运营团队对网站进行可控的升级,从托管于IDC机房的传统应用升级到云计算平台下的弹性应用。MoonCake并不是一个独立的系统,而是整套信息化系统的一个模块。与MoonCake相关的其他系统主要有订单及物流系统,在线阅读服务系统和内部管理系统等。这些相关系统之间的关系如图3-1所示。内部管理系统为MoonCake维护商品列表,并从MoonCake获取数据制作分析报表;订单及物流系统与MoonCake交互订单状态,仓储情况等信息;在线阅读网站从MoonCake 获取书评,销量等信息。目前这些交互全部采用数据库共享的方式实现。维护商品列表,制作报告在线阅读网站内部管理系统书评,销量等内容共享接入内网同步订单处理和仓储状态MoonCake网站公司防火墙订单及物流系统图3.1MoonCake与其他系统的关系20基于WindowsAzure平台的在线商城系统改造与实现 系统结构图3-2是升级到云计算平台前的MoonCake系统结构示意图(不含冗余设备)。MoonCake由一台负载均衡器,2台Web应用服务器,一台数据库服务器和一台静态文件服务器组成。HttpTCP静态文件服务器Web服务器1HttpHttps 用户HttpTCP负载均衡Web服务器2数据库服务器图3.2MoonCake系统结构示意图1运行环境MoonCake网站的运行环境为WindowsServer2008英文标准版,IIS版本为7.0,ASP.NET版本为2.0,运行时版本为3.5SP1。MoonCake的数据库运行环境为WindowsServer2008英文标准版,数据库软件为SQLServer2008英文标准版,排序为 Latin1_General_CI_AS。2数据库布局MoonCake的数据库为主-副数据库式布局。主数据库为MooncakeMainDb,其中保存了网站的全部信息和当年度内的订单信息。存档数据库为MooncakeArcDb_xxxx,其中xxxx为年度,其中保存了xxxx年度所有的订单信息以及附加在订单上的商品镜像信息。3小结综上所述,MoonCake是一个典型的ASP.NET多层网站应用,并使用按年度分割数据库的方式实现了初步的数据库分散。MoonCake 虽然作为一整套公司网络应用中的一部分,但是和其他部分的通讯依靠共享数据库来实现,因此只要不是对数据库设计做修改,可以基本保证不会对其他应用造成意料外的影响。第三章系统需求分析21改造范围出于成本和风险考虑,本次向云计算平台的迁移仅限在MoonCake中。对其他系统尽可能保持不变。但是就MoonCake本身,各角色都需要迁移到云计算平台。因为由运营团队负责部署等操作,开发团队只需要完成开发、本地测试以及云计算平台上测试的支持工作。 技术特点1Web服务器MoonCake的Web应用服务器已经初步具备了一定程度的灵活性和松耦合的特点。日志框架、配置框架等的使用,让业务功能与事务性功能得到一定程度上的分离,加上针对核心模块的单元测试覆盖度较高,修改程序逻辑的风险基本可控。在前台方面,MoonCake没有使用常规的ASPX技术,而是采用6>HTML附加JavaScript的前端方案,通过AJAX技术和后台服务进行交互。前端的样式支持根据配置文件进行选择,可以快速切换样式而不需要修改代码。后台方面,MoonCake采用RESTFulWCFService和通用HTTP处理器技术响应来自前台AJAX调用,以JSON或DOM 的方式向前端传输信息,会话信息被保存在数据库中。数据库访问方面,MoonCake自行制作了一套数据库访问组件,支持参数化的T-SQL查询。MoonCake采用C#语言开发,开发工具为VisualStudio2008SP1。执行迁移时作者使用了当时最新的集成开发环境VisualStudio2010SP1,但运行时版本依然为3.5SP1。2数据库服务器MoonCake的数据库服务器基于SQLServer2008,但是没有使用包括CLR在内的高级功能。MoonCake的数据按年度拆分数据库,拆分过程由专门的工具完成。拆分后的数据库连接信息会被添加到主数据库的连接数据库中。 数据库中的表基本上满足数据库设计三大范式的要求,按照用途不同,这些表分为两个类型:一种是MoonCake自己使用的,一般以MC_开头以示区分;另一种的是给关联系统使用的。两种类型的表有一部分的数据是存在冗余的,通过触发器等技术实现同步。3静态文件服务器MoonCake的静态文件服务器的操作系统为WindowsServer2008核心版,仅配置了简单的IIS发布指定文件夹的静态文件。22基于WindowsAzure平台的在线商城系统改造与实现3.2功能性需求分析 本文的工作是将MoonCake整体从ASP.NET迁移到微软Azure云计算平台,迁移中可以使用的云计算服务器为WindowsAzure和SQLAzure。因为这是一个系统升级的项目,功能上的要求是尽量维持和现有系统一致。鉴于前台界面并不会因为使用云计算平台而做出任何改变或标示,运营团队希望最终用户感觉不到系统已经发生了迁移。此外,对于与其他系统的交互方面,也要尽可能减少对其他系统的修改以控制成本和风险。作者认为,对于这种改造工作,保证系统业务功能和改造前一致是最高要求。如果存在因为平台限制而无法实现这一点的功能,至少要也要保证最终用户不能感知业务功能的 变化。维持不变的功能需求作为电子商务系统的重要组成部分,MoonCake网站的主要功能模块有商品信息、商品评价、推荐与分享、订单查询、收藏与关注、用户信息管理、订单处理、内部维护及统计数据等,如图3.3所示。MoonCakeMoonCakeMMoooonnCCaakkee网站查询商品评价商品统计数据 一般用户内部管理系统推荐与分享内部维护处理订单查询订单已登陆用户订单及物流系统收藏与关注用户信息管理图3.3MoonCake主要模块的概要用例图第三章系统需求分析23 表3.1是MoonCake主要功能需求简表,其中描述了MoonCake网站系统的RESTFulWCFService端主要功能及其分类。鉴于功能众多,加之本文的主要工作是系统迁移,功能上的要求是尽量维持和现有系统一致,这里仅截取了一部分查询商品和查询订单的功能,作为展示。表3.1MoonCake主要功能需求简表模块功能描述查询分类列表查询分类和子分类列表根据用户信息中推荐类别查询推荐商查询推荐列表 品列表(简要信息)查询商品1查询周内销量最高的商品列表(简要查询热销列表信息)查询一个商品的当前镜像,包含界面需查询指定商品信息要显示的全部信息,包括相关商品列表(简要信息)、厂家名称等扩展信息。 ……查询订单查询订单列表根据时间段查询指定用户的订单列表查询订单下商品列查询订单下的商品列表(简要信息、物表流状态等)查询商品的指定镜像,包含界面需要显查询订单中的商品示的全部信息,但是不包含相关商品列信息表。 ……为了达到本文的目标,以上的主要业务功能逻辑将保持不变,与其他系统交互的数据表结构和数据也保持不变,这也将成为迁移后测试的基准。进行改造的功能需求作为一个电子商务网站,MoonCake中使用次数最多的功能是商品信息的查询功能。为了便于用户使用,MoonCake提供了多种查询商品信息的方式,通过商品分类查找商品是最常用的,在这种方式下用例的示意图如图3.4。此外,通过一个商品的“相关商品”或收藏夹直接查询商品信息也占了一定的比重。24基于WindowsAzure平台的在线商城系统改造与实现 查询商品查询所有分类的列表通过分类查询商品信息查询分类下商品列表查询指定商品的信息图3.4通过分类查询商品信息的用例图 在商品信息查询功能中,涉及数据量最大的功能点是查询指定商品的信息。在本次改造中“查询指定商品的信息”功能被重新设计和实现,于是作者在开始改造前整理了关于该用例的需求。“查询指定商品的信息”功能在前台页面导航到商品展示画面时调用,该功能需要返回的是界面上所需全部信息的视图。相比于改造前的系统使用多次请求获取不同类型的数据,为了降低请求的数量提升性能,改造后的系统中将在一次请求中返回所有信息,这些信息如图3.5所示。图3.5“查询指定商品的信息”的返回数据组成示意除“查询指定商品的信息”之外,因为平台兼容性问题而进行重写设计和实现的诸如 “静态资源服务器”等功能,因为需求相对简单,就不在本章节做详细论述。3.3非功能性需求分析通过与运营团队的多次沟通,本次向云计算平台迁移的非功能性需求如下集中第三章系统需求分析25在监控、配置和性能扩展上。方便监控运营团队可以对所有服务器的运行状况进行监控。尤其是在刚开始运行的阶段,完整的监控数据有助于运营团队选定性能伸缩模式。所以,运营团队需要监控的数据有性能计数器数据(如IIS工作进程的CPU使用率、IISWorkSetIIS 工作进程的使用量和服务器的网络流量等)和现有程序所记录的日志。为了便于分析,各个服务器上收集的数据需要有一个统一的访问方式。因为在云计算平台中,参与计算的服务器实例数量激增,传统的做法中每台服务器向各自的文件夹中写入日志文件会让日志文件的收集工作变得异常繁琐。所以,运营团队要求将监控数据集中存放,所有的服务器实例的日志可以通过一个操作直接获取。简化配置运营团队可以简便的对云计算平台上所有的Web应用程序进行配置值的更新。改造前系统的配置值被存放在各自站点的Web.config文件中,迁移到云计算平台 后,对多个服务器上的配置文件分别进行更新工作量大而且容易出错,所以,运营团队要求改造后的系统提供一个统一的配置维护方式,一次修改就可以将新的配置应用在所有站点中。性能可扩展因为没有性能基线可以参考,对性能的要求暂时定位于系统可以根据计算资源的设定基本成比例伸缩,随着计算资源的提升(比如CPU数量和内存容量的增长),服务的性能

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭