System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及缓存数据,具体提供一种基于消息队列的数据更新的方法、系统、装置及介质。
技术介绍
1、随着互联网应用技术的普及,用户对网站或app的响应速度的要求越来越高,越来越多的服务端采用了缓存技术,以提升数据的加载速度。实际业务场景中缓存数据与实际数据之前存在不同步的情况,需要将缓存数据与实际数据达成一致,才能保持业务稳定。
2、对于缓存与实际数据保持一致的问题,业界一般采用缓存定时过期或数据写入时删除缓存等方式。即设定一段时间让缓存过期,或者在修改或新增数据的时候删除缓存,取读时重新将实际数据保存到缓存中。但是这种方式存在缓存击穿的风险,同时实际数据重新加载到缓存中也增加了用户的等待时长。另一方面,分布式服务的兴起,更加重了缓存数据与实际数据不一致的情况,实际的业务场景中存在缓存数据与实际数据分别存在与两个服务,实际数据修改难以同步删除缓存数据。
3、相应地,本领域需要一种新的数据更新方案来解决上述问题。
技术实现思路
1、为了克服上述缺陷,提出了本专利技术,以提供解决或至少部分地解决如何避免缓存击穿,并确保数据实时一致的技术问题。
2、在第一方面,本专利技术提供一种基于消息队列的数据更新的方法,所述方法包括:
3、控制第二服务模块通过消息队列获取与所述第二服务模块相对应的第一服务模块的更新消息数据;其中,所述更新消息数据为所述第一服务模块的更新数据对应的数据更新信息;
4、基于所述更新数据的更新频率,根据所述更新消
5、其中,所述第一服务模块是所述更新数据的生产方、所述第二服务模块是所述更新数据的消费方。
6、在上述基于消息队列的数据更新的方法的一个技术方案中,所述基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新,包括:
7、若所述更新频率小于等于第一预设频率,则根据所述更新消息数据删除所述第二服务模块中与所述更新消息数据相对应的缓存数据,当接收到与所述更新消息数据对应的调用指令时,通过所述第一服务模块的查询接口获取所述更新数据并将所述更新数据存入所述第二服务模块中。
8、在上述基于消息队列的数据更新的方法的一个技术方案中,所述基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新,包括:
9、若所述更新频率大于第二预设频率且小于等于第三预设频率,当接收到所述更新消息数据时,通过所述第一服务模块的查询接口获取与所述更新消息数据对应的更新数据,并根据所述更新数据更新所述第二服务模块中相对应的缓存数据;
10、其中,所述第二预设频率大于等于所述第一预设频率。
11、在上述基于消息队列的数据更新的方法的一个技术方案中,所述基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新,包括:
12、若所述更新频率大于第四预设频率,则通过所述消息队列获取与所述更新消息数据对应的更新数据并根据所述更新数据更新所述第二服务模块中相对应的缓存数据;
13、其中,所述第四预设频率大于等于所述第三预设频率。
14、在上述基于消息队列的数据更新的方法的一个技术方案中,所述控制第二服务模块通过消息队列获取与所述第二服务模块相对应第一服务模块的更新消息数据,包括:
15、通过消息服务模块对所述更新消息数据进行标记分区获得所述更新消息数据的标记分区信息后,将所述更新消息数据通过消息服务模块发送至所述消息队列;
16、控制所述第二服务模块根据所述标记分区信息,通过所述消息队列获取与所述第二服务模块相对应第一服务模块的更新消息数据。
17、在上述基于消息队列的数据更新的方法的一个技术方案中,所述控制所述第二服务模块根据所述标记分区信息,通过所述消息队列获取与所述第二服务模块相对应第一服务模块的更新消息数据,包括:
18、控制所述第二服务模块通过广播交换机获取所述更新消息数据;其中,所述消息队列与所述广播交换机绑定;
19、根据所述标记分区信息判断所述更新消息数据是否为所述第二服务模块的自身分区的数据;
20、若是,则获取所述更新消息数据。
21、在上述基于消息队列的数据更新的方法的一个技术方案中,所述基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新之前,所述方法还包括:
22、根据所述更新消息数据判断所述更新数据的版本是否高于所述第二服务模块中的对应的缓存数据的版本,若是,则基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新。
23、在第二方面,本专利技术提供一种在上述基于消息队列的数据更新的方法的一个技术方案中,所述系统包括:
24、数据获取模块,其被配置为控制第二服务模块通过消息队列获取与所述第二服务模块相对应的第一服务模块的更新消息数据;
25、其中,所述更新消息数据为所述第一服务模块的更新数据对应的数据更新信息;
26、数据处理模块,其被配置为基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新;
27、其中,所述第一服务模块是所述更新数据的生产方、所述第二服务模块是所述更新数据的消费方。
28、在第三方面,提供一种控制装置,该控制装置包括至少一个处理器和至少一个存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行上述基于消息队列的数据更新的方法的技术方案中任一项技术方案所述的基于消息队列的数据更新的方法。
29、在第四方面,提供一种计算机可读存储介质,该计算机可读存储介质其中存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行上述基于消息队列的数据更新的方法的技术方案中任一项技术方案所述的基于消息队列的数据更新的方法。
30、本专利技术上述一个或多个技术方案,至少具有如下一种或多种
31、有益效果:
32、在实施本专利技术的技术方案中,本专利技术通过控制第二服务模块通过消息队列获取与第二服务模块相对应的第一服务模块的更新消息数据,其中,更新消息数据为第一服务模块的更新数据对应的数据更新信息,基于更新数据的更新频率,根据更新消息数据对第二服务模块中的缓存数据进行更新,其中,第一服务模块是更新数据的生产方、第二服务模块是更新数据的消费方。通过上述配置方式,本专利技术通过消息队列及时地获取与第二服务模块相对应的第一服务模块的更新消息数据,并根据更新数据的更新频率和更新消息数据及时地对第二服务模块中的缓存数据进行更新,能够确保第二服务模块中的缓存数据和更新数据保持一致,同时确保第二服务模块中的缓存数据不会过期,能够有效防止出现缓冲击穿的风险。
本文档来自技高网...【技术保护点】
1.一种基于消息队列的数据更新的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于消息队列的数据更新的方法,其特征在于,所述基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新,包括:
3.根据权利要求2所述的基于消息队列的数据更新的方法,其特征在于,所述基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新,包括:
4.根据权利要求3所述的基于消息队列的数据更新的方法,其特征在于,所述基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新,包括:
5.根据权利要求1所述的基于消息队列的数据更新的方法,其特征在于,所述控制第二服务模块通过消息队列获取与所述第二服务模块相对应第一服务模块的更新消息数据,包括:
6.根据权利要求5所述的基于消息队列的数据更新的方法,其特征在于,
7.根据权利要求1所述的基于消息队列的数据更新的方法,其特征在于,所述基于所述更新数据的更新频率,根据所述更新消息数据对所述第二
8.一种基于消息队列的数据更新的系统,其特征在于,所述系统包括:
9.一种控制装置,包括至少一个处理器和至少一个存储装置,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行权利要求1至7中任一项所述的基于消息队列的数据更新方法。
10.一种计算机可读存储介质,其中存储有多条程序代码,其特征在于,所述程序代码适于由处理器加载并运行以执行权利要求1至7中任一项所述的基于消息队列的数据更新方法。
...【技术特征摘要】
1.一种基于消息队列的数据更新的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于消息队列的数据更新的方法,其特征在于,所述基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新,包括:
3.根据权利要求2所述的基于消息队列的数据更新的方法,其特征在于,所述基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新,包括:
4.根据权利要求3所述的基于消息队列的数据更新的方法,其特征在于,所述基于所述更新数据的更新频率,根据所述更新消息数据对所述第二服务模块中的缓存数据进行更新,包括:
5.根据权利要求1所述的基于消息队列的数据更新的方法,其特征在于,所述控制第二服务模块通过消息队列获取与所述第二服务模块相对应第一服务模块的更新消...
【专利技术属性】
技术研发人员:张翔宇,孙能林,
申请(专利权)人:青岛海尔科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。