一种异步缓存方法、服务器及系统的制作方法

文档序号:9616104阅读:317来源:国知局
一种异步缓存方法、服务器及系统的制作方法
【技术领域】
[0001]本发明涉及缓存技术领域,尤其涉及一种异步缓存方法、服务器及系统。
【背景技术】
[0002]目前,利用缓存技术进行数据读取,一般是将从数据库中获取到的数据存放在缓存中,并设置缓存过期的物理时间。请求到达时,如果缓存中有需要的数据则返回缓存的数据,如果缓存中没有数据(没有缓存过数据或缓存数据已过期),则访问源数据库,如图1所
/_J、i ο
[0003]由于缓存过期的物理时间设置的比较短,则缓存中存储的冷数据比较容易过期,而缓存中的数据过期后即访问源数据库,从而造成冷数据缓存无效或低效的状况以及大量的、高频率的访问源数据库的操作,进而给源数据库带来了极大的访问压力,数据读取的请求量越大,数据库的访问压力越大,严重时,甚至会影响源数据库的正常访问,进而影响系统的正常使用。另外,访问源数据库如果出错,当次请求的响应就会失败报错;同时直到访问源数据库成功才能再次建立缓存。
[0004]因此,采用现有技术中的缓存读取数据,系统的可用性和稳定性受到了极大的影响。

【发明内容】

[0005]本发明的目的在于提供一种异步缓存方法、服务器及系统,从而解决现有技术中存在的前述问题。
[0006]为了实现上述目的,本发明采用的技术方案如下:
[0007]—种异步缓存方法,包括如下步骤:
[0008]S1,异步缓存服务器接收用户请求和作为委托参数的访问源服务器的函数;
[0009]S2,检查所述异步缓存服务器中是否存在与所述用户请求的数据一致的异步缓存数据,如果不存在则执行步骤S3,如果存在则执行步骤S7 ;
[0010]S3,所述异步缓存服务器调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据,并将该源数据返回给用户,同时执行步骤S4 ;
[0011]S4,为步骤S3或步骤S6中获取的所述源数据添加逻辑过期时间,形成异步缓存数据;将所述异步缓存数据存入所述异步缓存服务器,并设置所述异步缓存数据的物理过期时间;
[0012]S5,验证所述异步缓存数据是否逻辑过期,如果未逻辑过期,则结束;如果逻辑过期,则执行步骤S6;
[0013]S6,调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据,然后执行步骤S4 ;
[0014]S7,获取所述异步缓存数据,并将该数据返回给用户;同时执行步骤S5-S6。
[0015]具体地,步骤S4中,所述逻辑过期时间设置为150-900秒。
[0016]优选地,所述逻辑过期时间设置为300秒。
[0017]具体地,步骤S4中,所述物理过期时间设置为1-7天。
[0018]优选地,所述物理过期时间设置为2天。
[0019]进一步地,步骤S4中,所述为步骤S3或步骤S6中获取的所述源数据添加逻辑过期时间,包括,将步骤S3或步骤S6中获取的所述源数据进行序列化,在序列化后的数据前端添加逻辑过期时间。
[0020]更进一步地,步骤S7中,所述获取所述异步缓存数据,并将该数据返回给用户,包括,将所述异步缓存数据中的所述逻辑过期时间和所述源数据分离,并将所述源数据反序列化成对象后返回给用户。
[0021]进一步地,步骤S6中,所述调用所述作为委托参数的访问源服务器的函数,采用分布式锁控制。
[0022]一种异步缓存服务器,包括:
[0023]数据接收单元:用于接收用户请求和作为委托参数的访问源服务器的函数;
[0024]数据处理单元:检查所述异步缓存服务器中是否存在与所述用户请求的数据一致的异步缓存数据;还用于为源数据添加逻辑过期时间,以及为所述异步缓存数据设置物理过期时间;
[0025]数据提取单元:用于调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据;
[0026]数据存储单元:用于存储异步缓存数据;
[0027]数据输出单元:用于将异步缓存数据和源数据返回给用户。
[0028]一种异步缓存系统,包括:用户请求处理端,用于发送用户请求和作为委托参数的访问源服务器的函数,权利要求9所述的异步缓存服务器和提供源数据的源服务器。
[0029]本发明的有益效果是:
[0030]因此,在读取请求数据时,尤其是当数据请求量比较大的情况下,会极大的减轻源服务器的访问压力,进而减轻系统的负载压力,在实际使用过程中发现,与现有技术相比,采用本发明实施例提供的技术方案,对请求的响应时间为500毫秒以下,而采用现有的缓存技术,对请求的响应时间为4秒;另外,采用本发明实施例提供的技术方案,当访问源服务器出错时,也不会影响当次请求的响应,只会影响缓存数据的更新,所以,采用本发明实施例提供的技术方案,可以明显的提升系统的可用性和稳定性。
【附图说明】
[0031]图1是现有技术的缓存方法流程图;
[0032]图2是本发明实施例提供的异步缓存方法流程图。
【具体实施方式】
[0033]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的【具体实施方式】仅仅用以解释本发明,并不用于限定本发明。
[0034]如图2所示,本发明实施例提供的异步缓存的方法,包括如下步骤:
[0035]S1,异步缓存服务器接收用户请求和作为委托参数的访问源服务器的函数;
[0036]S2,检查所述异步缓存服务器中是否存在与所述用户请求的数据一致的异步缓存数据,如果不存在则执行步骤S3,如果存在则执行步骤S7 ;
[0037]S3,所述异步缓存服务器调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据,并将该源数据返回给用户,同时执行步骤S4 ;
[0038]S4,为步骤S3或步骤S6中获取的所述源数据添加逻辑过期时间,形成异步缓存数据;将所述异步缓存数据存入所述异步缓存服务器,并设置所述异步缓存数据的物理过期时间;
[0039]S5,验证所述异步缓存数据是否逻辑过期,如果未逻辑过期,则结束;如果逻辑过期,则执行步骤S6;
[0040]S6,调用所述作为委托参数的访问源服务器的函数,从所述源服务器中获取与所述用户请求的数据相一致的源数据,然后执行步骤S4 ;
[0041]S7,获取所述异步缓存数据,并将该数据返回给用户;同时执行步骤S5-S6。
[0042]如本领域技术人员可以理解的,用户请求可以是用户端访问web站点,web服务器处理用户请求后,将用户请求发送至异步缓存服务器,其中,web服务器将访问源服务器的函数作为委托参数传递给异步缓存服务器。
[0043]当异步缓存服务器中不存在与所述用户请求的数据一致的异步缓存数据时,异步缓存服务器会调用该委托参数,访问源服务器获取源数据,并返回给用户。本发明实施例中,完成上述任务的同时,将读取的源数据进行序列化,在序列化后的数据前端添加逻辑过期时间,形成异步缓存数据;将所述异步缓存数据存入所述异步缓存服务器,并设置所述异步缓存数据的物理过期时间;从而在异步缓存服务器中实现异步缓存数据的更新。
[0044]当异步缓存服务器存在与所述用户请求的数据一致的异步缓存数据时,则直接获取数据并返回给用户,在异步缓存服务器中,完成请求响应的主线程的同时,异步缓存服务器会启动一个新线程,该线程为:
[0045]验证上述异步缓存服务器中已经更新的异步缓存数据是否逻辑过期,如果未逻辑过期,则结束;如果逻辑过期,则调用所述作为委托参数的访问源服务器的函数,从源服务器中获取与所述用户请求的数据相一致的源数据,获取源数据后,再将所述源数据进行序列化,在序列化后的数据前端添加逻辑过期时间,形成异步缓存数据;将所述异步缓存数据存入所述异步缓存服务器,并设置所述异步缓存数据的物理过期时间,再次在异步缓存服务器中完成异步缓存数据的更新。
[0046]上述技术方案中,由于异步缓存数据处于不断的更新中,因此,新的请求抵达时,系统会将已经更新过的数据提供给用户。
[0047]本发明实施例中,通过上述两次的异步缓存数据的更新,可以保证80% -90%的用户请求只需要访问异步缓存服务器即可,而不需要读取源服务器。因此,在读取请求数据时,尤其是当数据请求量比较大的情况下,会极大的减轻源服务器的访问压力,进而减轻系统的负载压力,在实际使用过程中发现,与现有技术相比,采用本发明实施例提供的技术方案,对请求的响应时间为500毫秒以下,而采用现有的缓存技术,对请求的响应时间为4秒;另外,采用本发明实施例提供的技术方案,当访问源服务器出错时,也不会影响当次请求的响应,只会影响缓存数据的更新,所以,采用本发明实施例提供的技术方案,可以明显的提升系统的可用性和稳定性。
[0048]在本发明实施例中,所述逻辑过期时间为18字节过期时间戳。
[0049]逻辑过期时间一般可以根据缓存数据更新频率的需要进行设置。当缓存数据的访问频率较高时,则更新频率可以低一些,因为访问频率高,所以即使更新频率低,也不会影响访问效率;相反,当缓存数据的访问频率较低时,则更新频率应当高一些,因为访问频率低,如果不经常更新,即更新频率低的话,数据的访问效率会比较低;因此,对于访问频率较高的数据,其需要的更新频率比较低,其对应的设置的逻辑过期时间可以短一些,逻辑过期时间越短,访问源服务器的频次越多,更新越快;
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1