[发明专利]一种分布式缓存更新方法和系统在审
申请号: | 201711115077.3 | 申请日: | 2017-11-13 |
公开(公告)号: | CN107770285A | 公开(公告)日: | 2018-03-06 |
发明(设计)人: | 牛峰;赵明建;许盛 | 申请(专利权)人: | 阳光电源股份有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 北京集佳知识产权代理有限公司11227 | 代理人: | 王宝筠 |
地址: | 230088 安徽*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 缓存 更新 方法 系统 | ||
技术领域
本发明涉及分布式缓存技术领域,更具体地说,涉及一种分布式缓存更新方法和系统。
背景技术
现有的分布式缓存更新系统如图1所示,包括:服务器端、消息中间件和多个客户端,服务器端通过消息中间件将同一缓存更新消息传递到多个客户端,使每个客户端执行同样的缓存更新操作。
但图1所示分布式缓存更新系统存在以下缺陷:
1)所有缓存更新消息都依赖消息中间件进行传递,一旦消息中间件故障则整个系统将瘫痪,系统可靠性差;
2)由于存在数据传输延时的问题,不同客户端接收到同一缓存更新消息的时间可能不一致,无法保证所有客户端同步更新缓存。
3)由于每个客户端都是按照自己所在的时区的时间执行缓存更新操作,当不同客户端所在的时区不一致时,同样无法保证所有客户端同步更新缓存。
如何克服上述缺陷,是本领域技术人员亟待解决的问题。
发明内容
有鉴于此,本发明提供一种分布式缓存更新方法和系统,以提高系统可靠性,并保证所有客户端能够同步更新缓存。
一种分布式缓存更新方法,包括:
服务器端将缓存更新消息发送给各个客户端,所述缓存更新消息携带有任一时区的时间戳;
其中,每一个客户端在接收所述缓存更新消息成功后,首先根据所述时间戳计算出本客户端所在的时区对应的时间,然后延迟到同一时间点时执行一线程,所述线程包括更新缓存并保存更新前的缓存数据;
所述服务器端判断是否所有客户端都接收所述缓存更新消息成功;
若至少一个客户端接收所述缓存更新消息失败,则所述服务器端向各个客户端发送回滚消息,并重新将所述缓存更新消息发送给各个客户端;
若所有客户端都接收所述缓存更新消息成功,则所述服务器端延迟一定时间后判断是否所有客户端都更新缓存成功;
若至少一个客户端更新缓存失败,则所述服务器端向各个客户端发送所述回滚消息,并重新将所述缓存更新消息发送给各个客户端。
可选的,客户端接收所述缓存更新消息成功,包括:
客户端在接收到所述缓存更新消息时,验证所述缓存更新消息的合法性,如果所述缓存更新消息合法,则接收所述缓存更新消息成功,如果所述缓存更新消息不合法,则接收所述缓存更新消息失败。
可选的,每一个客户端都将本客户端更新消息是否成功以及更新缓存是否成功的记录保存到区块链中;
对应的,所述判断是否所有客户端都接收所述缓存更新消息成功,包括:通过读取所述区块链中保存的各客户端更新消息是否成功的记录,判断是否所有客户端都接收所述缓存更新消息成功;
所述判断是否所有客户端都更新缓存成功,包括:通过读取所述区块链中保存的各客户端更新缓存是否成功的记录,判断是否所有客户端都更新缓存成功。
可选的,所述任一时区的时间戳为格林威治时间戳。
可选的,所述服务器端在重新将所述缓存更新消息发送给各个客户端的次数超过预设次数时,还包括:输出报警信息。
一种分布式缓存更新系统,包括服务器端和多个客户端,其中:
所述服务器端,用于将缓存更新消息发送给各个客户端,所述缓存更新消息携带有任一时区的时间戳;判断是否所有客户端都接收所述缓存更新消息成功;若至少一个客户端接收所述缓存更新消息失败,则向各个客户端发送回滚消息,并重新将所述缓存更新消息发送给各个客户端;若所有客户端都接收所述缓存更新消息成功,则延迟一定时间后判断是否所有客户端都更新缓存成功;若至少一个客户端更新缓存失败,则向各个客户端发送所述回滚消息,并重新将所述缓存更新消息发送给各个客户端;
所述客户端,用于在接收所述缓存更新消息成功后,首先根据所述时间戳计算出本客户端所在的时区对应的时间,然后延迟到同一时间点时执行一线程,所述线程包括更新缓存并保存更新前的缓存数据。
可选的,所述客户端在接收到所述缓存更新消息时,验证所述缓存更新消息的合法性,如果所述缓存更新消息合法,则接收所述缓存更新消息成功,如果所述缓存更新消息不合法,则接收所述缓存更新消息失败。
可选的,所述客户端还用于将本客户端更新消息是否成功以及更新缓存是否成功的记录保存到区块链中;
对应的,所述服务器端具体用于通过读取所述区块链中保存的各客户端更新消息是否成功的记录,判断是否所有客户端都接收所述缓存更新消息成功;以及通过读取所述区块链中保存的各客户端更新缓存是否成功的记录,判断是否所有客户端都更新缓存成功。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阳光电源股份有限公司,未经阳光电源股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711115077.3/2.html,转载请声明来源钻瓜专利网。