一种分布式缓存更新方法和系统技术方案

技术编号:17414069 阅读:33 留言:0更新日期:2018-03-07 09:44
本申请公开了一种分布式缓存更新方法和系统,该方法包括:服务器端将携带有任一时区的时间戳的缓存更新消息发给各个客户端;每个客户端在接收缓存更新消息成功后,先根据该时间戳计算出本客户端所在时区对应的时间,然后延迟到同一时间点时执行一线程,该线程包括更新缓存并保存更新前的缓存数据;服务器端判断是否所有客户端都接收缓存更新消息成功,若否,向各个客户端发送回滚消息并重新将缓存更新消息发给各个客户端,若是,延迟一定时间后判断是否所有客户端都更新缓存成功;若至少一个客户端更新缓存失败,则向各个客户端发送回滚消息并重新将缓存更新消息发给各个客户端。本申请提高了系统可靠性,并保证了所有客户端能够同步更新缓存。

A distributed cache update method and system

The invention discloses a method and system for updating the distributed cache, the method includes: the server will carry the timestamp of any time zone cache update message to each client; each client in the receiving cache update message after the success of the client to calculate the time zone corresponding to the time according to the time stamp, then execute a thread the delay to the same point in time when the thread includes update cache and cache data saved before the update; the server determines whether all clients receive cache update message successfully, if not, to each client sends a rollback message and the cache update message to each client, if re, determine whether all clients update the cache the success of the delay after a certain period of time; if at least one client failed to update the cache, each client sends a rollback Message and redistribute the cache update message to each client. This application improves the system reliability and ensures that all clients can update the cache synchronously.

【技术实现步骤摘要】
一种分布式缓存更新方法和系统
本专利技术涉及分布式缓存
,更具体地说,涉及一种分布式缓存更新方法和系统。
技术介绍
现有的分布式缓存更新系统如图1所示,包括:服务器端、消息中间件和多个客户端,服务器端通过消息中间件将同一缓存更新消息传递到多个客户端,使每个客户端执行同样的缓存更新操作。但图1所示分布式缓存更新系统存在以下缺陷:1)所有缓存更新消息都依赖消息中间件进行传递,一旦消息中间件故障则整个系统将瘫痪,系统可靠性差;2)由于存在数据传输延时的问题,不同客户端接收到同一缓存更新消息的时间可能不一致,无法保证所有客户端同步更新缓存。3)由于每个客户端都是按照自己所在的时区的时间执行缓存更新操作,当不同客户端所在的时区不一致时,同样无法保证所有客户端同步更新缓存。如何克服上述缺陷,是本领域技术人员亟待解决的问题。
技术实现思路
有鉴于此,本专利技术提供一种分布式缓存更新方法和系统,以提高系统可靠性,并保证所有客户端能够同步更新缓存。一种分布式缓存更新方法,包括:服务器端将缓存更新消息发送给各个客户端,所述缓存更新消息携带有任一时区的时间戳;其中,每一个客户端在接收所述缓存更新消息成功后,首先根据所述时间戳计算出本客户端所在的时区对应的时间,然后延迟到同一时间点时执行一线程,所述线程包括更新缓存并保存更新前的缓存数据;所述服务器端判断是否所有客户端都接收所述缓存更新消息成功;若至少一个客户端接收所述缓存更新消息失败,则所述服务器端向各个客户端发送回滚消息,并重新将所述缓存更新消息发送给各个客户端;若所有客户端都接收所述缓存更新消息成功,则所述服务器端延迟一定时间后判断是否所有客户端都更新缓存成功;若至少一个客户端更新缓存失败,则所述服务器端向各个客户端发送所述回滚消息,并重新将所述缓存更新消息发送给各个客户端。可选的,客户端接收所述缓存更新消息成功,包括:客户端在接收到所述缓存更新消息时,验证所述缓存更新消息的合法性,如果所述缓存更新消息合法,则接收所述缓存更新消息成功,如果所述缓存更新消息不合法,则接收所述缓存更新消息失败。可选的,每一个客户端都将本客户端更新消息是否成功以及更新缓存是否成功的记录保存到区块链中;对应的,所述判断是否所有客户端都接收所述缓存更新消息成功,包括:通过读取所述区块链中保存的各客户端更新消息是否成功的记录,判断是否所有客户端都接收所述缓存更新消息成功;所述判断是否所有客户端都更新缓存成功,包括:通过读取所述区块链中保存的各客户端更新缓存是否成功的记录,判断是否所有客户端都更新缓存成功。可选的,所述任一时区的时间戳为格林威治时间戳。可选的,所述服务器端在重新将所述缓存更新消息发送给各个客户端的次数超过预设次数时,还包括:输出报警信息。一种分布式缓存更新系统,包括服务器端和多个客户端,其中:所述服务器端,用于将缓存更新消息发送给各个客户端,所述缓存更新消息携带有任一时区的时间戳;判断是否所有客户端都接收所述缓存更新消息成功;若至少一个客户端接收所述缓存更新消息失败,则向各个客户端发送回滚消息,并重新将所述缓存更新消息发送给各个客户端;若所有客户端都接收所述缓存更新消息成功,则延迟一定时间后判断是否所有客户端都更新缓存成功;若至少一个客户端更新缓存失败,则向各个客户端发送所述回滚消息,并重新将所述缓存更新消息发送给各个客户端;所述客户端,用于在接收所述缓存更新消息成功后,首先根据所述时间戳计算出本客户端所在的时区对应的时间,然后延迟到同一时间点时执行一线程,所述线程包括更新缓存并保存更新前的缓存数据。可选的,所述客户端在接收到所述缓存更新消息时,验证所述缓存更新消息的合法性,如果所述缓存更新消息合法,则接收所述缓存更新消息成功,如果所述缓存更新消息不合法,则接收所述缓存更新消息失败。可选的,所述客户端还用于将本客户端更新消息是否成功以及更新缓存是否成功的记录保存到区块链中;对应的,所述服务器端具体用于通过读取所述区块链中保存的各客户端更新消息是否成功的记录,判断是否所有客户端都接收所述缓存更新消息成功;以及通过读取所述区块链中保存的各客户端更新缓存是否成功的记录,判断是否所有客户端都更新缓存成功。可选的,所述任一时区的时间戳为格林威治时间戳。可选的,所述服务器端还用于在重新将所述缓存更新消息发送给各个客户端的次数超过预设次数时,输出报警信息。从上述的技术方案可以看出,本专利技术例通过去中心化,由服务器端直接与客户端进行通讯,避免了消息中间件故障所引发的的系统瘫痪问题。而且,所有客户端都根据服务器端统一发送来的时间戳来同步本地时间,避免了客户端处于不同时区而造成客户端无法同步更新缓存,同时所有客户端通过延迟线程避免了数据传输延时而造成客户端无法同步更新缓存,在此基础上,服务器端利用消息回滚机制使所有客户端始终同步更新缓存,不会出现不同客户端缓存更新结果不一致的情况。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为现有技术公开的一种分布式缓存更新系统结构示意图;图2为本专利技术实施例公开的一种分布式缓存更新方法流程图;图3为本专利技术实施例公开的一种分布式缓存更新系统结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。参见图2,本专利技术实施例公开了一种分布式缓存更新方法,应用于分布式缓存更新系统中的服务器端,所述分布式缓存更新方法包括:步骤S01:将缓存更新消息发送给各个客户端,所述缓存更新消息携带有任一时区的时间戳。具体的,所述分布式缓存更新系统舍弃了消息中间件,即服务器端与客户端之间去中心化,由服务器端直接与客户端进行通讯,从而避免了所有缓存更新消息都依赖消息中间件进行传递,一旦消息中间件故障则整个系统将瘫痪的问题,提升了系统可靠性。其中,每一个客户端在接收所述缓存更新消息成功后,首先根据所述时间戳计算出本客户端所在的时区对应的时间,然后延迟到同一时间点时执行一线程,所述线程包括更新本客户端的缓存,并保存更新前的缓存数据。具体的,数据传输延时以及客户端处于不同时区,是造成客户端无法同步更新缓存的两大原因。在假设每个客户端都处于同一时区的情况下,为避免数据传输延时所造成的客户端无法同步更新缓存的问题,本专利技术实施例要求每个客户端接收所述缓存更新消息成功后延迟到同一时间点再执行缓存更新操作,从而保证了服务器端有足够的时间将缓存更新消息发送到每一个客户端,所有客户端都接收所述缓存更新消息成功后再同步更新缓存。在避免了数据传输延时所造成的客户端无法同步更新缓存的问题的情况下,为实现不同时区的客户端同步更新缓存,本专利技术实施例还要求服务器端为缓存更新消息打上一个任一时区的时间戳,例如格林威治时间戳,然后再发送给各个客户端,则每个客户端都将根据所述时间戳计算出本文档来自技高网...
一种分布式缓存更新方法和系统

【技术保护点】
一种分布式缓存更新方法,其特征在于,包括:服务器端将缓存更新消息发送给各个客户端,所述缓存更新消息携带有任一时区的时间戳;其中,每一个客户端在接收所述缓存更新消息成功后,首先根据所述时间戳计算出本客户端所在的时区对应的时间,然后延迟到同一时间点时执行一线程,所述线程包括更新缓存并保存更新前的缓存数据;所述服务器端判断是否所有客户端都接收所述缓存更新消息成功;若至少一个客户端接收所述缓存更新消息失败,则所述服务器端向各个客户端发送回滚消息,并重新将所述缓存更新消息发送给各个客户端;若所有客户端都接收所述缓存更新消息成功,则所述服务器端延迟一定时间后判断是否所有客户端都更新缓存成功;若至少一个客户端更新缓存失败,则所述服务器端向各个客户端发送所述回滚消息,并重新将所述缓存更新消息发送给各个客户端。

【技术特征摘要】
1.一种分布式缓存更新方法,其特征在于,包括:服务器端将缓存更新消息发送给各个客户端,所述缓存更新消息携带有任一时区的时间戳;其中,每一个客户端在接收所述缓存更新消息成功后,首先根据所述时间戳计算出本客户端所在的时区对应的时间,然后延迟到同一时间点时执行一线程,所述线程包括更新缓存并保存更新前的缓存数据;所述服务器端判断是否所有客户端都接收所述缓存更新消息成功;若至少一个客户端接收所述缓存更新消息失败,则所述服务器端向各个客户端发送回滚消息,并重新将所述缓存更新消息发送给各个客户端;若所有客户端都接收所述缓存更新消息成功,则所述服务器端延迟一定时间后判断是否所有客户端都更新缓存成功;若至少一个客户端更新缓存失败,则所述服务器端向各个客户端发送所述回滚消息,并重新将所述缓存更新消息发送给各个客户端。2.根据权利要求1所述的分布式缓存更新方法,其特征在于,客户端接收所述缓存更新消息成功,包括:客户端在接收到所述缓存更新消息时,验证所述缓存更新消息的合法性,如果所述缓存更新消息合法,则接收所述缓存更新消息成功,如果所述缓存更新消息不合法,则接收所述缓存更新消息失败。3.根据权利要求1所述的分布式缓存更新方法,其特征在于,每一个客户端都将本客户端更新消息是否成功以及更新缓存是否成功的记录保存到区块链中;对应的,所述判断是否所有客户端都接收所述缓存更新消息成功,包括:通过读取所述区块链中保存的各客户端更新消息是否成功的记录,判断是否所有客户端都接收所述缓存更新消息成功;所述判断是否所有客户端都更新缓存成功,包括:通过读取所述区块链中保存的各客户端更新缓存是否成功的记录,判断是否所有客户端都更新缓存成功。4.根据权利要求1所述的分布式缓存更新方法,其特征在于,所述任一时区的时间戳为格林威治时间戳。5.根据权利要求1所述的分布式缓存更新方法,其特征在于,所述服务器端在重新将所述缓存更新消...

【专利技术属性】
技术研发人员:牛峰赵明建许盛
申请(专利权)人:阳光电源股份有限公司
类型:发明
国别省市:安徽,34

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

1