解决时钟回拨问题的方法和装置制造方法及图纸

技术编号:30649803 阅读:13 留言:0更新日期:2021-11-04 01:06
本公开提供一种解决时钟回拨问题的方法和装置,其中,方法包括:接收业务请求并生成分布式唯一标识,更新自身业务流程实例标识;获取所述业务的第一服务器时间,并判断所述第一服务器时间是否存在时钟回退;若判断第一服务器时间不存在时钟回退,则继续以不断更新的自身业务流程实例标识为基础,接收业务请求生成分布式唯一标识,并更新最新时间;若判断第一服务器时间存在时钟回退,则选择备份业务流程实例标识中的一个备份业务流程实例标识以及对应的最新时间为基础,接收所述业务请求生成分布式唯一标识,并更新最新时间。本公开通过设置备份的方式,将回退的时间进行追回,实现对之前生成的id的利用,避免直接抛错处理带来的用户体验不佳。的用户体验不佳。的用户体验不佳。

【技术实现步骤摘要】
解决时钟回拨问题的方法和装置


[0001]本公开涉及计算机
,尤其涉及一种解决时钟回拨问题的方法和装置。

技术介绍

[0002]雪花算法生成规则依赖时间戳,这样由于时间校准,以及其他因素,可能导致服务器时间回退,如果恰巧回退前生成过一些id,而时间回退后,生成的id就有可能重复。现有技术中对于此问题并没有给出明确的解决方案,而是简单的抛错处理,这样会造成在时间被追回之前的这段时间服务不可用,导致交易失败,用户体验极其不好。

技术实现思路

[0003]本公开提供一种解决时钟回拨问题的方法和装置,用以解决现有技术中无法处理时间回退已生成的id的缺陷,实现解决服务器时钟回退服务不可用问题。
[0004]第一方面,本公开提供一种解决时钟回拨问题的方法,包括:
[0005]接收业务请求并生成分布式唯一标识,更新自身业务流程实例标识;
[0006]获取所述业务的第一服务器时间,并判断所述第一服务器时间是否存在时钟回退;
[0007]若判断所述第一服务器时间不存在时钟回退,则继续以不断更新的所述自身业务流程实例标识为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间;
[0008]若判断所述第一服务器时间存在时钟回退,以备份业务流程实例标识中的一个备份业务流程实例标识及其对应的最新时间为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间。
[0009]根据本公开提供的解决时钟回拨问题的方法,其中,在所述接收业务生成的分布式唯一标识之前,还包括:<br/>[0010]设置所述业务的备份数量;
[0011]基于所述备份数量分配所述业务的自身业务流程实例标识和每个备份的业务流程实例标识;
[0012]初始化所述业务的所述自身业务流程实例标识、所述每个备份业务流程实例标识以及与所述每个备份业务流程实例标识对应的最新时间,其中最新时间的初始值为0毫秒。
[0013]根据本公开提供的解决时钟回拨问题的方法,其中,在所述选择所述备份业务流程实例标识中的一个备份业务流程实例标识以及对应的最新时间为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间之后,还包括:
[0014]接收所述业务的第二服务器时间,并判断所述第二服务器时间是否存在时钟回退;
[0015]若判断所述第二服务器时间不存在时钟回退,则继续以所述被选择的一个备份业务流程实例标识为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间;
[0016]若判断所述第二服务器时间存在时钟回退,则从所述更新后的自身业务流程实例
标识和其他备份业务流程实例标识中选择一个业务流程实例标识为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间。
[0017]根据本公开提供的解决时钟回拨问题的方法,其中,所述若判断所述第一服务器时间存在时钟回退,以备份业务流程实例标识中的一个备份业务流程实例标识及其对应的最新时间为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间,具体包括:
[0018]确定时钟回退的时间;
[0019]确定每个所述备份业务流程实例标识中对应的最新时间;
[0020]将所述时钟回退的时间与所述每份所述备份业务流程实例标识中对应的最新时间相比较,判断所述时钟回退的时间是否不小于每个所述备份业务流程实例标识中对应的最新时间;
[0021]筛选出时钟回退的时间不小于备份业务流程实例标识中对应的最新时间的第一个备份业务流程实例标识;
[0022]将所述第一个备份业务流程实例标识作为被选择的备份业务流程实例标识并用来继续生成分布式唯一标识,同时更新最新时间;
[0023]其中,第一个备份业务流程实例标识是按照备份业务流程实例标识的顺序依次与所述时钟回退的时间相比较获得。
[0024]根据本公开提供的解决时钟回拨问题的方法,其中,所述若判断所述第二服务器时间存在时钟回退,则从所述更新后的自身业务流程实例标识和其他备份业务流程实例标识中选择一个业务流程实例标识为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间,具体包括:
[0025]确定时钟回退的时间;
[0026]确定所述自身业务流程实例标识和所述其他备份业务流程实例标识中对应的最新时间;
[0027]将所述时钟回退的时间与所述自身业务流程实例标识和所述其他备份业务流程实例标识中对应的最新时间相比较,判断所述时钟回退的时间是否不小于所述自身业务流程实例标识和所述其他备份业务流程实例标识中对应的最新时间;
[0028]筛选出时钟回退的时间不小于所述自身业务流程实例标识和所述其他备份业务流程实例标识中对应的最新时间的第一个业务流程实例标识;
[0029]将所述第一个业务流程实例标识作为被选择的业务流程实例标识并用来继续生成分布式唯一标识,同时更新最新时间;
[0030]其中,第一个业务流程实例标识是按照所述自身业务流程实例标识和所述其他备份业务流程实例标识中顺序依次与所述时钟回退的时间相比较获得。
[0031]根据本公开提供的解决时钟回拨问题的方法,其中,所述接收所述业务的服务器时间,并判断所述服务器时间是否存在时钟回退的方法,具体为:
[0032]获取业务的服务器时间;
[0033]将所述业务的服务器时间与当前时间线相比较,判断是否存在时钟回退;其中,所述当前时间线是预先设置,且所述当前时间线的时间进度随着本地时钟的时间推进;
[0034]若判断所述服务器时间迟于当前时间线的当前时间,则确定存在时钟回退;
[0035]若判断所述服务器时间不迟于当前时间线的当前时间,则确定不存在时钟回退。
[0036]第二方面,本公开提供一种解决时钟回拨问题的装置,包括:
[0037]第一处理模块,用于接收业务请求并生成分布式唯一标识,更新自身业务流程实例标识;
[0038]第二处理模块,用于获取所述业务的第一服务器时间,并判断所述第一服务器时间是否存在时钟回退;
[0039]第三处理模块,用于若判断所述第一服务器时间不存在时钟回退,则继续以不断更新的所述自身业务流程实例标识为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间;
[0040]第四处理模块,用于若判断所述第一服务器时间存在时钟回退,以备份业务流程实例标识中的一个备份业务流程实例标识及其对应的最新时间为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间。
[0041]根据本公开提供的解决时钟回拨问题的装置,其中,所述装置还包括预备处理模块,所述预备处理模块与所述第一模块相连且在第一模块之前,所述预备处理模块具体用于:
[0042]设置所述业务的备份数量;
[0043]基于所述备份数量分配所述业务的自身业务流程实例标识和每个备份的业务流程实例标识;
[0044]初始化所述业务的所述自身业务流程实例标识、所述每个备份业务流程实本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种解决时钟回拨问题的方法,其特征在于,包括:接收业务请求并生成分布式唯一标识,更新自身业务流程实例标识;获取所述业务的第一服务器时间,并判断所述第一服务器时间是否存在时钟回退;若判断所述第一服务器时间不存在时钟回退,则继续以不断更新的所述自身业务流程实例标识为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间;若判断所述第一服务器时间存在时钟回退,以备份业务流程实例标识中的一个备份业务流程实例标识及其对应的最新时间为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间。2.根据权利要求1所述的解决时钟回拨问题的方法,其特征在于,在所述接收业务生成的分布式唯一标识之前,还包括:设置所述业务的备份数量;基于所述备份数量分配所述业务的自身业务流程实例标识和每个备份的业务流程实例标识;初始化所述业务的所述自身业务流程实例标识、所述每个备份业务流程实例标识以及与所述每个备份业务流程实例标识对应的最新时间,其中最新时间的初始值为0毫秒。3.根据权利要求1所述的解决时钟回拨问题的方法,其特征在于,在所述选择所述备份业务流程实例标识中的一个备份业务流程实例标识以及对应的最新时间为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间之后,还包括:接收所述业务的第二服务器时间,并判断所述第二服务器时间是否存在时钟回退;若判断所述第二服务器时间不存在时钟回退,则继续以所述被选择的一个备份业务流程实例标识为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间;若判断所述第二服务器时间存在时钟回退,则从所述更新后的自身业务流程实例标识和其他备份业务流程实例标识中选择一个业务流程实例标识为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间。4.根据权利要求1所述的解决时钟回拨问题的方法,其特征在于,所述若判断所述第一服务器时间存在时钟回退,以备份业务流程实例标识中的一个备份业务流程实例标识及其对应的最新时间为基础,接收所述业务请求并生成分布式唯一标识,并更新最新时间,具体包括:确定时钟回退的时间;确定每个所述备份业务流程实例标识中对应的最新时间;将所述时钟回退的时间与所述每份所述备份业务流程实例标识中对应的最新时间相比较,判断所述时钟回退的时间是否不小于每个所述备份业务流程实例标识中对应的最新时间;筛选出时钟回退的时间不小于备份业务流程实例标识中对应的最新时间的第一个备份业务流程实例标识;将所述第一个备份业务流程实例标识作为被选择的备份业务流程实例标识并用来继续生成分布式唯一标识,同时更新最新时间;其中,第一个备份业务流程实例标识是按照备份业务流程实例标识的顺序依次与所述时钟回退的时间相比较获得。
5.根据权利要求3所述的解决时钟回拨问题的方法,其特征在于,所述若判断所述第二服务器时间存在时钟回退,则从所述更新后的自身业务流程实例标识和其他备份业务流程实例标识中选择一个业务流程实例标识为基础,接收所述业务请求并生成分布式唯一...

【专利技术属性】
技术研发人员:孙绍华
申请(专利权)人:北京汇钧科技有限公司
类型:发明
国别省市:

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

1