基于冗余扩展技术的系统架构研究

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:cartman8148
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:构建可扩展的系统是计算机科学研究中的一个重要课题,也是工程实践中常常面临的一个问题。本文将结合某公司的经验,介绍在实际生产环境中如何设计一个可扩展的系统架构。
  关键词:负载均衡;缓存;CDN;冗余
  中图分类号:TP302.8
  随着网络应用的普及,用户需求的不断变化,如何构建一个可扩展的应用系统已经成为互联网公司发展过程中必须重视的首要问题。本文集中介绍了实现可扩展系统的几种方式,通过这些方式可以增加系统的水平扩展性和冗余性。
  1扩展性与冗余
  一个理想的系统架构是它的性能会随着硬件的增加而线性增长。在这样的系统中,如果原本有一台机器,当再增加一台机器时,系统性能会提升到原系统性能的两倍;如果原本有三台机器,当再增加一台机器时,系统性能会提升33%。系统的这种能力我们称之为水平扩展。如果系统中的部分机器出现故障,系统的性能会相应降低,但整个系统依然能够正常运行,系统的这种能力我们称之为冗余。水平扩展性和冗余都需要通过负载均衡来实现。
  2基于负载均衡技术的冗余扩展系统
  负载均衡就是将收到的请求按照一定的算法分发到不同的服务器上的过程。常见的负载均衡算法有随机法,轮询,带权重随机,比率,优先权,最少连接数,最快响应速度,观察方法,预测法,动态性能分配等方法[1]。负载不但需要在用户请求和服务器之间进行平衡,同时也需要在其他各个阶段进行平衡,这样才能更好的获得扩展性和冗余。通常来说一个大型系统需要在以下三个层面来实现负载均衡,如图1所示:(1)用户请求到前端web服务器;(2)前端web服务器到内部的后端平台层;(3)后端平台层到数据库;
  
  图1基于负载均衡技术可扩展系统架构
  在负载均衡的实现方式上,可以选择以下几种方式:
  2.1使用智能客户端。
  这种方式是在数据库客户端添加负载均衡的能力,实现过程是在客户端添加一个服务池,然后在客户端进行选择连接到哪个服务器。这种方式实现起来相对比较复杂。
  2.2硬件负载均衡
  这种方式直接在硬件层面完成请求的分配,可以获得很高的性能,但是成本也相对较高,一般是直接购买其他公司的硬件设备[2]。另外硬件负载均衡一般配置功能有限,所以只能适用于一些特定的环境。大公司一般会使用硬件负载均衡来处理最外端的请求,实现第一层负载均衡。然后在配合其他的方式在后端实现更加具体的请求分发。
  2.3软件负载均衡
  软件负载均衡是使用软件的方式来进行请求分发[2]。HAProxy就是一个很好的例子,HAProxy运行在每一个服务器结点上,它会自动检测每个结点是否可用,然后维护一个可用结点的服务池,并自动在这些结点之间进行请求分发。因为是软件实现,所以具备高度的可配置性。所以相对于硬件负载均衡和智能客户端来说,本文更推荐使用软件负载均衡。
  3基于缓存技术的冗余扩展系统
  缓存能够更好的使用系统中现有资源,减少对数据库的访问。缓存主要包括对结果的提前计算,提前生成索引,经常访问数据的存储。在实践中,使用缓存非常重要,设计一个好的缓存系统不仅提高了用户的访问质量,同时有效地降低了源服务器的负载压力,从而提升系统的整体性能[3]。
  在Web应用中,缓存主要分两种,一种是应用程序缓存,另一种是数据库缓存。应用程序级缓存一般是要在手动在代码中实现,当对某个数据进行请求时,先查看该数据是否在缓存中,如果存在,则直接从缓存中返回,如果不存在则从数据库中取出数据,并将该数据放入到缓存中,如图2所示。而数据库缓存一般是由数据库图2应用程序缓存可扩展系统架构提供的功能,数据库会根据DBA的配置,将数据库中的一部分数据缓存起来,当程序访问数据库时会直接从缓存中返回数据,图3数据库缓存可扩展系统架构如图3所示。
  
  图2
  
  图3
  4基于内容分发网络的冗余扩展系统
  内容分发网络(CDN)是一个典型的应对大规模静态数据的缓存方式[4,5],如图4所示。CDN结点将静态数据从服务器中分离出来,并且能够实现地理位置上的分布,用户从CDN上获取静态数据将会比从服务器上获取动态数据更加快速。在一个典型的CDN网络中,用户请求到来以后首先到CDN结点请求静态资源,如果该资源在本地CDN结点上存在,则直接返回,否则会到你的服务器上查找,然后将该资源缓存到本地CDN结点上。如果系统目前还不是很大,就不需要使用CDN,那么可以将你的静态数据分离出来,放到单独的服务器上,比如NGINX上,当系统需要使用CDN时,就可以直接将这部分数据放到CDN上。
  
  图4CDN系统架构
  参考文献:
  [1]罗拥军,李晓乐,孙如祥.负载均衡算法综述[J].科技情报开发与经济,2008,VOL.18No.23.
  [2]周莹莲,刘甫.服务器负载均衡技术研究[J].计算机与数字工程.2010,Vol.38No.4.
  [3]贺琛,陈肇雄,黄河燕.Web缓存技术综述[J].小型微型计算机系统,2004,Vol.125No.5.
  [4]张云飞,陈常嘉.内容传送网络(CDN)技术综述[J].信息通信网络技术委员会年会征文,2003年论文编号No.40.
  [5]佘丹娴.内容分发网络(CDN)的发展与应用[J].中山大学研究生学刊,2006,VOL.26No.1.
  
其他文献
随着社会的发展与进步,人们越来越关注自身的健康问题,因此医院作为一个医学权威机构,渐渐的受到人们的关注。但是传统模式的看医问药方式以及手工操作模式会导致病人需要花费很
随着经济全球化的趋势和信息技术的快速发展,信息技术在企业管理和发展中的作用越来越重要,企业要想在日益激烈的市场竞争中生存和发展,必须要加强市场信息的管理力度,完善企业的
计算机网络技术在人们生产和生活中扮演着重要角色,并逐渐成为不可分割的一部分,但是计算机网络服务器的安全隐患一直影响着人们正常工作和生活。本文从分析计算机网络服务器
摘 要:计算机网络需要各种相关技术的支持,为了网络更好的互联与更加稳定的工作,网络技术也在不断的发展与进步。本文从计算机网络技术的含义与发展阶段入手,简述了计算机网络技术的定义,列举了相关发展阶段。进一步的研究了网络技术面向应用的发展方向,同时从技术方面简析了网络技术的未来发展趋势。  关键词:网络技术;发展阶段;发展方向;发展趋势  中图分类号:TP391  1 计算机网络技术简介  计算机网络
长期的教学实践发现,课堂教学中存在着大量的无效和低效现象,具体表现为三维目标的割裂、教学内容的泛化、教学活动的外化、教学层次的低效和预设生成的冲突等几个方面,从以上几个方面论述了无效低效课堂存在的原因和对这些现象的深入思考。  无效低效教学实践实施新课程以来,课堂教学朝着素质教育的方向扎实推进,并取得了实质性的进展:课堂活了,学生爱学习了,教师的观念变了。但是,在教学实践中我们也发现,课堂教学中形
摘要:为了适应社会的发展,学校的信息化水平要求也越来越高,将.NET技术用于实现各类管理信息系统,不但可以提高学校的信息化水平,也可以提高学校管理工作效率。本文采用ASP技术设计实现了无锡旅游商贸高等职业技术学校的信息管理系统。  关键词:asp技术;教务信息系统  中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2013) 07-0000-02  1引言  信息技术发展
摘 要:计算机软件开发与数据库管理是促进计算机能够得以更好运用的前提和基础,在计算机软件开发的过程中,应该遵循相应的原则,做好开发的每一项工作,并采取相应的措施,确保计算机软件更好的发挥作用。而在数据库管理工作需要落实相应的技术措施,认识其中存在的问题,以提高管理水平,促进各项工作的顺利进行。  关键词:计算机软件;开发;数据库;管理  中图分类号:TP311  计算机软件开发的主要目的是解决人们
计算机技术和网络的迅速发展,使人们获取信息和投放信息的方式发生了翻天地覆的改变,开放式、全球化的互联网络使得当今社会进入了信息大爆炸的社会,如何将种类繁多数量巨大的数
大学生党员是学生群体的先进团体,他们政治立场坚定,综合素质较高,在青年团体中起到骨干模范作用.培养青年党员坚定的理想信念是高校党建工作的重点,是高校人才培养的重大议
摘要:高中语文教学中,阅读教学是十分重要的组成部分,对于学生语文阅读学习以及能力的培养具有积极的促进作用。分析其存在的问题并提出相应的对策,对于促进高中语文阅读教学有着重要的作用。  关键词:高中语文 阅读教学 问题 对策  当前,素质教育以及新课程改革不断推进,教学理念以及教学方法等也得到了良好的发展,教学的效果逐渐提升。新课标准指出语文阅读是高中阶段语文教学的重点内容,也是难点内容,提高学生的