[发明专利]一种缓解服务端数据库访问压力的方法和装置有效
申请号: | 201310541236.1 | 申请日: | 2013-11-05 |
公开(公告)号: | CN103631869B | 公开(公告)日: | 2018-04-17 |
发明(设计)人: | 王博;叶剑峰;吴凯 | 申请(专利权)人: | 北京奇虎科技有限公司;奇智软件(北京)有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京市隆安律师事务所11323 | 代理人: | 权鲜枝,何立春 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 缓解 服务端 数据库 访问 压力 方法 装置 | ||
技术领域
本发明属于网络通信技术领域,具体涉及一种缓解服务端数据库访问压力的方法和装置。
背景技术
当前,可以在智能终端(如手机、PC、PAD等)上安装各种功能的应用软件(在本申请中也简称为应用)。且各种应用也在不断推出功能更完善更强大的新版本,需要在智能终端上进行升级。
以手机上安装的手机助手客户端为例,请求量最大的功能是查询升级接口,具体而言:客户端会不定期的把手机中应用名称及其应用版本信息发送到服务器,服务器通过比较版本信息来判断客户端的应用是否需要升级,如果需要就返回若干项相关信息。通常,一台手机中会装几十个到上百个应用不等,对于服务端来说其处理的请求是来自很多部手机上客户端的,当海量客户端一起请求时,服务端需要处理的访问量巨大,其压力可想而知。
目前,服务端一般使用Redis,它是目前最流行的NoSQL软件,为了简化架构,它使用了单线程的模式,由于一个线程只能使用一个CPU,因此,致使在海量查询请求发送至服务端时,服务端的处理查询请求的压力过大。
而服务端其实是有多个CPU的,现有技术中,为了提高多CPU服务端的CPU利用率以缓解服务端的压力,增加了多个Redis,每个Redis分别对应一个CPU。但是启动多个Redis实例,无疑增加了系统的复杂性,同时也增加了维护的成本。我们不得不关心多实例之间的数据内容是否一致,同时,多实例方案在解决高效利用CPU的问题时,却极大的浪费了系统的内存资源。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种缓解服务端数据库访问压力的方法和装置。
依据本发明的一个方面,提供了一种缓解服务端数据库访问压力的方法,其中,所述服务端数据库中保存有应用的版本信息以及应用的更新相关信息,该方法包括:
查询服务端数据库中的应用的版本信息并复制到共享内存中;
接收来自客户端的包含应用名称和应用的版本信息的应用更新查询请求;
查询共享内存,判断共享内存中是否有所述应用更新查询请求所对应的应用的记录,如果有则通过对比应用的版本信息确定应用更新查询请求所对应的应用是否需要更新,过滤掉不需要更新的应用;
向服务端数据库查询需要更新的应用的更新相关信息,并返回给客户端。
可选地,该方法进一步包括:
为复制到共享内存中的每个应用的版本信息设置一个过期时间;
当共享内存中的一个应用的版本信息的过期时间到达时,从共享内存中删除该应用的版本信息,并从所述服务端数据库重新查询该应用的版本信息并复制到共享内存中。
可选地,
所述共享内存为Nginx的共享内存;
所述接收来自客户端的包含应用名称和应用的版本信息的应用更新查询请求,以及所述查询共享内存包括:启动多个Nginx进程来接收来自客户端的应用更新查询请求,以及查询Nginx的共享内存。
可选地,该方法还包括:
利用服务端的多个CPU来操作所述共享内存。
可选地,所述服务端数据库为单线程Redis。
根据本发明的另一方面,提供了一种缓解服务端数据库访问压力的装置,其中,所述服务端数据库中保存有应用的版本信息以及应用的更新相关信息,该装置包括:复制单元,共享内存单元、应用更新请求处理单元;
复制单元,适于查询所述服务端数据库中的应用的版本信息并复制到共享内存单元中;
共享内存单元,适于保存复制单元查询的应用的版本信息;
应用更新请求处理单元,适于接收来自客户端的包含应用名称和应用的版本信息的应用更新查询请求,查询共享内存单元,判断共享内存单元中是否有所述应用更新查询请求所对应的应用的记录,如果有则通过对比应用的版本信息确定应用更新查询请求所对应的应用是否需要更新,过滤掉不需要更新的应用,以及向服务端数据库查询需要更新的应用的更新相关信息,并返回给客户端。
可选地,所述复制单元,进一步适于为复制到共享内存单元中的每个应用的版本信息设置一个过期时间,当共享内存单元中的一个应用的版本信息的过期时间到达时,从共享内存单元中删除该应用的版本信息,并从所述服务端数据库重新查询该应用的版本信息并复制到共享内存单元中。
可选地,所述共享内存单元为Nginx的共享内存单元;
应用更新请求处理单元,适于启动多个Nginx进程来接收来自客户端的应用更新查询请求,以及查询Nginx的共享内存单元。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司;奇智软件(北京)有限公司,未经北京奇虎科技有限公司;奇智软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310541236.1/2.html,转载请声明来源钻瓜专利网。