一种分布式序列号生成方法、装置、电子设备及存储介质与流程
- 国知局
- 2024-08-08 16:50:31
本公开涉及计算机,尤其涉及一种分布式序列号生成方法、装置、电子设备及存储介质。
背景技术:
1、目前数据库集群通常采用主从数据库配置,从数据库采用异步复制的方式获取主数据库的数据,当数据库集群发生主从切换时,从数据库变为新的主数据库,在切换过程中由于异步复制存在延迟性,新的主数据库会丢失部分数据,包括序列号及序列号位点,这会导致服务器生成重复的序列号,进而影响上游业务的连续性。
技术实现思路
1、为了解决上述提出的至少一个技术问题,本公开提出了一种分布式序列号生成方法、装置、电子设备及存储介质。
2、根据本公开的一些实施例中,提供了一种分布式序列号生成方法,包括:当接收序列号生成请求时,获取当前主库链接和当前主库序列号位点;在基于所述当前主库链接和历史主库链接判断出数据库发生主从切换的情况下,获取主从切换的耗时和数据库历史流量数据,所述历史主库链接为上一次接收序列号生成请求时的主库链接;根据所述主从切换的耗时和所述数据库历史流量数据,确定序列号位点丢失量,所述序列号位点丢失量指示数据库发生主从切换时因同步延迟导致的丢失位点数据;基于所述序列号位点丢失量,对所述当前主库序列号位点进行增量修正,得到修正后主库序列号位点;基于当前的所述序列号生成请求和所述修正后主库序列号位点,生成序列号。
3、基于上述方案,在检测到数据库发生主从切换时,通过确定因主从数据库同步延迟导致的序列号位点丢失量,并对切换后的新主库的序列号位点修正,从而避免新主库生成重复的序列号,确保上游业务的完整性。
4、在一些可能的实施方式中,所述根据所述主从切换的耗时和所述数据库历史流量数据,确定序列号位点丢失量,包括:根据所述数据库历史流量数据,确定数据库发生主从切换前的序列号平均生成频率以及历史序列号位点最大值,所述历史序列号位点最大值指示数据库发生主从切换前已经生成序列号的号段位点最大值;基于所述序列号平均生成频率和所述主从切换的耗时,得到序列号预计生成量;根据所述序列号位点最大值和所述序列号预计生成量,确定所述序列号位点丢失量。
5、基于上述方案,预测切换过程中可能生成的序列号量,并结合切换前的历史序列号位点最大值,能够得到可能的最大序列号位点丢失量,能够确保新主库的序列号位点修正后不会生成重复的序列号,同时也能减少修正过程中新主库序列号位点的浪费。
6、在一些可能的实施方式中,所述根据所述数据库历史流量数据,确定数据库发生主从切换前的序列号平均生成频率,包括:确定至少两个取样时间区间,各所述取样时间区间的长度不同,并且各所述取样时间区间的终点都是数据库主从切换发生时刻;基于每一所述取样时间区间的流量数据,得到所述取样时间区间的序列号生成频率;在目标取样时间区间的序列号生成频率为各所述序列号生成频率中的最大值的情况下,将所述目标取样时间区间的序列号生成频率确定为所述序列号平均生成频率,所述目标取样时间区间为所述至少两个取样时间区间中区间长度最短的取样时间区间。
7、基于上述方案,通过多次取样提取序列号生成频率,能够获取一段时间内序列号生成情况,取样时间越短,对应提取的序列号生成频率越接近瞬时生成频率,取样时间越长,对应提取的序列号生成频率越接近总平均生成频率,当瞬时生成频率大于总平均生成频率时,选取瞬时生成频率为序列号平均生成频率,从而保证预测的序列号生成量足够,避免后续位点修正不足导致序列号重复生成。
8、在一些可能的实施方式中,所述方法还包括:在所述目标取样时间区间的序列号生成频率不是各所述序列号生成频率中的最大值的情况下,根据所述数据库历史流量数据和所述数据库主从切换发生时刻,确定序列号生成频率参照值,所述序列号生成频率参照值指示不同日期中相同时刻的序列号瞬时生成频率的最大值;提取的各所述序列号生成频率中的最大值与所述序列号生成频率参照值中的较大值为所述序列号平均生成频率。
9、基于上述方案,瞬时生成频率小于总平均生成频率,即一段时间内序列号生成速度变化较大,通过参考不同日期中的相同时刻的生成频率,并与取样提取的最大频率对比获取最大值,能够降低局部变化导致的预测误差,确保预测的序列号生成量足够,避免后续位点修正不足导致序列号重复生成。
10、在一些可能的实施方式中,所述根据所述数据库历史流量数据,确定数据库发生主从切换前的序列号平均生成频率,包括:确定至少两个取样区间,各所述取样区间的区间长度一致,且各所述取区间的区间起点不同;基于每一所述取样时间区间的流量数据,得到所述取样时间区间的序列号生成频率;将各所述序列号生成频率的最大值确定为所述序列号平均生成频率。
11、基于上述方案,能够确定序列号生成最频繁阶段的序列号生成频率,将其作为序列号平均生成频率,在减少序列号浪费的同时,预测切换过程中的序列号生成量最大,切换后生成重复序列号的风险最小。
12、在一些可能的实施方式中,所述根据所述序列号位点最大值和所述序列号预计生成量,确定所述序列号位点丢失量,包括:根据所述序列号预计生成量,确定序列号位点使用量,所述序列号位点使用量指示生成所述序列号预计生成量所需的号段位点的最少数量;在所述序列号位点最大值上增加所述序列号位点使用量,得到所述序列号位点丢失量。
13、基于上述方案,在序列号预计生成量确定的前提下,通过计算序列号预计生成量所需的号段位点的最少数量,能够避免序列号位点修正时浪费过多的序列号位点。
14、在一些可能的实施方式中,所述方法还包括:在基于所述当前主库链接和历史主库链接判断出数据库未发生主从切换的情况下,获取上一条序列号生成请求对应的序列号;基于当前的所述序列号生成请求和所述上一条序列号生成请求对应的序列号,生成序列号。
15、基于上述方案,在数据库未发生主从切换时,序列号生成基于上一条序列号生成请求对应的序列号,能够保证序列号生成的连续性。
16、根据本公开的另一些实施例中,提供了一种分布式序列号生成装置,所述装置包括:第一获取模块,被配置为当接收序列号生成请求时,获取当前主库链接和当前主库序列号位点;判断模块,被配置为基于所述当前主库链接和历史主库链接判断出数据库是否发生主从切换,所述历史主库链接为上一次接收序列号生成请求时的主库链接;第二获取模块,被配置为当判断出数据库发生主从切换时,获取主从切换的耗时和数据库历史流量数据,当判断出数据库未发生主从切换时,获取上一条序列号生成请求对应的序列号;序列号生成单元,被配置为当判断出数据库发生主从切换时,基于所述主从切换的耗时和所述数据库历史流量数据,生成序列号,当判断出数据库未发生主从切换时,基于当前的所述序列号生成请求和所述上一条序列号生成请求对应的序列号,生成序列号。
17、根据本公开的另一些实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现上述一些实施例中所述的一种分布式序列号生成方法。
18、根据本公开的另一些实施例中,提供了一种电子设备,包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现上述一些实施例中所述的一种分布式序列号生成方法。
19、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
20、根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
本文地址:https://www.jishuxx.com/zhuanli/20240808/270713.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。