一种异步缓存方法、服务器及系统技术方案

技术编号:12951401 阅读:84 留言:0更新日期:2016-03-02 11:50
本发明专利技术公开了一种异步缓存方法、服务器及系统,涉及缓存技术领域。本发明专利技术的技术方案中,在从异步缓存服务器和源服务器读取用户请求的数据,并将其返回给用户,对用户的请求完成响应的同时,通过对源数据设置逻辑过期时间,形成异步缓存数据,并将异步缓存数据存储于异步缓存服务器中,从而实现异步缓存服务器的更新;同时,通过逻辑过期时间作为基准判断异步缓存数据是否过期,过期后,则读取源数据,并再次在异步缓存服务器中更新;通过上述两次的异步缓存数据的更新,可以保证80%-90%的用户请求只需要访问异步缓存服务器即可,而不需要读取源服务器。所以,采用本发明专利技术实施例提供的技术方案,可以明显的提升系统的可用性和稳定性。

【技术实现步骤摘要】

本专利技术涉及缓存
,尤其涉及一种异步缓存方法、服务器及系统
技术介绍
目前,利用缓存技术进行数据读取,一般是将从数据库中获取到的数据存放在缓存中,并设置缓存过期的物理时间。请求到达时,如果缓存中有需要的数据则返回缓存的数据,如果缓存中没有数据(没有缓存过数据或缓存数据已过期),则访问源数据库,如图1所/_J、i ο由于缓存过期的物理时间设置的比较短,则缓存中存储的冷数据比较容易过期,而缓存中的数据过期后即访问源数据库,从而造成冷数据缓存无效或低效的状况以及大量的、高频率的访问源数据库的操作,进而给源数据库带来了极大的访问压力,数据读取的请求量越大,数据库的访问压力越大,严重时,甚至会影响源数据库的正常访问,进而影响系统的正常使用。另外,访问源数据库如果出错,当次请求的响应就会失败报错;同时直到访问源数据库成功才能再次建立缓存。因此,采用现有技术中的缓存读取数据,系统的可用性和稳定性受到了极大的影响。
技术实现思路
本专利技术的目的在于提供一种异步缓存方法、服务器及系统,从而解决现有技术中存在的前述问题。为了实现上述目的,本专利技术采用的技术方案如下:—种异步缓存方法,包括如下步骤:S1,异步缓存服务器接收用户请求和作为委托参数的访问源服务器的函数;S2,检查所述异步缓存服务器中是否存在与所述用户请求的数据一致的异步缓存数据,如果不存在则执行步骤S3,如果存在则执行步骤S7 ;S3,所述异步缓存服务器调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据,并将该源数据返回给用户,同时执行步骤S4 ;S4,为步骤S3或步骤S6中获取的所述源数据添加逻辑过期时间,形成异步缓存数据;将所述异步缓存数据存入所述异步缓存服务器,并设置所述异步缓存数据的物理过期时间;S5,验证所述异步缓存数据是否逻辑过期,如果未逻辑过期,则结束;如果逻辑过期,则执行步骤S6;S6,调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据,然后执行步骤S4 ;S7,获取所述异步缓存数据,并将该数据返回给用户;同时执行步骤S5-S6。具体地,步骤S4中,所述逻辑过期时间设置为150-900秒。优选地,所述逻辑过期时间设置为300秒。具体地,步骤S4中,所述物理过期时间设置为1-7天。优选地,所述物理过期时间设置为2天。进一步地,步骤S4中,所述为步骤S3或步骤S6中获取的所述源数据添加逻辑过期时间,包括,将步骤S3或步骤S6中获取的所述源数据进行序列化,在序列化后的数据前端添加逻辑过期时间。更进一步地,步骤S7中,所述获取所述异步缓存数据,并将该数据返回给用户,包括,将所述异步缓存数据中的所述逻辑过期时间和所述源数据分离,并将所述源数据反序列化成对象后返回给用户。进一步地,步骤S6中,所述调用所述作为委托参数的访问源服务器的函数,采用分布式锁控制。一种异步缓存服务器,包括:数据接收单元:用于接收用户请求和作为委托参数的访问源服务器的函数;数据处理单元:检查所述异步缓存服务器中是否存在与所述用户请求的数据一致的异步缓存数据;还用于为源数据添加逻辑过期时间,以及为所述异步缓存数据设置物理过期时间;数据提取单元:用于调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据;数据存储单元:用于存储异步缓存数据;数据输出单元:用于将异步缓存数据和源数据返回给用户。一种异步缓存系统,包括:用户请求处理端,用于发送用户请求和作为委托参数的访问源服务器的函数,权利要求9所述的异步缓存服务器和提供源数据的源服务器。本专利技术的有益效果是:因此,在读取请求数据时,尤其是当数据请求量比较大的情况下,会极大的减轻源服务器的访问压力,进而减轻系统的负载压力,在实际使用过程中发现,与现有技术相比,采用本专利技术实施例提供的技术方案,对请求的响应时间为500毫秒以下,而采用现有的缓存技术,对请求的响应时间为4秒;另外,采用本专利技术实施例提供的技术方案,当访问源服务器出错时,也不会影响当次请求的响应,只会影响缓存数据的更新,所以,采用本专利技术实施例提供的技术方案,可以明显的提升系统的可用性和稳定性。【附图说明】图1是现有技术的缓存方法流程图;图2是本专利技术实施例提供的异步缓存方法流程图。【具体实施方式】为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进行进一步详细说明。应当理解,此处所描述的【具体实施方式】仅仅用以解释本专利技术,并不用于限定本专利技术。如图2所示,本专利技术实施例提供的异步缓存的方法,包括如下步骤:S1,异步缓存服务器接收用户请求和作为委托参数的访问源服务器的函数;S2,检查所述异步缓存服务器中是否存在与所述用户请求的数据一致的异步缓存数据,如果不存在则执行步骤S3,如果存在则执行步骤S7 ;S3,所述异步缓存服务器调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据,并将该源数据返回给用户,同时执行步骤S4 ;S4,为步骤S3或步骤S6中获取的所述源数据添加逻辑过期时间,形成异步缓存数据;将所述异步缓存数据存入所述异步缓存服务器,并设置所述异步缓存数据的物理过期时间;S5,验证所述异步缓存数据是否逻辑过期,如果未逻辑过期,则结束;如果逻辑过期,则执行步骤S6;S6,调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据,然后执行步骤S4 ;S7,获取所述异步缓存数据,并将该数据返回给用户;同时执行步骤S5-S6。如本领域技术人员可以理解的,用户请求可以是用户端访问web站点,web服务器处理用户请求后,将用户请求发送至异步缓存服务器,其中,web服务器将访问源服务器的函数作为委托参数传递给异步缓存服务器。当异步缓存服务器中不存在与所述用户请求的数据一致的异步缓存数据时,异步缓存服务器会调用该委托参数,访问源服务器获取源数据,并返回给用户。本专利技术实施例中,完成上述任务的同时,将读取的源数据进行序列化,在序列化后的数据前端添加逻辑过期时间,形成异步缓存数据;将所述异步缓存数据存入所述异步缓存服务器,并设置所述异步缓存数据的物理过期时间;从而在异步缓存服务器中实现异步缓存数据的更新。当异步缓存服务器存在与所述用户请求的数据一致的异步缓存数据时,则直接获取数据并返回给用户,在异步缓存服务器中,完成请求响应的主线程的同时,异步缓存服务器会启动一个新线程,该线程为:验证上述异步缓存服务器中已经更新的异步缓存数据是否逻辑过期,如果未逻辑过期,则结束;如果逻辑过期,则调用所述作为委托参数的访问源服务器的函数,从源服务器中获取与所述用户请求的数据相一致的源数据,获取源数据后,再将所述源数据进行序列化,在序列化后的数据前端添加逻辑过期时间,形成异步缓存数据;将所述异步缓存数据存入所述异步缓存服务器,并设置所述异步缓存数据的物理过期时间,再次在异步缓存服务器中完成异步缓存数据的更新。上述技术方案中,由于异步缓存数据处于不断的更新中,因此,新的请求抵达时,系统会将已经更新过的数据提供给用户。本专利技术实施例中,通过上述两次的异步缓存数据的更新,可以保证本文档来自技高网...

【技术保护点】
一种异步缓存方法,其特征在于,包括如下步骤:S1,异步缓存服务器接收用户请求和作为委托参数的访问源服务器的函数;S2,检查所述异步缓存服务器中是否存在与所述用户请求的数据一致的异步缓存数据,如果不存在则执行步骤S3,如果存在则执行步骤S7;S3,所述异步缓存服务器调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据,并将该源数据返回给用户,同时执行步骤S4;S4,为步骤S3或步骤S6中获取的所述源数据添加逻辑过期时间,形成异步缓存数据;将所述异步缓存数据存入所述异步缓存服务器,并设置所述异步缓存数据的物理过期时间;S5,验证所述异步缓存数据是否逻辑过期,如果未逻辑过期,则结束;如果逻辑过期,则执行步骤S6;S6,调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据,然后执行步骤S4;S7,获取所述异步缓存数据,并将该数据返回给用户;同时执行步骤S5‑S6。

【技术特征摘要】

【专利技术属性】
技术研发人员:李林
申请(专利权)人:北京皮尔布莱尼软件有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1