一种用于处理论坛高并发数据请求的系统和方法与流程

文档序号:11960353阅读:872来源:国知局
一种用于处理论坛高并发数据请求的系统和方法与流程

本发明涉及计算机系统数据处理,具体是一种用于处理论坛高并发数据请求的系统和方法。



背景技术:

论坛也被大家称为BBS,是Internet上常见的用于信息服务的WEB系统,它为用户提供相互沟通的平台,每个用户都可发布信息或提出看法,是一种交互性强,内容丰富而及时的Internet电子信息服务系统,用户在BBS站点上可以获得各种信息服务、发布信息、进行讨论、聊天等等。

在网络发达的今天,各种论坛如同雨后春笋般出现,并迅速的发展壮大。论坛几乎涵盖了人们生活的各个方面,几乎每一个人都可以找到自己感兴趣或者需要了解的专题性论坛,而各类网站,综合性门户网站或者功能性专题网站也都青睐于开设自己的论坛,以促进网友之间的交流,增加互动性和丰富网站的内容。

现有一些普通中小网站的架构是应用服务器+数据库服务器两层结构,这种架构应对普通的用户访问不存在大问题,但是,论坛随着时间的推移,每天不断积累的数据量以及日益增长迅速的访问量都会让整个系统压力倍增,尤其是当某些新闻事件发生后,论坛的发帖和回帖数量会在短时间内剧增,为应对这种局面,可以通过增加应用服务器这种横向扩展的方式来满足巨大的用户访问量。但是,增加应用服务器并不能缓解数据量和访问量增加造成的压力瓶颈,最后压力瓶颈都会压在数据库服务器层,同时也会反过来影响应用服务器,然而,数据库服务器是属于稀缺的、难以方便扩展的资源,因此需要对论坛整体系统进行改造,提升系统的抗压能力,减少对数据库的访问,让系统的每一层水平扩展都变成极其简单的事情。



技术实现要素:

为了克服现有技术的缺陷,本发明提供一种用于处理论坛高并发数据请求的系统和方法,通过改变传统的网站架构,在应用服务器前端增设一页面缓存服务器,应用服务器与存储服务器之间增设缓存服务器,实现了分解数据库服务器压力,提高系统的抗压性能,避免高并发访问情况下数据库堵塞,同时,对应用服务器和数据库服务器起到很好的保护作用。

本发明采用技术方案如下:

一种用于处理论坛高并发数据请求的系统,包括数据库服务器、数据缓存服务器、应用服务器和页面缓存服务器,

所述页面缓存服务器,用于缓存应用服务器发送的HTML页面源码,响应客户端访问页面的请求,从本地或应用服务器获取请求页面的HTML页面源码;

所述应用服务器包括数据读取模块和源码构造模块,所述数据读取模块用于从数据缓存服务器或数据库服务器中读取页面数据,所述源码构造模块用于将所述页面数据构造成HTML页面源码,并返回给页面缓存服务器;

所述数据缓存服务器,用于存储所述应用服务器从数据库服务器中读取的页面数据;

所述数据库服务器,用于存储页面数据,响应应用服务器读取页面数据的请求。

进一步地,所述应用服务器还包括数据写入模块,

所述数据写入模块,用于接收客户端提交的新数据,将所述新数据同步到数据库服务器,从而对数据库服务器中相应的页面数据进行更新。

进一步地,所述应用服务器还包括第一主动更新模块,

所述第一主动更新模块用于主动从数据库服务器中读取更新后的页面数据,将所述更新后的页面数据发送给数据缓存服务器。

进一步地,所述应用服务器还包括第二主动更新模块,

所述第二主动更新模块用于主动从数据库服务器中读取更新后的页面数据,将所述更新后的页面数据构造成HTML页面源码,并发送给页面缓存服务器。

优选地,所述页面缓存服务器中数据的缓存期限为1-3个月,所述数据缓存服务器中缓存数据的缓存期限为永久缓存。

相应地,本发明还提供了一种处理论坛高并发数据请求的方法,所述方法利用上述的用于处理论坛高并发数据请求的系统来实现,包括读取数据的方法,所述读取数据的方法包括如下步骤:

S101、响应客户端访问页面的请求,判断页面缓存服务器中是否缓存有该请求页面的HTML页面源码,若否,则向应用服务器发送页面数据请求;

S102、应用服务器根据所述页面数据请求,查询数据缓存服务器中是否缓存有与所述页面数据请求对应的页面数据,若否,则从数据库服务器中读取与所述页面数据请求对应的页面数据,

S103、应用服务器将所述页面数据构造成HTML页面源码,将所述页面数据发送给数据缓存服务器,将构造的HTML页面源码反馈给页面缓存服务器;

S104、数据缓存服务器存储所述页面数据,页面缓存服务器缓存所述HTML页面源码,并将所述HTML页面源码返回给客户端。

所述步骤S101中,若判断出页面缓存服务器中已缓存该请求页面的HTML页面源码,则将页面缓存服务器中缓存的所述HTML页面源码返回给客户端。

所述步骤S102中,若查询到数据缓存服务器中缓存有与所述页面数据请求对应的页面数据,则应用服务器从所述数据缓存服务器中读取所述页面数据。

进一步地,所述方法还包括更新数据的方法,所述更新数据的方法包括:

S201、应用服务器接收客户端提交的新数据,将所述新数据同步到数据库服务器,从而对数据库服务器中相应的页面数据进行更新;

S202、应用服务器主动从数据库服务器中读取更新后的页面数据,将所述更新后的页面数据构造成HTML页面源码,并将所述HTML页面源码存入页面缓存服务器,将更新后的页面数据存入数据缓存服务器。

所述步骤S202具体包括:

应用服务器主动从数据库服务器中读取更新后的页面数据,将所述更新后的页面数据构造成HTML页面源码,并将所述HTML页面源码发送给页面缓存服务器,将更新后的页面数据发送给数据缓存服务器,所述页面缓存服务器存储所述HTML页面源码,所述数据缓存服务器存储所述更新后的页面数据。

本发明的有益效果是:

现有网站架构普遍为应用服务器+数据库服务器的两层结构,其在应对论坛高并发请求情况时容易出现响应速率低、数据库堵塞等缺陷;针对这一情况,本发明提出在应用服务器前端增加页面缓存服务器,在应用服务器和数据库服务器服务器之间增加数据缓存服务器的架构;利用页面缓存服务器缓存HTML页面源码,从而减少应用服务器逻辑运算工作,对应用服务器起到良好的保护作用,并能提高缓存服务器的命中率;利用数据缓存服务器缓存页面数据,应用服务器首先从数据缓存服务器中查找数据,在未找到所需数据情况下才会直接从数据库服务器中查找数据,显著降低了数据库服务器被访频率,对应用服务器和数据库服务器起到较好的保护作用,提高了整个系统的抗压性能和稳定性。

在数据更新方面,本发明采用主动更新的方式,即应用服务器主动从数据库服务器中读取更新后的页面数据,将更新后的页面数据发送给数据缓存服务器存储,并构造HTML页面源码,将其发送给页面缓存服务器存储,主动更新的速率非常快,使得页面缓存服务器和数据缓存服务器中存储内容更全面,提高了系统应对高并发请求的抗压能力,对数据库服务器起到很好的保护作用。

本发明的页面缓存服务器和数据缓存服务器都具有较高的水平扩展性,实用性强。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。

图1是本发明系统的结构框图;

图2是本发明系统数据更新功能的结构框图;

图3是读取数据的方法流程示意图;

图4是更新数据的方法流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一:

如图1-3所示,本发明提供一种用于处理论坛高并发数据请求的系统,包括数据库服务器、数据缓存服务器、应用服务器和页面缓存服务器。

所述页面缓存服务器用于缓存应用服务器发送的HTML页面源码,响应客户端访问页面的请求,从本地或应用服务器获取请求页面的HTML页面源码。

参见图3,所述应用服务器包括数据读取模块、源码构造模块、数据写入模块、第一主动更新模块和第二主动更新模块。其中,所述数据读取模块用于从数据缓存服务器或数据库服务器中读取页面数据;所述源码构造模块用于将所述页面数据构造成HTML页面源码,并返回给页面缓存服务器;所述数据写入模块用于接收客户端提交的新数据,将所述新数据同步到数据库服务器,从而对数据库服务器中相应的页面数据进行更新;所述第一主动更新模块用于主动从数据库服务器中读取更新后的页面数据,将所述更新后的页面数据发送给数据缓存服务器;所述第二主动更新模块用于主动从数据库服务器中读取更新后的页面数据,将所述更新后的页面数据构造成HTML页面源码,并发送给页面缓存服务器。

所述数据缓存服务器,用于存储所述应用服务器从数据库服务器中读取的页面数据。

所述数据库服务器,用于存储页面数据,响应应用服务器读取页面数据的请求。

本发明根据论坛这类产品的特点,在网站应用服务器前端,搭设页面缓存服务层。AST(Apache Traffic Server)是一款高性能的、模块化的HTTP代理和缓存服务器,可以作为本发明的页面缓存服务器。页面缓存服务器中数据的缓存期限可适当延长,较佳的为1~3个月。通过延长页面缓存服务器中数据的缓存期限可对后端的应用服务器起到较好的保护作用,同时也会大大提高缓存服务器的命中率,横向扩展也很方便,只需动态加缓存服务器修改配置即可。

本发明把页面里面的动态数据(如访问数、回帖数、当前用户信息等)提取出来做成接口服务,并通过AJAX(Asynchronous Javascript And XML,异步JavaScript和XML)技术把这些数据加载到论坛的帖子页面中,由于这些数据都属于小数据量,对应用服务器不会构成大的压力,未来扩展仅需增加应用服务器来支撑高并发连接数即可。

通过以上设置,页面缓存服务器集群命中率可以做到85%以上。

现有技术中处理访问请求的方法为:接收到访问请求后,应用服务器被动的到后端数据库服务器中读取相应的数据,然后将数据放到缓存服务器中。这种用法可适用于中小型网站,但遇到有高并发请求时,后端数据库服务器的压力很大,容易造成数据库堵塞,进而又会反过来影响应用服务器,造成请求排队甚至严重时会造成雪崩效应。针对此缺陷,本发明提出了在应用服务器和数据库服务器之间再增加数据缓存服务器,选用内存型NOSQL(Not Only SQL)缓存服务器来搭建,常用的软件选型有:Memcached、Redis、SSDB等。其处理方法为:用户提交帖子内容后,后端负责逻辑处理的应用服务器主动去更新数据缓存服务器中的缓存内容,由于更换内容速度非常快,可以在1-2毫秒内完成,因此大大提升了抗压性能,对后端的数据库服务器进行很好的压力分解。

数据缓存服务器集群同样也是具有水平高扩展性,命中率最高也可以做到90%以上。

本发明经过这两层的缓存服务的部署保护,最终到达数据库服务器端的访问压力可以减少至5%以下,同时整个论坛网站的抗压能力得到较大提升,抵御DDOS(Distributed Denial of Service,分布式拒绝服务)攻击的能力也得到大幅提升。

实施例二:

本发明还提供了一种处理论坛高并发数据请求的方法,所述方法利用上述的用于处理论坛高并发数据请求的系统来实现,包括读取数据的方法和更新数据的方法,所述读取数据的方法包括如下步骤:

S101、响应客户端访问页面的请求,判断页面缓存服务器中是否缓存有该请求页面的HTML页面源码,若是,则将页面缓存服务器中缓存的所述HTML页面源码返回给客户端,若否,则向应用服务器发送页面数据请求;

S102、应用服务器根据所述页面数据请求,查询数据缓存服务器中是否缓存有与所述页面数据请求对应的页面数据,若是,则从所述数据缓存服务器中读取所述页面数据,若否,则从数据库服务器中读取与所述页面数据请求对应的页面数据,

S103、应用服务器将所述页面数据构造成HTML页面源码,将所述页面数据发送给数据缓存服务器,将构造的HTML页面源码反馈给页面缓存服务器;

S104、数据缓存服务器存储所述页面数据,页面缓存服务器缓存所述HTML页面源码,并将所述HTML页面源码返回给客户端。

所述更新数据的方法包括:

S201、应用服务器接收客户端提交的新数据,将所述新数据同步到数据库服务器,从而对数据库服务器中相应的页面数据进行更新;

S202、应用服务器主动从数据库服务器中读取更新后的页面数据,将所述更新后的页面数据构造成HTML页面源码,并将所述HTML页面源码发送给页面缓存服务器,将更新后的页面数据发送给数据缓存服务器,所述页面缓存服务器存储所述HTML页面源码,所述数据缓存服务器存储所述更新后的页面数据。

以上所揭露的仅为本发明的较佳实施例而已,当然不能以此来限定本发明的权利范围,依据本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1