一种主推式序列化缓存管理方法及系统与流程

文档序号:11864724阅读:242来源:国知局
一种主推式序列化缓存管理方法及系统与流程

本发明涉及分布式集群系统缓存技术领域,特别是涉及一种主推式序列化缓存管理方法及系统。



背景技术:

在企业级集群、分布式部署的多系统协作场景下,由于系统间配置不一致,经常导致业务处理错误问题的出现。且在传统的分散管理配置过程中,手工修改、文件同步、定时轮询等方式导致系统间配置生效时间之间存在差异。

现有技术中,使用memcached等外部缓存服务器集中保存缓存内容,将持久化存储的配置内容按约定格式读取并更新到缓存服务器,业务系统在需要时实时从缓存服务器中读取。

业务系统直接读取持久化的配置内容,并向消息服务器订阅其关注配置的变化情况,当持久化配置发生变更时,消息服务器向订阅方(业务系统)发起通知,业务系统发起缓存更新操作,重新读取最新的持久化配置内容。

然而,随着业务系统集群数量的增加,外部缓存系统的引入不仅将加大系统部署的复杂度,且与业务系统的结合、更新需要定制编码也增加了系统的耦合度。另外,消息订阅式的更新策略可以保证缓存更新的及时性,但各业务系统同时向持久化存储发起访问请求会导致其压力暴增。



技术实现要素:

本发明的目的是提供一种主推式序列化缓存管理方法及系统,目的在于解决现有技术通过引入外部缓存系统加大系统部署的复杂度、维护工作量大、缓存更新不及时的问题。

为解决上述技术问题,本发明提供一种主推式序列化缓存管理方法,包括:

预先在管理服务器与组件服务器之间建立双向分布式调用关系,所述管理服务器与所述组件服务器之间以序列化对象的方式进行传输;

所述管理服务器在检测到数据变更后,更新本地缓存;

所述管理服务器按照预设顺序向已注册的组件服务器逐一推送更新缓存的信息。

可选地,所述管理服务器按照预设顺序向已注册的组件服务器逐一推送更新缓存的信息包括:

所述管理服务器通过比较本地缓存前后分别记录的hashCode校验码,来判断当前变更是否为实质变更;仅当所述校验码不一致时,向相应的组件服务器发送更新缓存的信息。

可选地,在所述管理服务器通过比较本地缓存前后分别记录的hashCode校验码,来判断当前变更是否为实质变更之前还包括:

获取文件配置的上次更新时间。

可选地,所述管理服务器在检测到数据变更后,更新本地缓存包括:

当多个缓存之间存在依赖关系时,对依赖关系进行排序,采用被依赖缓存先更新的方式进行更新。

可选地,还包括:

在检测到数据存在异常情况时,发出预警的提示信息。

本发明还提供了一种主推式序列化缓存管理系统,包括:

建立模块,用于预先在管理服务器与组件服务器之间建立双向分布式调用关系,所述管理服务器与所述组件服务器之间以序列化对象的方式进行传输;

更新模块,用于在检测到数据变更后,更新本地缓存;

推送模块,用于按照预设顺序向已注册的组件服务器逐一推送更新缓存的信息。

可选地,所述推送模块具体用于:

通过比较本地缓存前后分别记录的hashCode校验码,来判断当前变更是否为实质变更;当所述校验码一致时,不需要向相应的组件服务器发送更新缓存的信息。

可选地,还包括:

获取模块,用于在所述管理服务器通过比较本地缓存前后分别记录的hashCode校验码,来判断当前变更是否为实质变更之前,获取文件配置的上次更新时间。

可选地,所述更新模块具体用于:

当多个缓存之间存在依赖关系时,对依赖关系进行排序,采用被依赖缓存先更新的方式进行更新。

可选地,还包括:

预警模块,用于在检测到数据存在异常情况时,发出预警的提示信息。

本发明所提供的主推式序列化缓存管理方法及系统,预先在管理服务器与组件服务器之间建立双向分布式调用关系,管理服务器与组件服务器之间以序列化对象的方式进行传输;管理服务器在检测到数据变更后,更新本地缓存,按照预设顺序向已注册的组件服务器逐一推送更新缓存的信息。本发明所提供的主推式序列化缓存管理方法及系统,不需要增加额外的系统部署节点,不需要加入新的缓存技术,不需要额外的学习成本。并且,本申请缓存更新采用实时主推、序列化对象的方式统一管理内存,保证缓存对象在所有子系统中完全一致,且不存在时间差。管理服务器一次更新后其他组件服务器可直接使用,不需要进行转换处理,避免频繁重复更新带来的访问压力。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明所提供的主推式序列化缓存管理方法的一种具体实施方式的流程图;

图2为本发明所提供的主推式序列化缓存管理方法的另一种具体实施方式的流程图;

图3为本发明实施例提供的主推式序列化缓存管理系统的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明所提供的主推式序列化缓存管理方法的一种具体实施方式的流程图如图1所示,该方法包括:

步骤S101:预先在管理服务器与组件服务器之间建立双向分布式调用关系,所述管理服务器与所述组件服务器之间以序列化对象的方式进行传输;

需要指出的是,本发明可具体通过rmi与httpinvoker,使得管理服务器与组件服务器建立双向分布式调用关系。组件服务器通过rmi向管理服务器注册、请求缓存、文件,同时也可接收管理服务器发送的更新通知。

管理服务器与组件服务器之间以序列化对象的方式进行传输,程序开发过程中可完全忽略对方的存在直接进行调用。其中,序列化对象是将运行中的对象转化为可存储或可传输的形式的过程,然后可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

步骤S102:所述管理服务器在检测到数据变更后,更新本地缓存;

具体地,管理服务器可启动独立的线程,监控数据库配置、文件配置的变更情况,发现变更后先更新本地缓存。

步骤S103:所述管理服务器按照预设顺序向已注册的组件服务器逐一推送更新缓存的信息。

本实施例中,管理服务器可按照注册客户端列表,通过httpinvoker逐一推送已注册的组件服务器更新缓存。

本步骤中推送的方式可以具体为:通过主推全文更新的方式。当然,还可以采用主推索引+拉取全文结合的方式,以两步式完成全文更新,这均不影响本发明的实现。

本发明所提供的主推式序列化缓存管理方法,预先在管理服务器与组件服务器之间建立双向分布式调用关系,管理服务器与组件服务器之间以序列化对象的方式进行传输;管理服务器在检测到数据变更后,更新本地缓存,按照预设顺序向已注册的组件服务器逐一推送更新缓存的信息。本发明所提供的主推式序列化缓存管理方法,不需要增加额外的系统部署节点,不需要加入新的缓存技术,不需要额外的学习成本。并且,本申请缓存更新采用实时主推、序列化对象的方式统一管理内存,保证缓存对象在所有子系统中完全一致,且不存在时间差。管理服务器一次更新后其他组件服务器可直接使用,不需要进行转换处理,避免频繁重复更新带来的访问压力。

其中,本申请以接入注册的方式可视化管理集群内的所有业务系统。具体地,本申请以图表的方式对缓存的更新进行显示,更新节点及时间、结果一目了然,这样能够解决集群升级遗漏时不能及时发现的问题。

在上述实施例的基础上,本发明所提供的主推式序列化缓存管理方法在进行更新的过程还可以进一步对校验码进行判断,以验证是否发生了实质变更。请参照图2本发明所提供的主推式序列化缓存管理方法的另一种具体实施方式的流程图,本申请实施例的步骤可以具体包括:

步骤S201:预先在管理服务器与组件服务器之间建立双向分布式调用关系,所述管理服务器与所述组件服务器之间以序列化对象的方式进行传输;

步骤S202:所述管理服务器在检测到数据变更后,更新本地缓存;

步骤S203:所述管理服务器通过比较本地缓存前后分别记录的hashCode校验码,来判断当前变更是否为实质变更;仅当所述校验码不一致时,向相应的组件服务器发送更新缓存的信息。

这样,当校验码一致时,则不需要向相应的组件服务器发送更新缓存的信息。

ICache提供hashCode校验码,管理服务器通过刷新本地缓存前后分别记录的hashCode来判断是否发生实质变更,当双方校验码一致时不需通知组件服务器进行更新。

对于文件配置,在检查hashCode之前还包括:获取文件配置的上次更新时间,通过判断文件上次更新时间,以减少不必要的文件读写操作。

在上述任一实施例的基础上,本发明所提供的主推式序列化缓存管理方法还提供了order排序,当多个缓存之间存在依赖关系时,通过order+1的方式进行依赖排序,通过被依赖缓存先刷新的方式保证所有缓存数据的一致性。上述步骤管理服务器在检测到数据变更后,更新本地缓存可以具体为:

当多个缓存之间存在依赖关系时,对依赖关系进行排序,采用被依赖缓存先更新的方式进行更新。

本申请实施例通过order处理配置依赖关系,确保相关联配置的整体完整性。

优选地,本申请还可以进一步包括:

在检测到数据存在异常情况时,发出预警的提示信息。

本实施例可通过对图表可视化的数据的检测,在数据超过预设阈值或不等于预设数值时,可与外接预警系统相连进行实时告警通知。

下面对本发明实施例提供的主推式序列化缓存管理系统进行介绍,下文描述的主推式序列化缓存管理系统与上文描述的主推式序列化缓存管理方法可相互对应参照。

图3为本发明实施例提供的主推式序列化缓存管理系统的结构框图,参照图3主推式序列化缓存管理系统可以包括:

建立模块100,用于预先在管理服务器与组件服务器之间建立双向分布式调用关系,所述管理服务器与所述组件服务器之间以序列化对象的方式进行传输;

更新模块200,用于在检测到数据变更后,更新本地缓存;

推送模块300,用于按照预设顺序向已注册的组件服务器逐一推送更新缓存的信息。

作为一种具体实施方式,本发明所提供的主推式序列化缓存管理系统中,推送模块具体用于:

通过比较本地缓存前后分别记录的hashCode校验码,来判断当前变更是否为实质变更;当所述校验码一致时,不需要向相应的组件服务器发送更新缓存的信息。

作为一种具体实施方式,本发明所提供的主推式序列化缓存管理系统还可以进一步包括:

获取模块,用于在所述管理服务器通过比较本地缓存前后分别记录的hashCode校验码,来判断当前变更是否为实质变更之前,获取文件配置的上次更新时间。

在上述任一实施例的基础上,本发明中主推式序列化缓存管理系统中更新模块具体用于:

当多个缓存之间存在依赖关系时,对依赖关系进行排序,采用被依赖缓存先更新的方式进行更新。

优选地,本发明还可以进一步包括:

预警模块,用于在检测到数据存在异常情况时,发出预警的提示信息。

本发明所提供的主推式序列化缓存管理系统,预先将管理服务器与组件服务器之间建立双向分布式调用关系,管理服务器与组件服务器之间以序列化对象的方式进行传输;管理服务器在检测到数据变更后,更新本地缓存,按照预设顺序向已注册的组件服务器逐一推送更新缓存的信息。

本发明通过序列化对象的方式统一管理缓存,包括缓存的查询、筛选、组织等处理过程。确保所有接入的业务组件服务器中的缓存使用完全一致;主配置服务器一次更新后其他组件服务可直接使用,避免频繁重复更新带来的访问压力;

另外,本发明通过消息主推的方式确保所有接入的业务组件服务器中的配置缓存实时更新,不存在更新时间差。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的主推式序列化缓存管理方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1