




已阅读5页,还剩66页未读, 继续免费阅读
(计算机应用技术专业论文)基于net平台的可伸缩性研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 随着经济社会的飞速发展,企业规模的不断壮大,企业对满足业务需求的系 统也提出了更高的要求。这种系统应该能迅速的上扩以适应不断增长的业务需求 和用户数量的急剧增加,又能在系统利用不足时,为节约成本而能迅速下扩。这 正是可伸缩性系统所具有的特点。客户端应用程序有多种类型,从传统的基于 w i n 3 2 的w i n d o w s 应用程序到基于h t m l 的w e b 应用程序,到移动设备。这种趋 势使得信息提供者之间的竞争越来越激烈,由此,应用程序的体系结构和编码设 计,都需要考虑到可伸缩性。n e t 的出现方便和加快了应用系统的创建,但基 于n e t 平台的可伸缩性却关注甚少。本文将讨论基于n e t 平台的可伸缩性技术 以及如何创建一个基于n e t 平台的可伸缩性系统。本文主要就以下几个方面进 行探讨: ( 1 ) 介绍可伸缩性的具体含义和相关概念,以说明为什么可伸缩性对企业 来说非常重要。 ( 2 ) 介绍和可伸缩性密切相关的集群技术,以及它是如何改善可伸缩性的。 重点就集群技术中的负载平衡问题进行了探讨。接着讲述了在设计可伸缩性系统 中,应该遵循哪些原则。最后简单说明了系统的可伸缩性测量方法。 ( 3 ) 详细分析对比了当前的两个主流的开发平台的可伸缩性架构,以及在 开发过程中该如何选择。 ( 4 ) 重点研究如何基于n e t 平台构建一个可伸缩的系统。在数据库的设计 上,采用规范化理论和存储过程来提高可伸缩性。确立了一个坚固的数据库设计 之后,那么在数据访问层上,将利用a d o n e t 的功能,通过一个专用的s q ls e r v e r 访问库和其它一些功能,来提高性能,以改善可伸缩性;在业务逻辑层中将通过 w e bs e r v i c e 和消息队列来加强可伸缩性;在用户表示层中主要利用a s p n e t 技 术中的缓存技术进一步的提高系统的可伸缩性的。 ( 5 ) 通过一个企业级的办公自动化系统的开发和部署,以说明如何在一个 具体的应用中,基于n e t 平台,去构建一个可伸缩的系统。给出了总体规划和 详细设计,并实现之。由于环境的限制,本文将对其可伸缩性进行简单的测量和 评价。 ( 6 ) 在本文最后进行了简单的总结和展望,同时给出了本文中尚待解决和 研究的一些问题。 关键字:可伸缩性,上扩,外扩,集群 a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to ft h ee c o n o m i cs o c i e t ya n dt h ec o n t i n u e de x p a n do f e n t e r p r i s e s ,t h e ya r er i g h tt or e s p o n dt ot h er e q u e s tt h a tt h es y s t e mo ft h eb u s i n e s s d e m a n dh a sb e e np r o p o s e dh i g h e rt o o s u c has y s t e ms h o u l dn o to n l yb ea b l et ok e e p p a c ew i t ht h er a p i de x p a n s i o no ft h eg r o w i n gb u s i n e s sn e e d sa n dt h ed r a m a t i c i n c r e a s ei nt h en u m b e ro fu s e r s , b u ta l s ot oc u tc o s t sa n ds c a l ed o w nw h e nt h e i n a d e q u a t eu s a g eo ft h es y s t e m s t h i ss y s t e mi st h es c a l a b l es y s t e m sc h a r a c t e r i s t i c s t h ea r r i v a lo ft h e n e tf a c i l i t a t ea n ds p e e du pt h ed e v e l o p m e n to fa p p l i c a t i o n s y s t e m s ,b u tl i t t l ea t t e n t i o n so nt h es c a l a b f l i t yo f n e tp l a t f o r m t h i sp a p e rw i l l d i s c u s s n e tp l a t f o r m ss e a l a b i l i t ya n dh o wt oc r e a t eas c a l a b l es y s t e mo n n e t p l a t f o r m t h ep a p e r w i l ld i s c u s so nt h ef o l l o w i n ga s p e c t s : ( 1 ) i n t r o d u c e st h es p e c i f i cm e a n i n go fs c a l a b i l l t ya n d t h er e l e v a n tc o n c e p tt oi t , a n dt oe x p l a i nw h yt h es c a l a b i l i t yi sv e r yi m p o r t a n tt oe n t e r p r i s e s ( 2 ) i n t r o d u c t i o nt h ec l u s t e r st e c h n o l o g y , a n di ti sh o wt oi m p r o v et h es c a l a b i l i t y m e a n w h i l e ,l o a db a l a n c i n gt e c h n o l o g yi s s u e si nc l u s t e rt e c h n o l o g yi sd i s c u s s e d t h e n i l l u s t r a t e dw h a tp r i n c i p l e sw es h o u l df o l l o w e di nt h ep r o c e s so fd e s i g n i n gs c a l a b i l i t y s y s t e m s f i n a l l y , g i v es o m es i m p l ee x p l a n a t i o no f t h es y s t e ms c a l a b i l i t ym e a s u r e m e n t m e t h o d ( 3 ) d e t a i l e da n a l y s i sa n dc o m p a r i s o na r eg i v e n0 1 1t w oc u r r e n tm a i n s t r e a m d e v e l o p m e n t sp l a t f o r m ,a n dt h es c a l a b i l i t yo ft h e i rs t r u c t u r e sa n dh o w t oc h o o s et h e m i nt h ed e v e l o p m e n tp r o c e s si sg i v e na l s o ( 4 ) f o c u s i n go nt h es t u d yo fh o wt ob u i l das c a l a b l es y s t e mb a s e do n n e t p l a t f o r m i nt h ed a t a b a s ed e s i g n ,u s i n gas t a n d a r d i z e dt h e o r ya n ds t o r a g ep r o c e s st o i m p r o v es c a l a b i l l t y a f t e re s t a b l i s h i n gas o l i dd a t a b a s e , t h ed a t aa c c e s sl a y e rw i l l u s ea d o n - e t 9a n do t h e rf u n c t i o n st o i m p r o v ep e r f o r m a n c e ,a n d t o i m p r o v e s c a l a b i l i t y ;i nb u s i n e s sl a y e rw i l lu s ew e bs e r v i c ea n dm e s s a g eq u e u et oe n h a n c e s c a l a b i l i t y ;i nu il a y e r ,m a i n l yu s ea s e n e tc a c h i n gt e c h n o l o g yt of u r t h e re n h a n c e t h es y s t e m ss c a l a b i l i t y ( 5 ) t h r o u g ht h ed e v e l o p m e n ta n dd e p l o y m e n to fa ne n t e r p r i s e - l e v e l o f f i c e a u t o m a t i o ns y s t e m ,t os p e c i f i ci l l u s t r a t eh o wt ob u i l das c a l a b l es y s t e mo n n e t p l a t f o r m t h e s ei n c l u d et h eo v e r a l lp l a n n i n g , d e t a i l e dd e s i g na n ds i m p l e t e s t ( 6 ) f i n a l l y , c a r r i e do ns o m es i m p l es u m m a r i z e sa n dp r o s p e c ti nt h i sp a p e r , a n d g i v e ss o m ep r o b l e m sw h i c h s h o u l ds t u d yt ob es o l v e di nt h ef u t u r e k e yw o r d s :s c a l a b i l i t y , s c a l e u p ,s c a l e o u t ,c l u s t e r 独创性声明 本人声明,所呈交的论文是我个人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果, 也不包含为获得武汉理工大学或其它教育机构的学位或证书而使 用过的材料。与我一周工作的同志对本研究所做的任何贡献均已 在论文中作了明确的说明并表示了谢意。 研究生签名:监日期三剑 关于论文使用授权的说明 本人完全了解武汉理工大学有关保留、使用学位论文盼规定, 即:学校有权保留送交论文的复印件,允许论文被查阅和借阅: 学校可以公布论文的全部内容,可以采用影印、缩印或其他复制 手段保存论文。 ( 保密的论文在解密后应遵守此规定) 研究生签名:监导师签名:j 姆日期j 趔_ l 赵 武汉理工大学硕士学位论文 1 1 课题研究背景 第1 章引言 在当今飞速发展的经济环境中,企业总是希望开发人员能够创建出符合业务 规则需要的健壮的系统。另外,处于不断发展壮大的企业,要不断的适应用户需 求的变化和用户数量的增长。为此他们要求系统能够快速扩展,以满足用户计划 内和计划外的增长需求。这也意味着应用程序将有更多的用户,或者说虽然用户 数量不变,但对应用程序的功能要求越来越高。 几乎所有业务类型的数据都在以爆炸式的方式增长,这些数据必须被储存、 处理并理解。与此同时,将这些数据转化为信息可接受的时间越变越短。企业需 要一种方法能够以一种透明的、不致引起系统混乱的方式对持续增长的用户管理 做出规划。只有那些能够根据不断增长的需求调整他们的硬件和应用的企业才能 很好的应对数据冲击。相反的,可伸缩性的另一个方面,也是在当今经济领域特 别明显的问题,是建立的系统要能够下扩以应对使用率减少的要求。总之,对于 一个可伸缩的系统来说,它能被扩展以承受更大的用户负载和改变了的用户行为 而不用修改它现有的体系结构和设计,或至少保证这些修改带来尽可能小的影 响。如果预期的系统使用率突然翻了一番,或系统承受着相当重的峰值负载,那 么一个可伸缩系统将有能力应对这些挑战而不会带来昂贵的花费,或更糟糕的重 新编码。如果底层代码设计得当,那么伸缩一个系统将不会要求您做多少工作。 相反,如果应用程序的底层代码的设计没考虑使用率的增长或变化的性质,要想 应对增长了的要求或峰值使用率的情况是不可能的“1 。 1 2 国内外研究现状 当前主流的开发平台有j 2 e e ( j a v a 2e n t e r p r i s ee d i t i o n ) 和n e t ,它们都 具有很好的可伸缩性。 j 2 e e 使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用 组件根据它们所在的层分布在不同的机器上。基于j 2 e e 平台的应用程序可被部 署到各种操作系统上和高端u n i x 或大型机系统,这种系统单机可支持的处理器 数目是n t 服务器所不能比的。同时j 2 e e 领域的供应商也提供了更为广泛的负载 平衡策略,能消除系统中的瓶颈,允许多台服务器集成部署,这种部署可达数千 个处理器,实现可高度伸缩的系统,满足未来商业应用的需要。1 。 武汉理工大学硕士学位论文 n e t 平台能使开发人员通过把更多的管道抽象到f r a m e w o r k 中,从而设计 出更健壮的系统。n e t 引入了一个统一的类型系统( t y p es y s t e m ) 、版本更新 ( v e r s i o n i n g ) 、并列部署( s i d e b y - s i d ed e v e l o p m e n t ) 、r e m o t i n g 和集成的 w e b 服务支持。从全局着眼,n e t 在设计和生产力的节省方面给开发人员更多的 自由,允许开发人员把精力集中在建立可伸缩性更强的系统上。从技术上来说, 这些进步对于创建可伸缩系统是至关重要的“1 。由于n e t 技术出现比较晚,而且 对细节问题进行了很多的封装,故对其可伸缩性的讨论并不是很多,通常都是基 于j a v a 的。本文将主要针对n e t 平台进行可伸缩性的研究。 1 3 课题研究的目的与意义 作为一个企业级应用系统的开发人员,如果说由于设计的系统不具有很好的 可伸缩性,随着用户的数量增加或企业业务需求的变化,导致系统无法正常运行, 或运行速度增长缓慢,产生瓶颈,此时就有可能要重新设计或编码。这是费时费 力且代价昂贵的事情。但是反过来,如果能在设计阶段就开始考虑系统的可伸缩 性,如何去应对未来的业务需求变化和预期的增长,这将是一件非常有意义的事 情,因为它即可以被迅速的上扩以满足更多的用户负载,又能在系统不能充分利 用时而下扩,以节约成本。同时还可以根据不断变化的业务需求,方便的修改系 统。 现在,开发人员经常面临的问题是,如何进行设计,才能使我们的系统具有 良好的可伸缩性。要开发可伸缩性系统必须从体系结构设计、合理划分逻辑层、 各层内部设计、系统资源占用等多个角度进行考虑。当今社会,随着对应用程序 的可伸缩性要求越来越高,对这个问题的研究也是非常有实用价值和学术价值 的。 1 4 课题研究的主要内容 本课题将研究n e t 中和可伸缩性有关的技术问题,并基于n e t 平台,利用 研究成果,构建一个高度可伸缩的办公自动化系统迅达办公自动化系统。在 课题中,将研究以下内容: 国内外可伸缩性软件架构的研究 提高可伸缩性的相关方法,影响可伸缩性软件设计的因素 研究j 2 e e 和n e t 可伸缩性软件框架,并进行深入比较 如何使用a d o n e t 和a s p n e t 技术提高可伸缩性 基于n e t 平台创建可伸缩的数据库、中间层和表示层的具体要求和方法 2 武汉理工大学硕士学位论文 利用强大的面向对象技术设计可伸缩和可重用的代码 同时,本文将解决以下几个关键问题: 利用n e t 技术如何具体的创建一个可伸缩的数据层、可伸缩的中间层和 可伸缩的表示层 设计中间层组件,以获得最大的可伸缩能力,使用设计模式,编写可复 用组件 3 武汉理工大学硕士学位论文 第2 章可伸缩性及相关技术 2 1 可伸缩性介绍 可伸缩性可以被定义为随着负载的不断增加,某项技术或者技术中的某些方 面能够继续高效运作的潜力”。 可伸缩性致力于两个方面:增容和扩容。从硬件角度考虑,增容意味着在单 个服务器上增加处理器、硬盘驱动器和i o 设备等的数量。另一方面,扩容意味 着增加更多的服务器,而不是更大的服务器。当扩容时,单个服务器的处理速度 和容量不影响整个网络的处理能力。仅靠安装更多更快的处理器和i o 设备,可 以使性能有所改善,但是不能成功的做到性能的线性增长,因为这与软件还有一 定的关系。 应用程序可伸缩性要求两个不同的域:软件和硬件之间保持平衡的合作关 系。如果仅在一个域中大大提高可伸缩性,这些努力会因在另一个域中所犯的错 误而打折扣。例如,对于被设计为仅在单机上运行的w e b 应用程序,生成负载 平衡的w e b 服务器网络场并不会使其受益。同样,设计一个高度可伸缩的应用 程序,然后将其部署到与低带宽网络连接的计算机,这样做并不会在网络通信量 饱和时很好地处理大量负载。要做到真正的可伸缩必须做到采用可伸缩的硬件和 支持该硬件特制的软件的平衡搭配选择嘲。 所以。设计过程中必须包括可伸缩性,因为可伸缩性不是一个可以在以后就 能添加的孤立功能。同其它应用程序功能一样,在前期设计和早期编码阶段所采 用的决策和方法将在很大程度上决定该应用程序的可伸缩性。 2 2 集群技术 集群是一种并行或分布处理系统,由很多连接在一起的独立计算机组成像一 个单独集成的计算资源一样协同工作啪。也就是把许多计算机组织起来,当作一 个整体,向用户提供一组网络资源。对于集群中的每个计算机,我们称之为集群 的节点( n o d e ) 。显然,对于用户来说,他们从来不会意识到集群系统底层的节点, 所以仅仅只需理解为集群是一个系统。 集群技术主要是解决两个问题一一有效性和可伸缩性。 如果有一个w e b 站点,它运行于一个单独的服务器上,一旦受到黑客攻击或 服务器异常崩溃,那么整个w e b 站点就会停止工作,这将给企业带来损失,给用 4 武汉理工大学硕士学位论文 户带来不便。采用群集技术,将w e b 站点分布在多个服务器上,就可以避免这种 问题的产生。另外,无论性能有多高的服务器,它所能处理的并发用户数也是有 限的,当超过了服务器所能承受的最大负载时,可以想象将会出现什么情况。面 对这种情况,提供商通常会添加更多的c p u 或者更多的计算机,来形成计算机集 群。 2 2 1 扩展类型 通常为了处理更多的用户和请求、更多的数据,需要扩展系统平台。比如说, 一个系统原来只需支持2 0 0 个并发用户,现在由于市场的扩大,需要支持2 0 0 0 个并发用户。又比如应用程序支持一个呼叫中心,并发用户的数量可能经常保持 在1 0 0 ,但是当工作者们被要求在每一次上线时回答更多的客户请求,那么每秒 的请求数可能增加。所有这些都将增大系统需要支持的负载,此时就要求系统是 具有可伸缩性的。 要获得一个可伸缩性的可靠平台,可以采取多种策略,比如增加系统的底层 速度,给它更多的处理资源。总的来说,这些策略分为两类;上扩( s c a l eu p ) 和外扩( s c a l eo u t ) 。这两个策略并不是相互排斥的,相反,常常需要结合二者, 综合考虑以获得最大的收益 2 2 1 1 上扩 上扩是实现可伸缩性的常用术语。它是指扩展现有的服务器以获得更大的吞 吐量,从而可以为更多的并发用户做好准备。上扩本质上是向一个服务器添加更 多的硬件,或者性能更好的硬件。比如说添加更多内存、添加更多或更快的处理 器。当然也可以将应用程序迁移到功能更强大的单个计算机。上扩可以使系统在 不需要改变底层源代码的情况下就可以增加容量,实现可伸缩性,见图2 - 1 图2 1 上扩“” 5 武汉理工大学硕士学位论文 一旦企业选择了上扩方案,此时就需要确定所要上扩的组件。在此过程中, 需要考虑当前要求以及可预见的未来的规划需要。通常将下列组件作为上扩的候 选组件: 处理器:如果应用程序主要参与c p u 绑定作业或者其服务需要更长的处理器 时间,那么就应该选择采用增加处理器。在这里,要么选择升级到更新更快的处 理器,要么增加处理器的个数,但是二者都有局限性。首先要依赖于主板所能支 持的处理器的最高频率,而且最好的情况是也只能升级为市场上最快的处理器; 再次,如果服务器有能力处理8 个处理器,但它只安装了6 个处理器,那么可以 很容易地再添加2 个处理器。然而,如果该服务器只有8 个处理器的能力,而且 已经安装了8 个,那么就没有什么办法了。通过添加处理器进行上扩的方法,如 果底层操作系统不支持它,则不是在任何级别上都可行。处理器上扩的规模取决 于所采用的操作系统。表2 - 1 概述了w i n d o w s2 0 0 0s e r v e r 和w i n d o w ss e r v e r 2 0 0 3 系列的c p u 扩展能力。n e tf r a m e w o r k 使得利用这些外加处理器相当简单。 表2 1w i n d o w ss e r v e r 系列的c p u 扩展能力 服务器版本最大c p u w i n d o w s2 0 0 0s e r v e r4 w i n d o w s2 0 0 0 a d v a n c e d 8 w i n d o w s2 0 0 0d a t a c e n t e r3 2 w i n d o w ss e r v e r2 0 0 3w 曲2 w i n d o w ss e r v e r2 0 0 3s t a n d a r d4 w i n d o w ss e r v e r2 0 0 3e n t e r p r i s e 8 w i n d o w ss e r v e r2 0 0 3e n t e r p r i s e6 4 位8 w i n d o w ss e r v e r2 0 0 3d a t a c e n t e r 6 4 w 铀d o w ss e r v e r2 0 0 3d a t a c e n t e r6 4 位6 4 内存:有时为加速一个数据库服务器,添加更多的内存就能提供极大的改进。 大多数3 2 位的操作系统可寻址的内存有4 g b ( 如w i n d o w s2 0 0 0a d v a n c e d s e r v e r ) 。如果使用“3 g b ”交换机,那么s q ls e r v e r 最多可运用3g b 的内存, 但无法使用超过4g b 的物理内存。考虑所添加的内存类型也同样重要。直接增 加缓存或允许系统最大化s q ls e r v e r 缓存命中率的r a m ,可能使某些系统获益。 另外,有足够的磁盘空间让s o ls e r v e r 执行交换和分页操作也很重要。这种情 况可认为是一项存储要求,但在考虑系统的内存时,这是一个重要的因素“1 。表 2 2 概述了w i n d o w s2 0 0 0s e r v e r 和w i n d o w ss e r v e r2 0 0 3 系列的r a m 扩展能力。 6 武汉理工大学硕士学位论文 表2 - 2w i n d o w ss e r v e r 系列的r a m 扩展能力 服务器版本最大r a m w i n d o w s2 0 0 0s e r v e r4 g b w i n d o w s2 0 0 0a d v a n c e d 8 g b w 缸d o w s2 0 0 0d a r a c e n t e r6 4 g b w i n d o w ss e r v e r2 0 0 3w 曲2 g b w i n d o w ss e r v e r2 0 0 3s t a n d a r d4 g b w i n d o w ss e r v e r2 0 0 3e n t e r p r i s e3 2 g b w i n d o w ss e r v e r2 0 0 3e n t e r p r i s e6 4 位6 4 g b w i n d o w ss e r v e r2 0 0 3d a t a c e n t e r 6 4 g b w i n d o w ss e r v e r2 0 0 3d a t a c e n t e r6 4 位5 1 2 g b 升级计算机中的硬件组件只是将处理容量限制从计算机的一个部分移动到 另一个部分。例如,一台c p u 使用率为1 0 0 9 6 的计算机只能通过添加另一个c p u 来增加容量。然而,限制可以从c p u 转移到系统内存。添加c p u 并不会以线性 方式增加性能。相反,随着每个附加处理器的添加,性能收益曲线将逐渐降低。 对于具有对称多处理器配置的计算机,每个附加的处理器都会招致系统开销。因 此,具有四个处理器的计算机与单处理器的计算机相比,并不会在容量上实现 4 0 0 的收益。将每个硬件组件升级到它的最大容量后,最终将达到计算机处理 能力的极限。这时,上扩的下一步是移动到另一台计算机,上扩还存在其他潜在 问题。使用单个计算机支持应用程序将引起单点失败,这将大大降低系统的容错 能力。虽然有方法可以在单个计算机系统中实现冗余,但这样做的成本很高“”。 2 2 1 2 外扩 在很多情况下,仅仅依靠上扩是不够的。扩展的另一种方法是外扩。外扩是 把工作负载分配给多个服务器,它利用了使用商用p c 硬件在多个服务器中分配 处理负载的优点。尽管外扩的实现需要使用多台计算机,但计算机集合本质上是 作为单个计算机运行的。通过使若干台计算机专门执行常见的任务,增加了应用 程序容错。但是,从管理的角度来看,外扩的方法使得计算机的节点数目增多, 从而增加了管理的难度。见图2 2 。 7 武汉理工大学硕士学位论文 图2 - 2 外扩n 帕 对于w e b 集群,外扩比上扩更有用。由于对健壮的w e b 站点的需求,外扩产 生了一个新的众所周知的名词一一n 层体系结构。外扩是n 层体系结构的核心。 一个n 层的应用程序就是一个可以扩展到任意层数的系统,并且可以将处理扩展 到多个服务器进行。例如,添加一个实用程序层以便处理服务组件,添加一个应 用层以供驻留业务对象等等。虽然在理论上,对于n 层体系结构没有任何限制, 但实际上,由于底层结构的复杂性和有关支持的成本,还是有限制的。表2 - 3 概述了w i n d o w ss e r v e r 系列的外扩能力。 表2 - 3w i n d o w ss e r v e r 系列的外扩能力 版本n l b 节点 集群节点集群支持 w i n d o w s2 0 0 0s e w e r3 2n l b w i n d o w s2 0 ( ) o a d v a n c e d3 22n l e 明s c s w i n d o w s2 0 0 0d a t a c e n t e r3 2 4n l b m s c s w i n d o w ss e r v e r2 0 0 3w e b3 2 n l b w i n d o w ss e r v e r2 0 0 3s t a n d a r d3 2n l b w i n d o w ss e r v e r2 0 0 3e n t e r p r i s e3 28n l b m s c s h n d o w ss e r v e r2 0 0 3d a t a c e n t e r3 28n l b m s c s 从上图可知,如果采用w i n d o w s 平台,应该在设计阶段就考虑所使用的 w i n d o w s 版本。而且必须在设计阶段就估计系统的可能负载以及过一段时间后, 可能会增加的负载程度。这样就可以节约许多昂贵的版本许可费。比如说,要实 现一个w e b 集群,对于w i n d o w ss e r v e r2 0 0 3s t a n d a r de d i t i o n 和其w e be d i t i o n , 8 武汉理工大学硕士学位论文 就应该选择后者,除非需要s t a n d a r de d i t i o n 中的某些功能。当然,除此之外, 在设计阶段还应该考虑一下可靠性以及有效性的一些相关问题“”。 通常,可以采用跨多层和跨单层来实现外扩。而且常常将二者结合起来,因 为它们都是获得一个高水平的可伸缩性所需要的。 跨多层外扩“1 跨多层外扩的概念是添加更多的服务器以满足特定的需求。比如不是由w e b 服务器容纳a s p n e t 页面和业务对象,而是添加一个应用程序服务器来驻留业务 对象。这允许w e b 层和应用层独立扩展。见图2 3 。 图2 - 3 跨多层外扩 跨多层外扩后,不是由前端逻辑向一个业务对象进行本地调用,而是必须跨 网络到应用程序服务器。显然,跨多层的外扩更加依赖网络。不过,从可伸缩性 考虑,添加更多的层可以提供一个把工作负载分段的极好方法。跨多层的外扩还 允许对规划容量增长有更细微的控制。如果应用层需要更多的资源,那么所有的 努力可以集中在应用层。 外扩单层n , 跨多层的外扩后,可能会出现当用户群增长时,具体某个层的负担会加重。 比如在应用服务器和数据库服务器仍然有富余容量的时候,w e b 服务器可能已经 开始感觉到压力了。此时,就可以选择外扩单层的方法。见图2 - - 4 ,通过添加 更多的w e b 服务器来缓解压力。 9 武汉理工大学硕士学位论文 图2 - 4 跨单层外扩 w i n d o w s 加强了对内置外扩的支持,且通过a p p l i c a t i o nc e n t e r2 0 0 0 进一 步扩充了在软件层方面外扩的能力。在n e t 中进一步带动了外扩,尤其是在w e b 层。 2 2 。2 负载平衡 负载平衡使站点可以在服务器群集中进行外扩,使很可以很容易通过添加更 多的服务器来处理请求,增加容量。它还提供了冗余。使站点具有故障转移能力, 这样,即使一个或多个服务器失败,该站点仍能供用户使用。此时,针对不同的 情况,就需要使用各种负载平衡技术来外扩平台。 从广义上讲,负载均衡技术分为两种,即静态负载均衡和动态负载均衡0 1 。 静态负载均衡是指事先定义好负载分配策略的负载均衡技术,在系统运行期间分 配策略不会发生变化。静态负载均衡的好处在于实簏的简单性,但缺点是不够灵 活,负载均衡能力有限。动态负载均衡是指通过一定的措施实时的掌握各台服务 器的负载流量状况,然后随时调整负载分配方案的负载均衡技术。动态负载均衡 技术在实施上有一定的难度,但是可以获得更好的负载均衡效果。 1 0 武汉理工大学硕士学位论文 从所处的网络层次和位置上来讲,处理负载均衡的技术主要有以下几种: 1 基于第四层交换的负载均衡旧 基于第四层交换的负载均衡是指具有第四层交换功能的局域网交换机所提 供的负载均衡机制。在第四层交换机中,可以为w e b 服务器群组设立一个虚拟 i p 地址( v i p ) ,并且在d n s 服务器中存储这个v i p ,然后客户端可以通过v i p 对 w e b 服务器组进行访问,而不是直接访问具有独立i p 地址的各台w e b 服务器。 当目标地址为v i p 的数据报到达时,第四层交换机按照一定的策略选择某台w e b 服务器,然后按照i p 地址和t c p 端口进行虚拟连接的交换,直接将数据报发送 到所选中w e b 服务器的相应端口,也即将外部的初始连接请求映射到内部的多个 w e b 服务器,随后对这些己经建立的虚拟连接进行交换。因此,具备第四层交换 功能的局域网交换机就类似于一个负载均衡器,由于第四层交换功能是通过硬件 完成的,所以交换速度非常快,但这种基于硬件的负载均衡机制灵活性比较差 2 网络负载平衡 网络负载平衡( n l b ) 是一项设计用以在群集的不同节点间扩散t c p 和u d p 负 载的技术“”。网络负载平衡最多可在单一群集中支持3 2 个节点,同时一起响应 i p 请求,并可以很容易地添加节点,而不影响系统的其它部分。比如。可以把 w e b 客户请求分布在一个i i s ( i n t e r n e ti n f o r m a t i o ns e r v i c e s ) 服务器的集群 中,这样做可以让用户使用服务时,只需知道一个i p 地址,n l b 隐藏了后台的 所有服务器。如果一个服务器处理客户请求时出错,另一个服务器就会取代它的 工作,而客户感觉不到,图2 5 说明了这个过程。网络负载平衡可以同基于t c p i p 的服务,比如:h t t p 、终端服务、代理、流媒体服务和虚拟专用网络,配合使用。 图2 - 5 一个i p 对应多台服务器 1 1 武汉理工大学硕士学位论文 应用于群集的网络负载平衡具有许多优点:在高可用性方面,自动检测服务 器故障,流量在1 0 秒内重新传送到可用的服务器。此外,如果应用程序采用重 试逻辑,在下一次建立连接时,将自动传送到可用的服务器;在性能方面,由于 负载分布于多台服务器,响应时间得到缩短;在可伸缩性方面,客户端请求在群 集的所有服务器上进行分布。 3 基于d n s 查询的负载均衡 基于d n s 查询的负载均衡是在基于d n s 的集群系统中所使用的负载均衡技 术。在d n s 服务器中同一个域名配置多个地址,查询此域名的客户端可以得到其 中的一个地址,因此可以使不同的客户访问不同的服务器,从而达到负载均衡的 目的。在d n s 服务器中,可以为多个不同的地址配置同一个名字,这个数据被发 送给其他名字服务器,而最终查询这个名字的客户机将在解析这个名字时随机使 用其中一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,因 此不同的客户访问的也就是不同地址的w e b 服务器。 2 3 设计原则 影响系统的可伸缩性因素有硬件优化、产品优化、代码优化、程序设计等等。 正如图2 - 6 可伸缩性金字塔图所显示的,速度更快的硬件、软件和优化调整只是 可伸缩性等式的一小部分。金字塔的底部是设计,它对可伸缩性的影响最大。沿 着金字塔向上,因素的重要性逐渐降低,影响可伸缩的能力也相应地减小。从图 中可以看出,与硬件相比,好的设计能够为应用程序带来较高的可伸缩性,能够 充分利用硬件资源,所以说设计阶段对开发可伸缩应用程序中十分重要。同时可 伸缩性设计不仅限于应用程序的任何特定的层或组件,应用程序结构设计者必须 从用户界面到数据存储区等各个角度考虑系统可伸缩性,经过这样设计的系统才 有较高的可伸缩能力u ,。 图2 - 6 可伸缩性金字塔 1 2 武汉理工大学硕士学位论文 在做系统的设计时,我们应遵循可伸缩性设计的五条戒律“”: 不等待 进程等待的时间不应超出必要的长度。每当某个进程在某个时间段内使用资 源时,另一个进程将无法在该时间段内使用该资源。可将进程分为两个单独的类 别:同步和异步。有时应用程序必须同步执行操作。某些操作可能需要等待某个 操作返回结果后才能继续执行,或者可能需要验证某个操作是否成功以确保原子 性。也就是说,与该操作关联的所有操作必须全部失败或成功,才能执行另一个 操作。然而。当应用程序被限制在此方式时,资源便成为了给可伸缩性带来负面 影响的争用源。实现可伸缩性的一个方法是以异步方式执行操作。以异步方式执 行操作时,长期运行的操作将排队等待以后由单独的进程完成。例如,某些电子 商务站点在结帐过程中执行信用卡验证。如果验证服务存在困难,则这可能成为 高访问量电子商务站点上的瓶颈。对于必须以物理方式提供产品以完成订单的电 子商务站点,该过程很适合用异步操作来完成。由于产品的所有权不是在在线交 易期间从卖方转移到买方,零售商可以脱机完成信用卡验证。然后,应用程序可 以在验证信用卡交易后向客户发送确认订单的电子邮件。 不争用资源 争用资源是所有可伸缩性问题的根本原因。不能满足需求的不充足的内存、 处理器周期、带宽或数据库连接将导致应用程序无法伸缩,这并没有什么可奇怪 的。不论如何设计,所有分布式应用程序都占有一定数量的资源。除了通过不等 待长期运行的操作来加速进程外,还可以采取其他措施避免资源争用。应安排从 充足到缺乏的资源使用。例如,如果执行的事务所涉及的资源缺乏并因此受争用 的限制,则应尽量晚些使用这些资源。这样一来,早先中止的事务将不会阻止或 延迟成功的进程使用这些资源。尽量晚些获取资源,然后尽早释放它们。一个进 程占用资源的时间越短,另一个进程就可以更快地获取资源。例如,应尽快将数 据库连接返回到池。如果可能,甚至不要使用争用的资源。有时,进程使用的事 务在执行功能时不需要资源。例如,需要事务的方法与不需要事务的方法应分开 放在不同的组件中,这样可避免在不需要时创建事务。 可交换性设计 可交换性设计通常是最容易被忽略的减少资源争用的方法之一。如果两个或 更多的操作可以任何顺序应用并且仍获得同样的结果,这样的操作就称为是可交 换的。通常,可在缺少事务的情况下执行的操作适合这样的倩况。例如,一个繁 忙的电子商务站点不断更新产品库存,可能会因产品的进出经历记录锁定争用。 为避免这种情况,每个库存增减可以成为单独的库存交易表中的一个记录。数据 库定期合计该表中的每种产品,然后用净库存变动更新产品记录。 1 3 武汉理工大学硕士学位论文 可互换性设计 互换性是机械和仪器制造中的重要生产原则与有效技术措施,是指在同一规 格的一批零件或部件中,任取其一,不需任何挑选或附加修配就能装在机器上, 达到规定的性能要求。如人们经常使用的自行车和手表的零件,生产中使用的各 种设备的零件等,当它们损坏以后,修理人员很快就可以用同样规格的零件换上, 恢复自行车、手表和设备的功能。在计算机中,可互换性是每当可以一般化资源 时,便使它成为了可互换的。相反,每当向资源添加详细状态时,就降低了它的 可互换性。资源池方案利用了可互换资源。c o m + 组件池和o d b c 连接池都是可 互换资源的资源池示例。例如,如果数据库连接对特定用户是唯一的,则无法为 其他用户汇集该连接。相反,要汇集的数据库连接应使用基于角色的安全性,后 者将连接与通用凭据集关联。要使连接池运行,连接字符串中的所有详细信息必 须相同。此外,应显式关闭数据库连接以确保它们尽快返回到池中。依赖自动断 开连接功能将连接返回到池中是不好的编程做法。可互换性概念支持参数将状态 移出组件。要求组件在方法调用间维护状态会破坏可互换性,并最终给可伸缩性 带来负面影响。相反,每个方法调用都应是独立的。当方法调用阃需要状态时将 状态存储在组件的外部。数据库是保存状态的最佳位置。当调用无状态组件的方 法时,该方法需要的任何状态既可以参数形式传递,也可从数据库中读取。在方 法调用的最后,通过将状态返回到方法调用方或将其写回数据库来保留状态。可 交换性超出了资源池的范围。w e b 应用程序的服务器端页缓存很有可能增加它的 可伸缩性。尽管个性化可以为用户提供独特的经历,但这样做的代价是创建的白 定义表示形式对其他用户是无法重用的。 分割资源和活动 最后应对资源和活动进行分割。通过最小化资源间和活动问的关系,可以将 因关系的一方占用的时间超过另一方而导致瓶颈的风险降至最低。相互依赖的两 个资源将共存亡。对活动进行分割可有助于减轻放置在高开销资源上的负载。例 如,使用s s l 将消耗大量的系统开销以提供安全连接。因而,明智的作法是仅 将s s l 用于真正需要高度安全性的页。此外,专用于该任务的w e b 服务器可处 理s s l 会话。事务为分割活动提供了另一个机会。通过将不需要事务的方法与 需要事务的方法分开,避免了将事务所需的系统开销不必要地强加给不需要事务 的方法。然而,分割并不总是一个好办法。分割可使系统更复杂。分割具有依赖 项的资源可向操作添加大量昂贵的系统开销。 除了要牢记以上几点外,这里还推荐创建可伸缩性应用程序的几个最佳做 法: 1 任何时候,都要充分考虑系统将来可能的增长和需求,尽管不可能完全精 武汉理工大学硕士学位论文 确的预计到将来,但总比不考虑的好。一个合理的想法是,一个应用程序应该可 以从小规模开始,然后迅速扩展以满足新的需求。这种想法所产生的设计必然会 涉及如何让应用程序满足将来的伸缩性要求。 2 使用群集技术。群集功能包括网络负载平衡( n l b ) 、群集服务和组件负载 平衡( e l b ) 。网络负载平衡作为前端群集,在由最多3 2 个服务器组成的群集中 分配传入的i p 通信量,很适合为电子商务w e b 站点提供增量可伸缩性。群集 服务作为后端群集,为数据库、消息处理、文件与打印服务等应用程序提供高度 可用性。c l b 在多个运行站点的业务逻辑的服务器之间分布工作负荷。它通过作 用于多层群集网络的中间层来补充n l b 和群集服务“”。 3 如果一个系统不能跨多个服务器分布,那么这个系统的可伸缩性限制是很 明显的。因为我们仅有的可伸缩性选择就是给服务器添加更多或更快的处理器或 内存等,然而这台服务器的硬件扩
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025国网冀北电力有限公司第二批高校毕业生录用人选的考前自测高频考点模拟试题及答案详解(必刷)
- 2025贵州省水利投资(集团)有限责任公司招聘84人考前自测高频考点模拟试题及一套答案详解
- 2025南华大学附属南华医院招聘62人(湖南)模拟试卷有答案详解
- 2025福建厦门市集美第二小学产假顶岗教师招聘1人模拟试卷有完整答案详解
- 2025年金华磐安县卫健事业单位公开招聘工作人员29人考前自测高频考点模拟试题及答案详解参考
- 脐静脉畸形免疫机制-洞察与解读
- 2025年福建省南安市龙泉中学招聘15人模拟试卷完整参考答案详解
- 无形资产数字识别技术-洞察与解读
- 2025年隆昌市公开招聘社区工作者的(49人)模拟试卷及完整答案详解
- 班组安全培训禁令课件
- 《研究生入学教育》课件
- 汽车行业中的环境保护与可持续发展
- 打起手鼓唱起歌混声合唱简谱
- 空调安装免责协议
- QGW 201175-2019-金风陆上风力发电机组 塔架通用防腐技术规范
- 老友记第一季字幕
- 输电线路风偏计算基本方法
- 骨科概论课件
- 第5章光电成像系统
- GB/T 9117-2010带颈承插焊钢制管法兰
- GB/T 5455-2014纺织品燃烧性能垂直方向损毁长度、阴燃和续燃时间的测定
评论
0/150
提交评论