分布式应用缓存刷新系统、方法、电子设备及存储介质技术方案

技术编号:26304031 阅读:16 留言:0更新日期:2020-11-10 19:59
本发明专利技术提供分布式应用缓存刷新系统,包括缓存刷新系统、缓存存储单元、消息订阅发布模块;缓存刷新系统由缓存管理模块、缓存刷新模块、缓存路由模块组成。本发明专利技术涉及分布式应用缓存刷新方法、用于执行该方法的电子设备和存储介质。本发明专利技术的缓存刷新节点服务能动态横向扩展,能够根据业务的体量选择添加服务器,再结合多线程并发程序以及Redis Pipline操作大幅度提高缓存刷新速度;缓存分区避免了缓存刷新时对业务应用操作缓存的影响;缓存分层,数据加载路径为DB‑>L1‑>L2,复杂的业务缓存基于L1的缓存进行构建,减少数据库读取,大幅度提升L2缓存的构建,减少缓存构建耗时;开发缓存路由功能组件,对缓存线程池进行预热再切换,避免因缓存分区切换导致业务抖动。

【技术实现步骤摘要】
分布式应用缓存刷新系统、方法、电子设备及存储介质
本专利技术涉及计算机软件
,尤其涉及分布式应用缓存刷新系统、方法、电子设备及存储介质。
技术介绍
随着电商平台的业务增长,业务数据的体量在逐步增大,平台业务的数据在深度和广度上都出现了大幅的增长。在这种场景下,当最基础数据出现变更时,会导致依赖基础数据的上层业务数据过期、失效,此时需要对部分业务数据进行清理和重建。在中小型系统中,常用的集中方法包括:1、将依赖的缓存直接删除,当请求发生时自动触发缓存的构建。当查询发现缓存不存在时,此方法会自动触发到数据库查询关联数据并重新生成新的缓存。但此方法存在缓存击穿的问题。2、启用专用缓存刷新系统,将涉及缓存更新的项目逐条生成并且替换过期和失效的数据。此方案避免了缓存穿透带来的风险,但是牺牲了一致性,当更新的缓存数量大时导致刷新任务积压,最终导致产生大量的脏数据,业务系统也必须针对此类情况做大量的容错处理。无论何种方案,当缓存组合过于复杂时,梳理缓存所依赖的基础数据以及层级都很难处理。当基础数据变更时,如何将关联缓存精准定位,这也是一件相当困难的事情。
技术实现思路
为了克服现有技术的不足,本专利技术的目的在于提供分布式应用缓存刷新系统,解决当缓存组合过于复杂时,难以梳理缓存所依赖的基础数据以及层级,以及当基础数据变更时,如何将关联缓存精准定位的问题。本专利技术提供分布式应用缓存刷新系统,包括缓存刷新系统、缓存存储单元、消息订阅发布模块;其中,所述缓存刷新系统由缓存管理模块、缓存刷新模块、缓存路由模块组成;所述缓存管理模块,用于接收缓存重构任务,将全量刷新任务进行拆分、细化、分配、检测,当刷新任务缓存后,发布缓存切换通知,通知缓存路由进行切换;所述缓存刷新模块,用于通过所述消息订阅发布模块注册到所述缓存管理模块,获取刷新任务项,进行缓存刷新操作;所述缓存路由模块,用于通过所述消息订阅发布模块获取当前缓存分区设置,提前连接于缓存的连接池,根据所述缓存管理模块的通知实时切换缓存引用组;所述缓存存储单元,用于将缓存划分为第一分区和第二分区,所述第一分区为应用提供缓存查询服务,所述第二分区用于缓存的全量构建,当缓存刷新完成后,将所述第一分区和所述第二分区的用途进行切换;所述消息订阅发布模块,用于服务注册服务与发现,通知信息的订阅与推送。进一步地,所述缓存刷新模块使用Java多线程技术和RedisPipline操作进行缓存刷新操作。进一步地,所述缓存存储单元采用开源的Redis集群,将Redis缓存划分为第一分区和第二分区。分布式应用缓存刷新方法,包括以下步骤:初始化模块,初始化缓存管理模块、缓存刷新模块、设置缓存存储单元的第一分区和第二分区,所述第一分区为应用提供缓存查询服务,所述第二分区用于缓存的全量构建;建立连接,建立所述缓存管理模块与所述缓存刷新模块的连接,准备接收全量刷新请求;确认刷新条件,当外围管理系统通过接口调用所述缓存管理模块触发全量缓存刷新时,锁定所述缓存管理模块,拒绝新的全量刷新请求,重置所述第一分区的第一缓存和第二缓存;推送刷新任务,所述缓存管理模块将所述第一分区的第一缓存基础数据缓存的任务信息推送至所述缓存刷新模块;处理任务,所述缓存刷新模块接收到所述第一分区的第一缓存基础数据缓存的任务,根据任务的需要从数据库读取数据,经过处理后序列化至第一分区的第一缓存基础数据缓存库;切换缓存线程,所述缓存管理模块检测到所述第一分区的第一缓存刷新任务完成后,将缓存刷新路由切换至所述第一分区的第二缓存业务缓存层,将所述第一分区的第二缓存业务缓存的任务推送至所述缓存刷新模块;组合数据,所述缓存刷新模块接收到所述第一分区的第二缓存业务数据缓存的任务,根据任务内容从所述第一分区的第一缓存基础数据缓存层读取数据再进行组合,将组合数据序列化至所述第一分区的第二缓存业务数据缓存库;切换缓存,所述缓存管理模块检测到所述第一分区的第二缓存刷新完成后,通过订阅发布组件发布路由切换通知,将所述第一分区和所述第二分区的用途进行切换,释放全量刷新锁;循环刷新缓存,准备接受下一轮全量刷新请求。进一步地,所述推送刷新任务步骤中,所述缓存管理模块将所述第一分区的第一缓存基础数据缓存的任务信息进行细分,通过预设的负载均衡策略将刷新任务推送至所述缓存刷新模块。进一步地,所述切换缓存线程步骤中,所述缓存管理模块将所述第一分区的第二缓存业务缓存的任务进行细分,推送至所述缓存刷新模块。进一步地,所述切换缓存步骤中还包括所述缓存管理模块检测到所述第一分区的第二缓存刷新完成后,触发缓存刷新检查,确认全量缓存刷新并且正确无误后,通过订阅发布组件发布路由切换通知。进一步地,所述确认刷新条件步骤中还包括当外围管理系统通过接口调用所述缓存管理模块触发全量缓存刷新时,检查是否有刷新任务正在进行,确认满足刷新条件后锁定所述缓存管理模块。一种电子设备,包括:处理器;存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括用于执行分布式应用缓存刷新方法。一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行分布式应用缓存刷新方法。相比现有技术,本专利技术的有益效果在于:本专利技术提供分布式应用缓存刷新系统,包括缓存刷新系统、缓存存储单元、消息订阅发布模块;缓存刷新系统由缓存管理模块、缓存刷新模块、缓存路由模块组成。本专利技术涉及一种分布式应用缓存刷新方法。本专利技术还涉及一种电子设备和存储介质,用于执行分布式应用缓存刷新方法。本专利技术的缓存刷新节点服务可以动态横向扩展,可以根据业务的体量选择添加服务器,再结合多线程并发程序以及RedisPipline操作能够大幅度提高缓存刷新速度;缓存分区和分层,缓存分区避免了缓存刷新时对业务应用操作缓存的影响;缓存分层,数据加载路径为DB->L1->L2,复杂的业务缓存基于L1的缓存进行构建,减少数据库读取,大幅度提升L2缓存的构建,大幅度减少缓存构建耗时;开发缓存路由功能组件,对缓存线程池进行预热再切换,避免因缓存分区切换导致的业务抖动。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,并可依照说明书的内容予以实施,以下以本专利技术的较佳实施例并配合附图详细说明如后。本专利技术的具体实施方式由以下实施例及其附图详细给出。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为本专利技术的分布式应用缓存刷新系统示意图;图2为本专利技术的分布式应用缓存刷新方法流程图。具体实施方式下面,结合附图以及具体实施方式,对本专利技术做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合本文档来自技高网...

【技术保护点】
1.分布式应用缓存刷新系统,其特征在于:包括缓存刷新系统、缓存存储单元、消息订阅发布模块;其中,/n所述缓存刷新系统由缓存管理模块、缓存刷新模块、缓存路由模块组成;/n所述缓存管理模块,用于接收缓存重构任务,将全量刷新任务进行拆分、细化、分配、检测,当刷新任务缓存后,发布缓存切换通知,通知缓存路由进行切换;/n所述缓存刷新模块,用于通过所述消息订阅发布模块注册到所述缓存管理模块,获取刷新任务项,进行缓存刷新操作;/n所述缓存路由模块,用于通过所述消息订阅发布模块获取当前缓存分区设置,提前连接于缓存的连接池,根据所述缓存管理模块的通知实时切换缓存引用组;/n所述缓存存储单元,用于将缓存划分为第一分区和第二分区,所述第一分区为应用提供缓存查询服务,所述第二分区用于缓存的全量构建,当缓存刷新完成后,将所述第一分区和所述第二分区的用途进行切换;/n所述消息订阅发布模块,用于服务注册服务与发现,通知信息的订阅与推送。/n

【技术特征摘要】
1.分布式应用缓存刷新系统,其特征在于:包括缓存刷新系统、缓存存储单元、消息订阅发布模块;其中,
所述缓存刷新系统由缓存管理模块、缓存刷新模块、缓存路由模块组成;
所述缓存管理模块,用于接收缓存重构任务,将全量刷新任务进行拆分、细化、分配、检测,当刷新任务缓存后,发布缓存切换通知,通知缓存路由进行切换;
所述缓存刷新模块,用于通过所述消息订阅发布模块注册到所述缓存管理模块,获取刷新任务项,进行缓存刷新操作;
所述缓存路由模块,用于通过所述消息订阅发布模块获取当前缓存分区设置,提前连接于缓存的连接池,根据所述缓存管理模块的通知实时切换缓存引用组;
所述缓存存储单元,用于将缓存划分为第一分区和第二分区,所述第一分区为应用提供缓存查询服务,所述第二分区用于缓存的全量构建,当缓存刷新完成后,将所述第一分区和所述第二分区的用途进行切换;
所述消息订阅发布模块,用于服务注册服务与发现,通知信息的订阅与推送。


2.如权利要求1所述的分布式应用缓存刷新系统,其特征在于:所述缓存刷新模块使用Java多线程技术和RedisPipline操作进行缓存刷新操作。


3.如权利要求2所述的分布式应用缓存刷新系统,其特征在于:所述缓存存储单元采用开源的Redis集群,将Redis缓存划分为第一分区和第二分区。


4.分布式应用缓存刷新方法,其特征在于,包括以下步骤:
初始化模块,初始化缓存管理模块、缓存刷新模块、设置缓存存储单元的第一分区和第二分区,所述第一分区为应用提供缓存查询服务,所述第二分区用于缓存的全量构建;
建立连接,建立所述缓存管理模块与所述缓存刷新模块的连接,准备接收全量刷新请求;
确认刷新条件,当外围管理系统通过接口调用所述缓存管理模块触发全量缓存刷新时,锁定所述缓存管理模块,拒绝新的全量刷新请求,重置所述第一分区的第一缓存和第二缓存;
推送刷新任务,所述缓存管理模块将所述第一分区的第一缓存基础数据缓存的任务信息推送至所述缓存刷新模块;
处理任务,所述缓存刷新模块接收到所述第一分区的第一缓存基础数据缓存的任务,根据任务的需要从数据库读取数据,经过处理后序列化至第一分区的...

【专利技术属性】
技术研发人员:蔡钧
申请(专利权)人:东风日产数据服务有限公司
类型:发明
国别省市:广东;44

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

1