⼤访问量⽹站架构设计
动态应⽤,是相对于⽹站静态内容⽽⾔,是指以c/、、Java、perl、等服务器端语⾔开发的⽹络应⽤软件,⽐如论坛、⽹络相册、交友、BLOG等常见应⽤。动态应⽤系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。
  ⼤型动态应⽤系统平台主要是针对于⼤流量、⾼并发⽹站建⽴的底层系统架构。⼤型⽹站的运⾏需要⼀个可靠、安全、可扩展、易维护的应⽤系统平台做为⽀撑,以保证⽹站应⽤的平稳运⾏。
  ⼤型动态应⽤系统⼜可分为⼏个⼦系统:
  l Web前端系统
  l 负载均衡系统
  l 数据库集系统
  l 缓存系统
  l 分布式系统
  l 分布式服务器管理系统
  l 代码分发系统
  Web前端系统
  结构图:
 为了达到不同应⽤的服务器共享、避免单点故障、集中管理、统⼀配置等⽬的,不以应⽤划分服务器,⽽是将所有服务器做统⼀使⽤,每台服务器都可以对多个应⽤提供服务,当某些应⽤访问量升⾼时,通过增加服务器节点达到整个的性能提⾼,同时使他应⽤也会受益。该Web前端系统基于Apache/Lighttpd/Eginx等的虚拟主机平台,提供PHP程序运⾏环境。服务器对开发⼈员是透明的,不需要开发⼈员介⼊服务器管理
  负载均衡系统
 负载均衡系统分为硬件和软件两种。硬件负载均衡效率⾼,但是价格贵,⽐如F5等。软件负载均衡系统价格较低或者免费,效率较硬件负载均衡系统低,不过对于流量⼀般或稍⼤些⽹站来讲也⾜够使⽤,⽐如lvs,nginx。⼤多数⽹站都是硬件、软件负载均衡系统并⽤。
  数据库集系统
  结构图:
由于Web前端采⽤了负载均衡集结构提⾼了服务的有效性和扩展性,因此数据库必须也是⾼可靠的才能保证整个服务体系的⾼可靠性,如何构建⼀个⾼可靠的、可以提供⼤规模并发处理的数据库体系?
  我们可以采⽤如上图所⽰的⽅案:
  1) 使⽤ MySQL 数据库,考虑到Web应⽤的读多写少的特点,我们主要对读数据库做了优化,提供专⽤的读数据库和写数据库,在应⽤程序中实现读操作和写操作分别访问不同的数据库。
  2) 使⽤ MySQL Replication 机制实现快速将主库(写库)的数据库复制到从库(读库)。⼀个主库对应多个从库,主库数据实时同步到从库。
  3) 写数据库有多台,每台都可以提供多个应⽤共同使⽤,这样可以解决写库的性能瓶颈问题和单点故障问题。
  4) 读数据库有多台,通过负载均衡设备实现负载均衡,从⽽达到读数据库的⾼性能、⾼可靠和⾼可扩展性。
  5) 数据库服务器和应⽤服务器分离。
  6) 从数据库使⽤BigIP做负载均衡。
  缓存系统
缓存分为⽂件缓存、内存缓存、数据库缓存。在⼤型Web应⽤中使⽤最多且效率最⾼的是内存缓存。最常⽤的内存缓存⼯具是Memcachd。使⽤正确的缓存系统可以达到实现以下⽬标:
  1、使⽤缓存系统可以提⾼访问效率,提⾼服务器吞吐能⼒,改善⽤户体验。
  2、减轻对及存储集服务器的访问压⼒
  3、Memcached服务器有多台,避免单点故障,提供⾼可靠性和可扩展性,提⾼性能。
  分布式存储系统
  结构图:
WEB系统平台中的存储需求有下⾯两个特点:
  1) 量很⼤,经常会达到单台服务器⽆法提供的规模,⽐如相册、视频等应⽤。因此需要专业的⼤规模存储系统。
  2) 负载均衡cluster中的每个节点都有可能访问任何⼀个数据对象,每个节点对数据的处理也能被其他节点共享,因此这些节点要操作的数据从逻辑上看只能是⼀个整体,不是各⾃独⽴的数据资源。
  因此⾼性能的分布式存储系统对于⼤型⽹站应⽤来说是⾮常重要的⼀环。(这个地⽅需要加⼊对某个存储系统的简单介绍。)
  分布式服务器管理系统
  结构图:
随着⽹站访问流量的不断增加,⼤多的都是以集的⽅式对外提供服务,随之集规模的扩⼤,原来基于单机的服务器管理模式已经不能够满⾜我们的需求,新的需求必须能够集中式的、分组的、批量的、⾃动化的对服务器进⾏管理,能够批量化的执⾏计划任务。
  在服务器管理系统软件中有⼀些⽐较优秀的软件,其中⽐较理想的⼀个是 Cfengine。它可以对服务器进⾏分组,不同的分组可以分别定制系统配置⽂件、计划任务等配置。它是基于C/S 结构的,所有的配置和管理脚本程序都保存在Cfengine Server上,⽽被管理的服务器运⾏着 Cfengine Client 程序,Cfengine Client通过SSL加密的连接定期的向服务器端发送请求以获取最新的配置⽂件和管理命令、脚本程序、补丁安装等任务。
  有了Cfengine 这种集中式的服务器管理⼯具,我们就可以⾼效的实现⼤规模的服务器集管理,被管理服务器和 Cfengine Server 可以分布在任何位置,只要⽹络可以连通就能实现快速⾃动化的管理。
  代码发布系统
  结构图:
随着⽹站访问流量的不断增加,⼤多的都是以集的⽅式对外提供服务,随之集规模的扩⼤,为了满⾜集环境下程序代码的批量分发和更新,我们还需要⼀个程序代码发布系统。
  这个发布系统可以帮我们实现下⾯的⽬标:
  1) ⽣产环境的以虚拟主机⽅式提供服务,不需要开发⼈员介⼊维护和直接操作,提供发布系统可以实现不需要登陆服务器就能把程序分发到⽬标服务器。
网站架构
  2) 我们要实现内部开发、内部测试、⽣产环境测试、⽣产环境发布的4个开发阶段的管理,发布系统可以介⼊各个阶段的代码发布。
  3) 我们需要实现源代码管理和版本控制,SVN可以实现该需求。
  这⾥⾯可以使⽤常⽤的⼯具Rsync,通过开发相应的脚本⼯具实现间代码同步分发。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。