APP下载

分布式和缓存技术在大并发量网站中的应用

2014-04-29米丽萍陈旭清

计算机时代 2014年1期
关键词:负载均衡吞吐量

米丽萍 陈旭清

摘 要: 对于高访问量网站,Web服务器端经常面临大并发量和海量数据流请求的问题,导致用户访问延时,利用负载均衡和内存缓存相结合技术可以解决这一问题。在服务器端采用集群下的负载均衡策略,将工作任务相对均衡地分配到各个节点上执行;采用内存缓存机制,通过优先读取内存中的缓存数据以减少对数据库的访问次数,进而减轻数据库负载。性能测试结果和用户体验反馈信息显示,该方法在大并发量访问时能极大地提高系统的吞吐量。

关键词: Web服务器; 大并发量; 海量数据流; 负载均衡; 内存缓存; 吞吐量

中图分类号:TP393.09 文献标志码:A 文章编号:1006-8228(2014)01-17-03

0 引言

为了响应中共中央提出的大规模培训干部和大幅度提高干部队伍素质的要求,我省组织部利用信息化手段,推出了干部在线学习的新型培训模式。该系统拥有注册用户20多万人,并发量达到1-2万人的规模,任何一个单点服务都不可能承受这种负载,如何解决服务器的高负载问题成为系统开发过程中首先要解决的问题。本系统硬件结构采用服务器集群[1]的方式,软件开发和部署采用分布式架构与集群下的缓存技术[2]相结合的方式,服务器间相互配合,极大提升了系统的吞吐量。

1 服务器集群的负载平衡

集群是一种并行或分布式处理的系统[3]。服务器集群是指将多台同构或异构服务器集中起来,对外提供透明的服务,协同完成特定的任务,从而获得很高的计算速度,减少单点故障数量,实现群集资源的高可用性并提高性能。

将系统负载分配到不同的服务器上处理,籍此提供大量用户并发访问服务,实现并行处理的方法,就是负载平衡( LB,Load Balancing)思想[4]。

Windows下网络负载平衡使得单个子网上的所有集群主机可以同时检测集群IP地址的传入网络通信。在每个集群主机上,网络负载平衡(NLB)作为Windows网络驱动程序运行,充当集群适配器驱动程序和TCP/IP堆栈间的过滤器,以便在主机间分配通信,网络负载平衡的操作对于TCP/IP网络堆栈是透明的,因此作为运行于TCP/IP之上的操作系统内核和服务器应用程序来说,它们根本不知道NLB的存在。

Windows网络负载平衡(NLB)的局限性有:一个集群中最多支持32台服务器;三层交换机必须为集群成员建立一个 VLAN,并且这个VLAN 必须配置为在二层模式下运行才能够与NLB一起使用,但并不是所有三层交换机都支持此项功能;发往NLB集群的所有数据包会在交换机上的所有端口上广播而造成数据“洪水”。

按照“干部在线”的业务需求,系统的服务器集群的硬件结构如图1所示,多个Web服务器组成一个Web服务集群,多个流媒体服务器组成流媒体服务集群,所有的课件资源均存放在NAS阵列上。

集群采用Windows 2008 R2的网络负载平衡技术(NLB)。每个Web服务器都是Windows 2008R2+IIS,每个流媒体服务器采用Windows 2008R2+Windows Media Service。Web服务器集群和流媒体服务器集群分别有一个虚拟的IP地址称为“集群IP地址”,集群IP地址是该集群中所有计算机共享的地址,且每台服务器还有一个惟一专用的IP地址。

2 分布式架构

.NET环境下的分层体系结构, 是指在原来的两层结构客户端与数据服务器端之间加入了一个组件层,也称为“中间层”,将应用程序的业务规则、数据访问、合法性校验等工作放到中间层进行处理。这样系统将具有显示操作层(客户端)、业务逻辑层(服务器后台代码)和数据层(数据库服务)等三个层次。三层架构如图2所示。

山西干部在线软件系统采用三层(3-layer)架构设计,该系统基于.net4.0用C#开发,软件解决方案如图3所示,具体说明如表1所示。

软件采用两层(2-ties)物理部署,如图4所示,即表示层(Web)和业务逻辑层(BLL)运行在Web服务器群中,数据层(DAL)和数据库运行在数据服务器群中(不能被外网访问),逻辑层(BLL)通过WCF技术跨物理边界(服务器)访问数据层(DAL),从而实现软件层面上的分布式计算。

GbzxDataService、DAL、DBUtility、IDAL、Model以及数据库系统SQL Server2005/2008部署在数据服务器上,完成数据的存取,对外公布WCF服务,逻辑层通过调用公布的WCF服务完成数据存取。Web、BLL、DALFactory、IDAL、Model部署在Web服务器上。按照业务需求,服务器组可以随时增删。

3 内存缓存(Memory Cache)技术

本系统有二十多万用户,按5%的上线率就有一万的并发量,这样无论是Web服务器还是数据库服务器,负荷都比较大。尤其是打开主页的时候,速度会很慢。

首先来分析一下主页数据构成,主页共分11个区域,这些区域的数据都从数据库中读取,经过大量计算(在线数据)获得。即打开主页时就要读取并计算这些数据,计算量很大,用时很长,尤其在大并发量的时候,打开主页的速度会很慢,用户体验很不好。但这些数据大多有个共同点:更新频率很低。因此采用内存缓存技术,可大大减轻服务器尤其是数据库服务器的负荷,极大地提升性能,前端用户体验也很好。

内存缓存(Memory Cache)是系统中的一块特殊的内存区域。其作用是在一个特定的时间段内保存数据,当指定的时限到期后,缓存会被释放,成为“过期”。因此,在缓存有效时,无论前端有多少用户,他们并发打开主页时,数据直接从缓存获取,根本不会读数据库。假设前端有1万用户,如果不采用缓存技术,他们打开主页需要访问11万次数据库,数据库服务器负担很重。内存缓存在指定的时限有效,当缓存过期后,用户就需要访问数据库,但访问的同时缓存被重新加载,在此之后的指定时限内其他用户就只会访问缓存而不需访问数据库。

缓存技术在极大提升性能的同时减轻了数据库的负担,但同时也有很大弊端,即牺牲了实时性。比如,緩存的时限是10分钟,在时限内,用户看到的是10分钟之前的情况,因为只有10分钟到期后,缓存才被刷新。为了提升数据的实时性,我们的系统采用了多缓存不同时限的策略。“在线数据”设置为5分钟,“导航栏”、“友情链接”和“其他栏目”等变化很小则缓存时限设为20分钟,其他栏目设置为10分钟。

4 性能分析

图5是单Web服务器在800多人并发访问的情况下的性能监视图,从图5可以看出,处理器已经超过80%,而剩余内存小于10%,硬盘的使用率达到了60%。

图6是900人在15台Web服务器并发的情况下的性能监视图,从图6可以看出处理器不超过10%,而内存使用率也在10%左右,硬盘的使用率在1%左右。

5 结束语

为了解决多用户并发所带来的问题,提高系统性能,我们在干部在线系统中采用了在服务器集群下的负载均衡策略,将工作任务相对均衡地分配到各个节点上执行;另外采用内存缓存机制,通过优先读取内存中的缓存数据以减少对数据库的访问次数,以此减轻数据库负载。软件采用三层架构来提高系统的吞吐量。目前该系统运行正常,用户体验良好。在服务器集群下的负载均衡策略和用内存缓存机制相结合的技术,对于并发量很大的同类型网站具有推广和示范作用。但服务器集群的投入是需要充足的资金保障的,而缓存技术在极大提升性能的同时牺牲了实时性,因此如何取得高性价比,还需要我们今后在实践中不断地摸索。

参考文献:

[1] 戴刚.服务器集群关键技术的研究与实现[D].国防科学技术大学图书

馆,2002.

[2] 叶萃,张松.一种终端服务器内存优化方法[J].微电子学与计算,

2007.3.

[3] 丛庆,沈夏炯.普招网报系统中服务器集群与缓存的研究[J].电脑知

识与技术,2009.12.

[4] 周莹莲,刘甫.服务器负载均衡技术研究[J].计算机与数字工程,

2010.4.

猜你喜欢

负载均衡吞吐量
2017年6月长三角地区主要港口吞吐量
2017年4月长三角地区主要港口吞吐量
2017年3月长三角地区主要港口吞吐量
2016年10月长三角地区主要港口吞吐量
2016年11月长三角地区主要港口吞吐量
Linux负载均衡集群技术在网络服务器中的应用
Oracle MAA在汽车行业电子政务平台中的应用
异构环境下改进的LATE调度算法
基于负载均衡的云资源调度策略研究
多站点同步更新系统的设计