版本更新方法及装置、计算机可读存储介质、处理器制造方法及图纸

技术编号:28941762 阅读:14 留言:0更新日期:2021-06-18 21:47
本发明专利技术公开了一种版本更新方法及装置、计算机可读存储介质、处理器。其中,该更新方法包括:获取预设数据库中记录的所有业务表数据,其中,预设数据库中预先设置有业务明细表和业务总表,业务明细表用于记录每一业务表对应的业务版本号,业务总表记录最新版本号,然后基于所有业务表数据,更新业务明细表和业务总表中的版本号,得到更新结果,之后基于更新结果,判断业务总表中的版本号是否与内存缓存端记录的总版本号一致,若业务总表中的版本号与内存缓存端记录的总版本号不一致,则基于业务总表中的版本号更新内存缓存端的总版本号。本发明专利技术解决了相关技术中由于对数据库和缓存中的数据分开更新,从而导致两者数据不一致的技术问题。

【技术实现步骤摘要】
版本更新方法及装置、计算机可读存储介质、处理器
本专利技术涉及数据更新
,具体而言,涉及一种版本更新方法及装置、计算机可读存储介质、处理器。
技术介绍
目前,已经进入信息时代,如何使内存缓存中的数据与数据库中的数据保持同步是所有使用内存缓存技术必须要解决的问题。在业务系统中,对数据库访问的形式可以根据是否变更数据分为:读访问和写访问,其中,读访问次数明显高于写访问的次数。相关技术中,为了使软件系统的数据库承受更大的性能压力,采取增加一层内存缓存(例如Redis等),使得大量的读请求由内存缓存完成,这样,数据库只处理写请求,可以大幅降低数据库压力。此外,内存缓存数据应与数据库数据保持一致性才可用,现有的保证一致性的更新策略有:1,先更新数据库,再更新缓存;2,先删除缓存,再更新数据库;3,先更新数据库,再删除缓存。这三种策略存在多个弊端:弊端一,可能导致两者数据出现不一致问题,例如,先更新数据库,再更新缓存。若第一步数据库更新成功,第二步更新缓存失败,则两者存在不一致性。这种不一致性会导致数据错乱,业务逻辑依赖数据判断错误,而且此缓存不一致性通常在业务系统中很难发现。弊端二:由于与业务系统高度耦合,对业务系统代码侵入较高。这三种策略通常都是在业务系统中开发响应的更新缓存代码。这种直接耦合在业务系统中的机制,使得业务程序中过于复杂,而且分散在不同的业务功能中,在测试时难以完全覆盖,容易留下质量隐患。弊端三:难以适应缓存服务器水平扩展场景。这三种策略通常都要求缓存服务器是单机。若缓存服务器是多台机器,且机器数量是可以随时动态扩展/收缩的情况下,这将导致以上缓存更新的业务系统代码更加复杂,需要维护大量参数和代码以支持缓存服务器实时动态扩展。同时,还很难保证多个缓存服务器的一致性(例如在其中某台缓存服务器网络存在短暂抖动时)。弊端四:灾备切换等存在长时间缓存大量无法命中。生产环境通常采取多中心多服务器的灾备部署架构。当发生灾备切换时,新的缓存服务器将接管原故障的缓存服务器。由于新的缓存服务器内存中的数据库是初始干净的状态,这时业务系统通过内存缓存时,导致缓存数据大量无法命中,且大量无法命中的情况长时间持续,使得业务系统性能明显降低。当业务系统发现数据无法命中,才从数据库从加载对于数据至缓存中,而且仅在业务系统发现未命中时,才事后被动加载,无法做到提前、主动、批量高效加载,以避免缓存长时间大量无法命中。针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术实施例提供了一种版本更新方法及装置、计算机可读存储介质、处理器,以至少解决相关技术中由于对数据库和缓存中的数据分开更新,从而导致两者数据不一致的技术问题。根据本专利技术实施例的一个方面,提供了一种版本更新方法,应用于业务系统的内存缓存端,所述内存缓存端与预设数据库连接,包括:获取所述预设数据库中记录的所有业务表数据,其中,所述预设数据库中预先设置有业务明细表和业务总表,所述业务明细表用于记录每一业务表对应的业务版本号,所述业务总表记录最新版本号;基于所述所有业务表数据,更新所述业务明细表和所述业务总表中的版本号,得到更新结果;基于所述更新结果,判断所述业务总表中的版本号是否与所述内存缓存端记录的总版本号一致;若所述业务总表中的版本号与所述内存缓存端记录的总版本号不一致,基于所述业务总表中的版本号更新所述内存缓存端的总版本号。可选地,基于所述所有业务表数据,更新所述业务明细表和业务总表中的版本号,得到更新结果的步骤,包括:基于所述所有业务表数据,分析所述预设数据库中是否出现新业务表;若所述预设数据库中出现新业务表,在所述业务明细表中增加新版本号,其中,增加的所述新版本号对应于所述新业务表;若所述新版本号高于所述业务总表记录的版本号,将所述业务总表中的版本号更新为所述新版本号,得到所述更新结果。可选地,在判断所述业务总表中的版本号是否与所述内存缓存端记录的总版本号一致之后,所述版本更新方法还包括:若所述业务总表中的版本号与所述内存缓存端记录的总版本号不一致,采用预设控制线程查询所述业务明细表,得到与所述新版本号对应的所述新业务表;读取所述新业务表存储的数据;将所述新业务表中的数据更新至所述内存缓存端。可选地,基于所述更新结果,判断所述业务总表中的版本号是否与所述内存缓存端记录的总版本号一致的步骤,包括:采用预设控制线程比较所述业务总表中的版本号是否与所述内存缓存端记录的总版本号一致;若所述业务总表中的版本号与所述内存缓存端记录的总版本号一致,则继续根据版本更新策略执行版本刷新操作。可选地,所述内存缓存端中记录有总版本号和业务明细版本号,其中,所述总版本号与所述预设数据库中的业务总表记录的最新版本号一致,所述业务明细版本号与所述预设数据库中的业务明细表记录每一业务表对应的业务版本号一致。可选地,在基于所述业务总表中的版本号更新所述内存缓存端的总版本号之后,所述版本更新方法还包括:采用预设控制线程,基于所述业务总表中的版本号更新所述内存缓存端的总版本号;采用线程控制池,基于所述业务明细表中记录的版本号更新所述内存缓存端的总版本号。可选地,所述版本更新方法还包括:判断所述内存缓存端是否进入灾备切换模式;若所述内存缓存端进入所述灾备切换模式,则采用预设控制线程自动向新服务器加载所述内存缓存端当前已缓存的全部数据。根据本专利技术实施例的另一方面,还提供了一种版本更新装置,应用于业务系统的内存缓存端,所述内存缓存端与预设数据库连接,包括:获取单元,用于获取所述预设数据库中记录的所有业务表数据,其中,所述预设数据库中预先设置有业务明细表和业务总表,所述业务明细表用于记录每一业务表对应的业务版本号,所述业务总表记录最新版本号;第一更新单元,用于基于所述所有业务表数据,更新所述业务明细表和所述业务总表中的版本号,得到更新结果;判断单元,用于基于所述更新结果,判断所述业务总表中的版本号是否与所述内存缓存端记录的总版本号一致;第二更新单元,用于若所述业务总表中的版本号与所述内存缓存端记录的总版本号不一致时,基于所述业务总表中的版本号更新所述内存缓存端的总版本号。可选地,所述第一更新单元包括:第一分析模块,用于基于所述所有业务表数据,分析所述预设数据库中是否出现新业务表;第一增加模块,用于若所述预设数据库中出现新业务表,在所述业务明细表中增加新版本号,其中,增加的所述新版本号对应于所述新业务表;第一更新模块,用于若所述新版本号高于所述业务总表记录的版本号时,将所述业务总表中的版本号更新为所述新版本号,得到所述更新结果。可选地,所述版本更新装置还包括:第一输出模块,用于在判断所述业务总表中的版本号是否与所述内存缓存端记录的总版本号一致之后,若所述业务总表中的版本号与所述内存缓存端记录的总版本号不一致时,采用预设控制线程查询所述业务明细表,得到与所述新版本号对应的所述新业务表;第一读取模块,用于读取所述新业务表存储的数据;第二更新模块,用于将所述新业务表中的数据更新至所述内存缓存端。可选地本文档来自技高网
...

【技术保护点】
1.一种版本更新方法,其特征在于,应用于业务系统的内存缓存端,所述内存缓存端与预设数据库连接,包括:/n获取所述预设数据库中记录的所有业务表数据,其中,所述预设数据库中预先设置有业务明细表和业务总表,所述业务明细表用于记录每一业务表对应的业务版本号,所述业务总表记录最新版本号;/n基于所述所有业务表数据,更新所述业务明细表和所述业务总表中的版本号,得到更新结果;/n基于所述更新结果,判断所述业务总表中的版本号是否与所述内存缓存端记录的总版本号一致;/n若所述业务总表中的版本号与所述内存缓存端记录的总版本号不一致,基于所述业务总表中的版本号更新所述内存缓存端的总版本号。/n

【技术特征摘要】
1.一种版本更新方法,其特征在于,应用于业务系统的内存缓存端,所述内存缓存端与预设数据库连接,包括:
获取所述预设数据库中记录的所有业务表数据,其中,所述预设数据库中预先设置有业务明细表和业务总表,所述业务明细表用于记录每一业务表对应的业务版本号,所述业务总表记录最新版本号;
基于所述所有业务表数据,更新所述业务明细表和所述业务总表中的版本号,得到更新结果;
基于所述更新结果,判断所述业务总表中的版本号是否与所述内存缓存端记录的总版本号一致;
若所述业务总表中的版本号与所述内存缓存端记录的总版本号不一致,基于所述业务总表中的版本号更新所述内存缓存端的总版本号。


2.根据权利要求1所述的方法,其特征在于,基于所述所有业务表数据,更新所述业务明细表和业务总表中的版本号,得到更新结果的步骤,包括:
基于所述所有业务表数据,分析所述预设数据库中是否出现新业务表;
若所述预设数据库中出现新业务表,在所述业务明细表中增加新版本号,其中,增加的所述新版本号对应于所述新业务表;
若所述新版本号高于所述业务总表记录的版本号,将所述业务总表中的版本号更新为所述新版本号,得到所述更新结果。


3.根据权利要求2所述的方法,其特征在于,在判断所述业务总表中的版本号是否与所述内存缓存端记录的总版本号一致之后,所述版本更新方法还包括:
若所述业务总表中的版本号与所述内存缓存端记录的总版本号不一致,采用预设控制线程查询所述业务明细表,得到与所述新版本号对应的所述新业务表;
读取所述新业务表存储的数据;
将所述新业务表中的数据更新至所述内存缓存端。


4.根据权利要求1所述的方法,其特征在于,基于所述更新结果,判断所述业务总表中的版本号是否与所述内存缓存端记录的总版本号一致的步骤,包括:
采用预设控制线程比较所述业务总表中的版本号是否与所述内存缓存端记录的总版本号一致;
若所述业务总表中的版本号与所述内存缓存端记录的总版本号一致,则继续根据版本更新策略执行版本刷新操作。


5.根据权利要求...

【专利技术属性】
技术研发人员:王真师龙华
申请(专利权)人:中国邮政储蓄银行股份有限公司
类型:发明
国别省市:北京;11

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

1