CN101188566B - 一种集群环境下数据缓存同步的方法及系统 - Google Patents
一种集群环境下数据缓存同步的方法及系统 Download PDFInfo
- Publication number
- CN101188566B CN101188566B CN2007101948730A CN200710194873A CN101188566B CN 101188566 B CN101188566 B CN 101188566B CN 2007101948730 A CN2007101948730 A CN 2007101948730A CN 200710194873 A CN200710194873 A CN 200710194873A CN 101188566 B CN101188566 B CN 101188566B
- Authority
- CN
- China
- Prior art keywords
- server node
- cache object
- message body
- cache
- order parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 184
- 230000003139 buffering effect Effects 0.000 title claims description 26
- 230000001360 synchronised effect Effects 0.000 claims abstract description 35
- 230000015572 biosynthetic process Effects 0.000 claims description 26
- 230000008878 coupling Effects 0.000 claims description 19
- 238000010168 coupling process Methods 0.000 claims description 19
- 238000005859 coupling reaction Methods 0.000 claims description 19
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 description 6
- 239000011800 void material Substances 0.000 description 5
- 239000002699 waste material Substances 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种集群环境下数据缓存同步的方法,包括:在服务器节点中创建存储队列;当某个服务器节点的缓存对象更新成功后,将更新该缓存对象的方法名及有序参数列表置于所述队列中等待发送;按预置时间阈值检查待发送队列,将队列中更新缓存对象的方法名及有序参数列表打包成消息体;将打包消息体发送至所有订阅所述打包消息体的其它服务器节点;其它服务器节点接收所述打包消息体后,从所述打包消息体中获取所述方法名及有序参数列表;根据所述方法名和有序参数列表在本地服务器节点匹配相应的缓存对象更新方法;执行所述匹配后的缓存对象更新方法更新本地服务器节点的缓存对象。提高了缓存更新效率,节省了网络资源及计算机系统资源。
Description
技术领域
本发明涉及数据库应用技术,特别是涉及一种集群环境下数据缓存同步的方法及系统。
背景技术
在数据库应用系统中,为了满足大型应用的性能需求,在应用系统的服务端通常有两种技术解决方案:集群技术和缓存技术。其中,所述集群技术是使单独服务器实现物理和程序上的连接,并在服务器之间进行协同通讯,以使它们能够执行共同的任务;即使某一台服务器停止运行,故障应急进程会自动将该服务器的工作负载转移至另一台服务器,以保证提供持续不断的服务。因此,集群技术可以通过多台服务器并行计算提升系统的计算能力。为了提高系统的响应速度,通常在应用中引入缓存技术。所述缓存技术是指通过利用已有的计算结果,避免重复计算,全面降低系统的压力。当一个应用部署在集群环境下的不同服务器节点时,每个服务器节点只负责维护本地Java虚拟机中的缓存对象。这样很容易导致不同服务器节点下的缓存对象版本不一致,从而导致用户请求的数据是已经过期的无用的数据。
为了解决集群环境下缓存对象版本不一致的问题,通常是通过广播消息的机制通知其它节点更新本地缓存从而达到同步的目的。
在现有技术中,集群环境下缓存同步的方法主要有以下两种:
一、广播消息使其它节点的缓存数据无效。
参照图1,当位于集群中某个服务器节点下缓存中的对象发生改变时,这个服务器节点将发送消息通知所有订阅此消息的其它服务器节点,其它服务器节点接收到此消息后,将清空本地缓存区域中的对象,当有请求再次访问相应的缓存区域中的对象时,如果缓存中不存在此对象,将会自动从后台重新加载数据到缓存中来保证缓存同步。单独采用此种方法主要存在以下问题:
1、很多情形下只是更新缓存区域的一个或多个缓存对象,被更新的缓存对象粒度也非常小。而其它服务器节点接收到消息后会从数据库重新查询最新数据更新整个缓存区域,当缓存区域的对象非常多时,会非常消耗性能,浪费计算机系统资源。
2、当缓存更新的频率较高时,其它服务器节点会接收到很多消息,假设执行N次查询从数据库获取最新数据更新整个缓存区域,则此时前N-1次的查询都是多余的,因此对于计算机系统资源也是一个极大的浪费。
二、在消息体中附载要更新的缓存对象。
参照图2、当位于集群中某个服务器节点缓存中的对象发生改变时,这台服务器将被更新的缓存对象附载在消息体上通知所有订阅此消息体的其它服务器节点,其它服务器节点接收到此消息体后,从消息体中取得附载的被更新的缓存对象更新本地的缓存区域。单独采用此方法主要存在以下问题:
1、当被更新的缓存对象粒度较大时,缓存对象被附载在消息体中传输,会严重影响网络带宽,浪费网络资源,导致性能低下。
2、当消息发送的频率较高时,会大量的广播消息,严重的情况下会导致网络堵塞,极大的浪费了网络资源。
综上所述,单独采用每种现有技术方案解决缓存同步问题,都未能同时很好的解决其存在的各种缺点。
发明内容
本发明所要解决的技术问题是提供一种集群环境下数据缓存同步的方法及系统,提高缓存效率,节约计算机系统资源和网络资源。
在集群环境下,每个服务器节点部署的Web应用程序代码基本相同,从而保证了在各个服务器节点中更新缓存的接口及其接口实现的代码完全一致,例如,在某一个服务器节点存在的缓存更新方法在其它服务器节点也必然存在。
基于上述事实,为了解决上述问题,本发明公开了一种集群环境下数据缓存同步的方法,集群环境下的每个服务器节点部署的Web应用程序代码相同,各个服务器节点中更新缓存的接口及其接口实现的代码完全一致,所述方法包括:
当某个服务器节点的缓存对象更新成功后,将更新该缓存对象的方法名及有序参数列表打包成消息体;
将打包消息体发送至所有订阅所述打包消息体的其它服务器节点;
其它服务器节点接收所述打包消息体后,从所述打包消息体中获取所述方法名及有序参数列表;
根据所述方法名和有序参数列表在本地服务器节点匹配相应的缓存对象更新方法;
执行所述匹配后的缓存对象更新方法更新本地服务器节点的缓存对象。
本发明还公开了另一种集群环境下数据缓存同步的方法,集群环境下的每个服务器节点部署的Web应用程序代码相同,各个服务器节点中更新缓存的接口及其接口实现的代码完全一致,所述方法包括:
在服务器节点中创建存储队列;
当某个服务器节点的缓存对象更新成功后,将更新该缓存对象的方法名及有序参数列表置于所述队列中等待发送;
按预置时间阈值检查待发送队列,将队列中更新缓存对象的方法名及有序参数列表打包成消息体;
将打包消息体发送至所有订阅所述打包消息体的其它服务器节点;
其它服务器节点接收所述打包消息体后,从所述打包消息体中获取所述方法名及有序参数列表;
根据所述方法名和有序参数列表在本地服务器节点匹配相应的缓存对象更新方法;
执行所述匹配后的缓存对象更新方法更新本地服务器节点的缓存对象。
其中,前述两种方法所述匹配缓存更新方法的具体步骤为:
根据方法名获取缓存接口中的所有同名方法;
根据有序参数列表遍历所述全部同名方法;
获取参数类型完全匹配的缓存更新方法。
进一步,当某个服务器节点的缓存对象更新成功后,还包括:
判断是否需要同步其它服务器节点的缓存对象。
进一步,还包括:
判断所有已发送的消息体是否已被成功处理。
其中,所述判断的具体实现过程为:
将更新缓存对象的方法名及有序参数列表打包成消息体后,生成消息体ID;
当服务器节点的缓存对象同步成功后将所述打包消息体的状态信息及所述消息体ID对应存储在数据库中;
按照预置的时间间隔根据所述消息体ID查询所述数据库获取消息体的状态信息;
判断消息体是否已被集群中的其它所有服务器节点成功处理;
重新向其它所有服务器节点发送所述处理失败的消息体,完成其它所有服务器节点缓存对象的同步更新;
如果其它服务器节点都已处理成功则删除所述数据库中已被成功处理的消息记录。
本发明还公开了一种集群环境下数据缓存同步的系统,集群环境下的每个服务器节点部署的Web应用程序代码相同,各个服务器节点中更新缓存的接口及其接口实现的代码完全一致,所述系统包括:
打包单元,用于将更新缓存对象的方法名及有序参数列表打包成消息体;
发送单元,用于将打包消息体发送至其它服务器节点;
获取单元,用于从消息体中获取更新缓存对象的方法名及有序参数列表;
匹配单元,用于根据更新缓存对象的方法名和有序参数列表匹配相应的缓存更新方法;
更新单元,用于执行匹配后的缓存对象更新方法更新本地服务器节点的缓存对象。
本发明还公开了另一种集群环境下数据缓存同步的系统,集群环境下的每个服务器节点部署的Web应用程序代码相同,各个服务器节点中更新缓存的接口及其接口实现的代码完全一致,所述系统包括:
队列创建单元,用于在服务器节点中创建存储队列;
置入单元,用于将更新缓存对象的方法名及有序参数列表置于所述队列中;
打包单元,用于将队列中更新缓存对象的方法名及有序参数列表打包成消息体;
发送单元,用于将打包消息体发送至其它服务器节点;
获取单元,用于从消息体中获取更新缓存对象的方法名及有序参数列表;
匹配单元,用于根据更新缓存对象的方法名和有序参数列表匹配相应的缓存更新方法;
更新单元,用于执行匹配后的缓存对象更新方法更新本地服务器节点的缓存对象。
其中,前述两种系统所述匹配单元包括:
第一获取单元,用于根据方法名获取缓存接口中的所有同名方法;
遍历单元,用于根据有序参数列表遍历所述全部同名方法;
第二获取单元,用于获取与参数类型完全匹配的缓存更新方法。
进一步,还包括:
第一判断单元,用于判断是否需要同步其它服务器节点的缓存对象。
进一步,还包括:
第二判断单元,用于判断所有已发送的消息体是否已被成功处理。
其中,所述第二判断单元包括:
ID生成单元,用于在方法名及有序参数列表打包成消息体后,生成消息体ID;
存储单元,用于在服务器节点的缓存对象同步成功后,将消息体的状态信息及消息体ID对应存储在数据库中;
第三获取单元,用于根据消息体ID查询数据库获取消息体的状态信息;
第三判断单元,用于判断消息体是否被集群中的其它所有服务器节点成功处理;
重发送更新单元,如果有任一个服务器节点未成功处理则重新发送所述处理失败的消息体,完成其它所有服务器节点缓存对象的同步更新;
删除单元,用于删除数据库中已被其它所有服务器节点成功处理的消息记录。
与现有技术相比,本发明具有以下优点:
本发明将更新缓存对象的各方法名及有序参数列表附载在消息体上发送给所有订阅此消息体的接收端进行处理,其它服务器节点接收到消息体后将执行相同的方法进行缓存的同步更新。本发明会根据更新缓存的方法名决定采取适合具体应用场景的不同缓存更新方法,充分发挥了各种缓存更新方法的优势。
同时,为了避免现有技术中每次对缓存对象的更新都会广播消息而影响网络传输的性能,浪费网络资源,本发明通过设置存储队列,每间隔一个固定的时间段,自动将队列中的所有更新缓存对象的方法名打包在消息体中,再发送至其它服务器节点,可以大大降低消息发送的频率,从而带来性能的极大提升,节省了网络资源及计算机资源。
附图说明
图1是现有技术中广播消息使其它节点的缓存对象无效的示意图;
图2是现有技术中在消息体中附载要更新的缓存对象进行更新的示意图;
图3是本发明缓存对象同步的示意图;
图4是本发明一种集群环境下数据缓存同步方法第一实施例的流程图;
图5是本发明一种集群环境下数据缓存同步方法第二实施例的流程图;
图6是图5中所述步骤507中匹配缓存更新方法详细步骤的流程图;
图7是本发明一种集群环境下数据缓存同步方法第二实施例中判断步骤的流程图;
图8是本发明一种集群环境下数据缓存同步系统第一实施例的结构框图。
具体实施方式
在集群环境下,每个服务器节点部署的Web应用程序代码基本相同,从而保证了在各个服务器节点中更新缓存的接口及其接口实现的代码完全一致,例如,在某一个服务器节点存在的缓存更新方法在其它服务器节点也必然存在。
基于上述事实,参照图3,本发明的核心思想是:当某个服务器节点的缓存对象发生改变时,根据缓存同步策略判断是否需要同步其它服务器节点的缓存对象。如果需要,所述服务器节点将更新缓存对象的方法名及有序参数列表打包并附载在消息体上发送至所有订阅此消息体的其它服务器节点。其它服务器节点接收所述消息体后,从消息体中获取所述更新缓存对象的方法名及有序参数列表,再根据所述方法名及有序参数列表从本地获取匹配的方法更新本地服务器节点的缓存对象,达到缓存同步的目的。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图4,示出了本发明一种集群环境下数据缓存同步方法第一实施例的流程图,包括步骤:
步骤401、当某个服务器节点的缓存对象更新成功后,将更新该缓存对象的方法名及有序参数列表打包成消息体。
步骤402、将打包消息体发送至所有订阅所述打包消息体的其它服务器节点。
步骤403、其它服务器节点接收所述打包消息体后,从所述打包消息体中获取所述方法名及有序参数列表;
其它服务器节点接收所述服务器节点发送的附载有更新缓存对象的方法名及有序参数列表的消息体后,从消息体中获取更新缓存对象的方法名及有序参数列表。
步骤404、根据所述方法名和有序参数列表在本地服务器节点匹配相应的缓存对象更新方法;
步骤405、执行所述匹配后的缓存对象更新方法更新本地服务器节点的缓存对象。
参照图5,示出了本发明一种集群环境下数据缓存同步方法第二实施例的流程图,包括步骤:
步骤501、在服务器节点中创建存储队列,进入步骤503。
步骤503、当某个服务器节点的缓存对象更新成功后,将所述更新缓存对象的方法名及有序参数列表置于所述队列中等待发送。
本发明所述实施例采用AOP(面向方面编程)技术透明地拦截了对缓存对象更新的所有方法,将更新缓存对象的方法名及有序参数列表置于队列中等待发送至其它服务器节点。
进一步,在步骤501和步骤503之间还可以包括步骤502、判断是否需要同步其它服务器节点的缓存对象。
当某个服务器节点的缓存对象发生改变时,根据缓存同步策略判断是否需要同步其它服务器节点的缓存对象。增加步骤502的目的是为了避免不必要的消息发送带来的性能损耗,提高网络资源的利用率。
通常,Web应用程序会在应用服务器启动时初始化本服务器节点缓存区域中的对象。而现有技术一般不能配置任何自定义的缓存同步策略,此时也会广播消息进行缓存更新,但应用服务器启动的过程其实就是把本地缓存区域同步的过程,并不是执行任何具体的业务操作导致的缓存对象的更新,因此此时广播消息进行缓存更新毫无意义并且会极大的影响程序的性能,甚至可能会导致严重异常。因此,本发明所述实施例优选采用的缓存同步策略是根据WEB应用是否已经启动来决定是否需要进行缓存更新来避免不必要的消息发送带来的性能损耗和网络资源的浪费。
步骤504、按预置时间阈值检查待发送队列,将队列中更新缓存对象的方法名及有序参数列表打包成消息体。
所述时间阈值可以根据实际需要预先设定,可以是1s、10s、30s、60s等等,本发明不对此进行限定。
为了避免现有技术中每次对缓存对象的更新都会发送消息而影响网络传输的性能。本发明所述实施例通过创建一个队列,每间隔一个固定的时间段,自动把队列中的所有更新缓存对象的方法名打包在消息体中,再发送至其它服务器节点。通过所述机制可以大大的降低消息发送的频率,节约了网络资源及计算机资源,从而带来性能的提升。
步骤505、将打包消息体发送至所有订阅所述消息的其它服务器节点,进入步骤506。
步骤506、从消息体中获取更新缓存对象的方法名及有序参数列表。
其它服务器节点接收所述服务器节点发送的附载有更新缓存对象的方法名及有序参数列表的消息体后,从消息体中获取更新缓存对象的方法名及有序参数列表。
步骤507、根据更新缓存对象的方法名和有序参数列表在本地服务器节点匹配相应的缓存更新方法。
步骤508、执行所述匹配后的缓存更新方法更新本地服务器节点的缓存对象。
参照图6,示出了步骤507中所述匹配缓存更新方法详细步骤的流程图,包括:
步骤5071、根据方法名获取缓存接口中的所有同名方法。
从消息体中获取方法名及有序参数列表后,根据方法名获取缓存接口中的所有同名方法。
步骤5072、根据有序参数列表遍历所述全部同名方法。
步骤5073、获取参数类型完全匹配的缓存更新方法。
本发明所述实施例通过拦截更新缓存对象的所有方法,并将更新缓存对象的方法名及有序参数列表附载在消息体上发送给所有订阅此消息的接收端进行处理,其它服务器节点接收到消息后在本地服务器节点执行匹配的方法更新缓存对象。本发明实施例根据更新缓存的方法决定是采取“自动从数据库重新加载数据更新缓存对象”还是“在消息体中附载要更新的缓存对象来更新缓存”或者其它的更新方法。根据具体的应用场景选择合适的方法来更新缓存对象,而不是单独固定的采用某一种方法来更新缓存对象,充分发挥各种方法的优点,提高了缓存对象更新的效率,节约了网络资源和计算机系统资源。
下面对本发明实施例中优选的几种更新缓存对象的方法进行介绍:
1、自动从数据库重新加载数据更新缓存可以调用如下方法:
| public Object getCacheObject(Object cacheKey,boolean fromCache,ICacheLoaders cacheLoaders,String groupName,String regionName)throws CachingException; |
其它服务器节点接收带有此方法名的消息体后,根据从消息体中获取的方法名即cacheLoaders参数自动从数据库加载最新数据更新缓存。
2、在消息体中附载要更新的缓存对象来更新缓存可以调用如下方法:
| public void putCacheObject(Object cacheKey,Object cacheObject)throws CachingException; |
| public void putCacheObject(Object cacheKey,Object cacheObject,String groupName,String regionName)throws CachingException;public void putCacheObject(Object cacheKey,Object cacheObject,String regionName)throws CachingException; |
服务器节点在接收到此消息后将会根据cacheObject参数来更新本地缓存区域中的缓存对象。
3、情况指定缓存区域中的缓存对象可以调用如下方法:
| public void clear()throws CachingException;public void clear(String regionName)throws CachingException; |
服务器节点根据regionName参数来决定清空本地缓存具体区域中的所有缓存对象。
在本发明一种集群环境下数据缓存同步方法的第二实施例中,增加一个判断所有已发送消息体是否被成功处理的步骤。如果由于网络暂时中断或其它因素导致消息发送失败,通过本实施例所述技术方案重新发送消息来保证消息处理及缓存同步的正确性。
参照图7,示出了本发明所述第二实施例中判断步骤的流程图,包括:
步骤701、生成消息体ID。
在将队列中更新缓存对象的方法名及有序参数列表打包成消息体后,生成消息体ID。
步骤702、当服务器节点的缓存对象同步成功后将消息体的状态信息及消息体ID对应存储在数据库中。
在执行匹配后的缓存更新方法同步本地缓存,更新本地服务器节点的缓存对象后,将消息体的状态信息和消息体ID对应存储在数据库中。所述消息体的状态信息包括时间戳、信息处理成功标记等等,通过所述消息体的状态信息可以知道所述消息体被服务器节点的处理情况。
步骤703、按照预置的时间间隔根据消息体ID查询数据库获取消息体的状态信息。
在步骤702中,已经将消息体ID与消息体的状态信息对应存储,因此能实现通过消息ID获取消息体的状态信息。所述时间间隔可以根据实际需要以及对性能的要求预置,可以是任意时间间隔,本发明不对此进行限定。
步骤704、判断消息体是否被集群中的其它所有服务器节点成功处理,如果是则进入步骤706,否则进入步骤705。
根据与消息体ID对应的状态信息即可知道对应的消息体被集群中服务器节点的处理情况。
步骤705、重新向其它所有服务器节点发送所述处理失败的消息体,完成其它所有服务器节点缓存对象的同步更新。
如果任何一台服务器节点没有处理成功并且该消息体发送的次数没有超过预定的阈值,则重新向其它所有服务器节点广播所述处理失败的消息体,其它服务器节点接收到该重新发送的消息体后,判断是否已成功处理该消息体,如果未成功处理,则重新处理该消息体完成该服务器节点缓存对象的同步更新并更新数据库中该消息体的状态信息,如果已成功处理,则放弃处理该消息体。
步骤706、删除数据库中已被其它所有服务器节点成功处理的消息记录。
如果消息体已被处理成功,说明服务器节点已经完成缓存对象的更新。为了节约计算机系统资源,可以将存储在数据库中的消息体ID及对应的状态信息除。
参照图8,示出了本发明一种集群环境下数据缓存同步系统第一实施例的结构框图,包括:
队列创建单元801、用于在服务器节点中创建存储队列。
置入单元802、用于将更新缓存对象的方法名及有序参数列表置于所述队列中。
打包单元803、用于将队列中更新缓存对象的方法名及有序参数列表打包成消息体。
发送单元804、用于将打包消息体发送至其它服务器节点。
获取单元805、用于从消息体中获取更新缓存对象的方法名及有序参数列表。
匹配单元806、用于根据更新缓存对象的方法名和有序参数列表匹配相应的缓存更新方法。
更新单元807、用于执行所述匹配后的缓存更新方法更新本地服务器节点的缓存对象。
下面对所述系统的工作原理及工作过程进行详细描述:
集群中的每个服务器节点通过队列创建单元801创建用于存储方法名及有序参数列表的存储队列,当集群中某个服务器节点的缓存对象发生改变时,置入单元802将所述更新缓存对象的方法名及有序参数列表置于创建的队列中,并等待发送。每隔预置的时间阈值通过打包单元803将队列中等待发送的方法名及有序参数列表打包成消息体,并通过发送单元804将所述打包消息体发送至其它订阅此消息体的其它服务器节点,其它服务器节点接收所述消息体后,通过获取单元805从消息体中获取更新缓存对象的方法名及有序参数列表。然后匹配单元806根据所述方法名和有序参数列表在本地服务器节点匹配相应的缓存更新方法,更新单元807根据所述匹配后的方法完成本地服务器节点缓存对象的更新。
其中所述匹配单元806具体包括:
第一获取单元,用于根据方法名获取缓存接口中的所有同名方法。
遍历单元,用于根据有序参数列表遍历所述全部同名方法。
第二获取单元,用于获取与参数类型完全匹配的缓存更新方法。
进一步,所述系统还可以包括第一判断单元,用于判断是否需要同步其它服务器节点的缓存对象。
当集群中的某个服务器节点的缓存对象发生改变时,第一判断单元根据缓存同步策略判断集群中的其它服务器节点是否需要更新缓存对象,通过所述第一判断单元的作用,可以在没有服务器节点更新缓存对象的时候发送消息体,从而节省了网络资源,提高了系统性能。
在本发明一种集群环境下数据缓存同步系统的第二实施例中,除了包括第一实施例中所述的各种单元外,还包括第二判断单元,用于判断所有已发送的消息体是否已被成功处理。
其中,所述第二判断单元具体包括:
ID生成单元,用于在方法名及有序参数列表打包成消息体后,生成消息体ID。
存储单元,用于在服务器节点的缓存对象同步成功后,将消息体的状态信息及消息体ID对应存储在数据库中。
第三获取单元,用于根据消息体ID查询数据库获取消息体的状态信息。
第三判断单元,用于判断消息体是否被集群中的其它所有服务器节点成功处理。
重发送更新单元,如果有任一个服务器节点未成功处理则重新发送所述处理失败的消息体,完成其它所有服务器节点缓存对象的同步更新;
删除单元,用于删除数据库中已被其它所有服务器节点成功处理的消息记录。
在本发明一种集群环境下数据缓存同步系统的第三实施例中,所述系统包括:
打包单元,用于将更新缓存对象的方法名及有序参数列表打包成消息体。
发送单元,用于将打包消息体发送至其它服务器节点。
获取单元,用于从消息体中获取更新缓存对象的方法名及有序参数列表。
匹配单元,用于根据更新缓存对象的方法名和有序参数列表匹配相应的缓存更新方法。
更新单元,用于执行匹配后的缓存对象更新方法更新本地服务器节点的缓存对象。
本发明中所述系统实施例是与方法实施例对应的,因此,在系统实施例中未具体描述的部分参见前面方法实施例相关部分描述即可。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上对本发明所提供的一种集群环境下数据缓存同步的方法及系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种集群环境下数据缓存同步的方法,其特征在于,集群环境下的每个服务器节点部署的Web应用程序代码相同,各个服务器节点中更新缓存的接口及其接口实现的代码完全一致,所述方法包括:
当某个服务器节点的缓存对象更新成功后,将更新该缓存对象的方法名及有序参数列表打包成消息体;
将打包消息体发送至所有订阅所述打包消息体的其它服务器节点;
其它服务器节点接收所述打包消息体后,从所述打包消息体中获取所述方法名及有序参数列表;
根据所述方法名和有序参数列表在本地服务器节点匹配相应的缓存对象更新方法;
执行所述匹配后的缓存对象更新方法更新本地服务器节点的缓存对象。
2.一种集群环境下数据缓存同步的方法,其特征在于,集群环境下的每个服务器节点部署的Web应用程序代码相同,各个服务器节点中更新缓存的接口及其接口实现的代码完全一致,所述方法包括:
在服务器节点中创建存储队列;
当某个服务器节点的缓存对象更新成功后,将更新该缓存对象的方法名及有序参数列表置于所述队列中等待发送;
按预置时间阈值检查待发送队列,将队列中更新缓存对象的方法名及有序参数列表打包成消息体;
将打包消息体发送至所有订阅所述打包消息体的其它服务器节点;
其它服务器节点接收所述打包消息体后,从所述打包消息体中获取所述方法名及有序参数列表;
根据所述方法名和有序参数列表在本地服务器节点匹配相应的缓存对象更新方法;
执行所述匹配后的缓存对象更新方法更新本地服务器节点的缓存对象。
3.如权利要求1或2所述的方法,其特征在于,所述匹配缓存更新方法的具体步骤为:
根据方法名获取缓存接口中的所有同名方法;
根据有序参数列表遍历所述全部同名方法;
获取参数类型完全匹配的缓存更新方法。
4.如权利要求2所述的方法,其特征在于,当某个服务器节点的缓存对象更新成功后,还包括:
判断是否需要同步其它服务器节点的缓存对象。
5.如权利要求2所述的方法,其特征在于,还包括:
判断所有已发送的消息体是否已被成功处理。
6.如权利要求5所述的方法,其特征在于,所述判断的具体实现过程为:
将更新缓存对象的方法名及有序参数列表打包成消息体后,生成消息体ID;
当服务器节点的缓存对象同步成功后将所述打包消息体的状态信息及所述消息体ID对应存储在数据库中;
按照预置的时间间隔根据所述消息体ID查询所述数据库获取消息体的状态信息;
判断消息体是否已被集群中的其它所有服务器节点成功处理;
如果有任一个服务器节点未成功处理则重新发送所述处理失败的消息体,完成其它所有服务器节点缓存对象的同步更新;
如果其它服务器节点都已处理成功则删除所述数据库中已被成功处理的消息记录。
7.一种集群环境下数据缓存同步的系统,其特征在于,集群环境下的每个服务器节点部署的Web应用程序代码相同,各个服务器节点中更新缓存的接口及其接口实现的代码完全一致,所述系统包括:
打包单元,用于将更新缓存对象的方法名及有序参数列表打包成消息体;
发送单元,用于将打包消息体发送至其它服务器节点;
获取单元,用于从消息体中获取更新缓存对象的方法名及有序参数列表;
匹配单元,用于根据更新缓存对象的方法名和有序参数列表匹配相应的缓存更新方法;
更新单元,用于执行匹配后的缓存对象更新方法更新本地服务器节点的缓存对象。
8.一种集群环境下数据缓存同步的系统,其特征在于,集群环境下的每个服务器节点部署的Web应用程序代码相同,各个服务器节点中更新缓存的接口及其接口实现的代码完全一致,所述系统包括:
队列创建单元,用于在服务器节点中创建存储队列;
置入单元,用于将更新缓存对象的方法名及有序参数列表置于所述队列中;
打包单元,用于将队列中更新缓存对象的方法名及有序参数列表打包成消息体;
发送单元,用于将打包消息体发送至其它服务器节点;
获取单元,用于从消息体中获取更新缓存对象的方法名及有序参数列表;
匹配单元,用于根据更新缓存对象的方法名和有序参数列表在本地服务器节点匹配相应的缓存更新方法;
更新单元,用于执行匹配后的缓存对象更新方法更新本地服务器节点的缓存对象。
9.如权利要求7或8所述的系统,其特征在于,所述匹配单元包括:
第一获取单元,用于根据方法名获取缓存接口中的所有同名方法;
遍历单元,用于根据有序参数列表遍历所述全部同名方法;
第二获取单元,用于获取与参数类型完全匹配的缓存更新方法。
10.如权利要求8所述的系统,其特征在于,还包括:
第一判断单元,用于判断是否需要同步其它服务器节点的缓存对象。
11.如权利要求8所述的系统,其特征在于,还包括:
第二判断单元,用于判断所有已发送的消息体是否已被成功处理。
12.如权利要求11所述的系统,其特征在于,所述第二判断单元包括:
ID生成单元,用于在方法名及有序参数列表打包成消息体后,生成消息体ID;
存储单元,用于在服务器节点的缓存对象同步成功后,将消息体的状态信息及消息体ID对应存储在数据库中;
第三获取单元,用于根据消息体ID查询数据库获取消息体的状态信息;
第三判断单元,用于判断消息体是否被集群中的其它所有服务器节点成功处理;
重发送更新单元,如果有任一个服务器节点未成功处理则重新发送所述处理失败的消息体,完成其它所有服务器节点缓存对象的同步更新;
删除单元,用于删除数据库中已被其它所有服务器节点成功处理的消息记录。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN2007101948730A CN101188566B (zh) | 2007-12-13 | 2007-12-13 | 一种集群环境下数据缓存同步的方法及系统 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN2007101948730A CN101188566B (zh) | 2007-12-13 | 2007-12-13 | 一种集群环境下数据缓存同步的方法及系统 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN101188566A CN101188566A (zh) | 2008-05-28 |
| CN101188566B true CN101188566B (zh) | 2010-06-02 |
Family
ID=39480761
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN2007101948730A Expired - Fee Related CN101188566B (zh) | 2007-12-13 | 2007-12-13 | 一种集群环境下数据缓存同步的方法及系统 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN101188566B (zh) |
Families Citing this family (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2012126177A2 (zh) * | 2011-03-22 | 2012-09-27 | 青岛海信传媒网络技术有限公司 | 从数据库中读取数据的方法及装置 |
| CN102314505B (zh) * | 2011-09-07 | 2016-04-13 | 北京人大金仓信息技术股份有限公司 | 基于偏序关系的缓冲区版本产生方法 |
| CN102387204B (zh) * | 2011-10-21 | 2014-12-10 | 中国科学院计算技术研究所 | 维护集群缓存一致性的方法及系统 |
| CN102945236A (zh) * | 2011-11-29 | 2013-02-27 | Ut斯达康通讯有限公司 | 一种通过事件触发同步不同数据库的方法 |
| CN102591679B (zh) * | 2011-11-30 | 2014-09-17 | 中国科学院计算机网络信息中心 | 一种集群系统应用软件快速部署方法 |
| CN104869166A (zh) * | 2015-05-28 | 2015-08-26 | 北京呈创科技股份有限公司 | 桌面云集群系统及桌面云集群中的信息交互方法 |
| CN106980625B (zh) * | 2016-01-18 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置及系统 |
| CN106506586B (zh) * | 2016-09-21 | 2019-05-03 | 东软集团股份有限公司 | 分布式缓存同步方法、装置、节点和系统 |
| CN109167810B (zh) * | 2018-07-27 | 2021-09-14 | 创新先进技术有限公司 | 监听、通知、刷新方法和装置、计算设备及存储介质 |
| CN109284305A (zh) * | 2018-08-23 | 2019-01-29 | 阿里巴巴集团控股有限公司 | 一种数据的更新方法、装置及系统 |
| CN111245876B (zh) * | 2018-11-29 | 2023-04-28 | 杭州海康威视数字技术股份有限公司 | 名单同步方法和集群系统 |
| CN109582686B (zh) * | 2018-12-13 | 2021-01-15 | 中山大学 | 分布式元数据管理一致性保证方法、装置、系统及应用 |
| CN109710427A (zh) * | 2018-12-26 | 2019-05-03 | 苏州沁游网络科技有限公司 | 一种信息处理方法、系统及服务器 |
| CN110503167B (zh) * | 2019-08-07 | 2021-10-08 | 清远蓄能发电有限公司 | 基于rfid的货架工器具盘点方法、系统、设备和介质 |
| CN110837427B (zh) * | 2019-11-15 | 2022-02-01 | 四川长虹电器股份有限公司 | 一种基于队列分拣任务机制的防止缓存击穿的方法 |
| CN111479142B (zh) * | 2020-04-14 | 2022-10-21 | 深圳市鸿合创新信息技术有限责任公司 | 一种基于信息发布的节目内容更新方法和系统 |
| CN111506668B (zh) * | 2020-07-01 | 2024-02-02 | 西安安森智能仪器股份有限公司 | 机器人集群智能化数据同步方法及系统 |
| CN112000618B (zh) * | 2020-08-07 | 2022-06-07 | 北京浪潮数据技术有限公司 | 集群节点的文件变动管理方法、装置、设备及存储介质 |
| CN112416884A (zh) * | 2020-11-23 | 2021-02-26 | 中国移动通信集团江苏有限公司 | 一种数据同步方法及系统 |
| CN118445178B (zh) * | 2024-04-22 | 2025-02-11 | 蜜源(广州)新媒体科技有限公司 | 自动化测试脚本管理方法、装置、计算机设备和存储介质 |
| CN119449827A (zh) * | 2024-11-15 | 2025-02-14 | 天翼数字生活科技有限公司 | 资源同步方法、装置、设备及可读存储介质 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1602489A (zh) * | 2001-10-25 | 2005-03-30 | Bea系统公司 | 刷新bean缓存的系统和方法 |
| US20050132074A1 (en) * | 2003-12-12 | 2005-06-16 | Dan Jones | Systems and methods for synchronizing data between communication devices in a networked environment |
| WO2007088081A1 (en) * | 2006-01-31 | 2007-08-09 | International Business Machines Corporation | Efficient data management in a cluster file system |
-
2007
- 2007-12-13 CN CN2007101948730A patent/CN101188566B/zh not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1602489A (zh) * | 2001-10-25 | 2005-03-30 | Bea系统公司 | 刷新bean缓存的系统和方法 |
| US20050132074A1 (en) * | 2003-12-12 | 2005-06-16 | Dan Jones | Systems and methods for synchronizing data between communication devices in a networked environment |
| WO2007088081A1 (en) * | 2006-01-31 | 2007-08-09 | International Business Machines Corporation | Efficient data management in a cluster file system |
Also Published As
| Publication number | Publication date |
|---|---|
| CN101188566A (zh) | 2008-05-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN101188566B (zh) | 一种集群环境下数据缓存同步的方法及系统 | |
| CN111143382B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
| CN114629883B (zh) | 服务请求的处理方法、装置、电子设备及存储介质 | |
| CN102255752B (zh) | 一种服务器集群的配置管理系统和方法 | |
| CN102291416B (zh) | 一种客户端与服务器端双向同步的方法及系统 | |
| CN102855152B (zh) | 升级应用程序中资源文件的方法及系统 | |
| CN104202423B (zh) | 一种通过软件架构扩展缓存的系统 | |
| CN112260876A (zh) | 动态网关路由配置方法、平台、计算机设备及存储介质 | |
| CN106789377B (zh) | 网元集群的服务参数更新方法 | |
| CN103645904B (zh) | 一种接口调用的缓存实现方法 | |
| CN104506643A (zh) | 分布式存储系统的服务器及服务器之间的数据同步方法 | |
| CN109032837A (zh) | 数据备份的方法和装置 | |
| CN112328632B (zh) | 一种分布式两级缓存的方法和系统 | |
| CN105337923A (zh) | 数据分发方法和系统及数据发送装置和数据接收装置 | |
| CN112069152B (zh) | 一种数据库集群升级方法、装置、设备以及存储介质 | |
| CN116405547A (zh) | 消息推送方法、装置及处理器、电子设备、存储介质 | |
| CN101557390A (zh) | 一种灵活运用缓存技术来提高系统性能的方法 | |
| CN103164262A (zh) | 一种任务管理方法及装置 | |
| CN113973135A (zh) | 数据缓存处理方法、装置、缓存网格平台和存储介质 | |
| CN114513522A (zh) | 一种北向接口资源导出系统 | |
| CN115242811A (zh) | 一种集群多节点缓存方法及装置 | |
| WO2023142924A1 (zh) | 电子地图运维方法、电子地图数据使用方法及服务系统 | |
| CN113868184B (zh) | 一种主从架构基于缓存的配置中心的配置方法及系统 | |
| CN111124717A (zh) | 消息投递方法、系统及计算机存储介质 | |
| CN101526959A (zh) | 一种数据存储方法和装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C14 | Grant of patent or utility model | ||
| GR01 | Patent grant | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100602 Termination date: 20171213 |
|
| CF01 | Termination of patent right due to non-payment of annual fee |