System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请实施例涉及分布式,尤其涉及一种基于k8s环境的分布式id生成方法及k8s分布式系统。
技术介绍
1、分布式系统中常见的问题之一是id冲突。即使使用了时间戳、计数器或雪花算法等方法生成id,由于并发操作或者其他原因,仍然可能出现id冲突的情况。这可能导致系统中出现重复的id,从而引发数据一致性和业务逻辑错误。在k8s环境中,由于部署的pod可以在不同的节点上运行,并且在pod的生命周期内可能会发生副本的扩容和缩容,因此现有的id生成方法可能会导致生成的id不一致。例如,如果使用基于节点标识的机器id来生成id,而在pod发生迁移或重启时,节点标识可能会改变,导致生成的id不一致。
技术实现思路
1、本申请实施例提供了一种基于k8s环境的分布式id生成方法及k8s分布式系统,可以在pod扩容时分配唯一的机器标识,从而避免了生成的分布式id发生id冲突的问题。
2、本申请实施例第一方面提供了一种基于k8s环境的分布式id生成方法,应用于k8s分布式系统,包括:
3、当目标pod实例启动时,从数据库中获取机器标识集合,所述机器标识集合中的任意两个机器标识均不相同;
4、根据所述机器标识集合生成所述目标pod实例的目标标识,所述目标标识与所述机器标识集合中的任意一个机器标识均不相同;
5、将所述目标标识存入所述机器标识集合;
6、当所述目标pod实例需要生成标识码时,获取当前时间戳;
7、根据所述当前时间戳和所述目
8、可选的,所述根据所述机器标识集合生成所述目标pod实例的目标标识包括:
9、获取与所述机器标识集合相关的机器标识删除集合,所述机器标识删除集合中保存有从所述机器标识集合中最近删除的机器标识;
10、从所述机器标识删除集合中获取任意一个机器标识作为所述目标pod实例的目标标识。
11、可选的,所述从所述机器标识删除集合中获取任意一个机器标识作为所述目标pod实例的目标标识之后,所述方法还包括:
12、删除所述机器标识删除集合中与所述目标标识一致的机器标识。
13、可选的,所述根据所述机器标识集合生成所述目标pod实例的目标标识包括:
14、获取机器标识的取值范围;
15、根据所述取值范围与所述机器标识集合生成目标范围,所述目标范围与所述机器标识集合组成所述取值范围;
16、从所述目标范围中随机获取一个值作为所述目标pod实例的目标标识。
17、可选的,所述根据所述当前时间戳和所述目标标识生成分布式id之后,所述方法还包括:
18、更新所述机器标识集合中每个机器标识的最后活跃时间。
19、可选的,所述更新所述机器标识集合中每个机器标识的活跃时间之后,所述方法还包括:
20、根据每个机器标识的最后活跃时间判断所述机器标识集合中是否存在失效标识;
21、若是,则删除所述失效标识。
22、可选的,所述将所述目标标识存入所述机器标识集合之后,所述方法还包括:
23、当所述目标pod实例关闭时,删除所述机器标识集合中的目标标识。
24、本申请实施例第二方面提供了一种k8s分布式系统,包括:
25、第一获取单元,用于当目标pod实例启动时,从数据库中获取机器标识集合,所述机器标识集合中的任意两个机器标识均不相同;
26、第一生成单元,用于根据所述机器标识集合生成所述目标pod实例的目标标识,所述目标标识与所述机器标识集合中的任意一个机器标识均不相同;
27、存储单元,用于将所述目标标识存入所述机器标识集合;
28、第二获取单元,用于当所述目标pod实例需要生成标识码时,获取当前时间戳;
29、第二生成单元,用于根据所述当前时间戳和所述目标标识生成分布式id。
30、可选的,所述第一生成单元具体用于:
31、获取与所述机器标识集合相关的机器标识删除集合,所述机器标识删除集合中保存有从所述机器标识集合中最近删除的机器标识;
32、从所述机器标识删除集合中获取任意一个机器标识作为所述目标pod实例的目标标识。
33、可选的,所述k8s分布式系统还包括第一删除单元,所述第一删除单元用于:
34、删除所述机器标识删除集合中与所述目标标识一致的机器标识。
35、可选的,所述第一生成单元具体用于:
36、获取机器标识的取值范围;
37、根据所述取值范围与所述机器标识集合生成目标范围,所述目标范围与所述机器标识集合组成所述取值范围;
38、从所述目标范围中随机获取一个值作为所述目标pod实例的目标标识。
39、可选的,所述k8s分布式系统还包括更新单元,所述更新单元用于:
40、更新所述机器标识集合中每个机器标识的最后活跃时间。
41、可选的,所述k8s分布式系统还包括判断单元,所述判断单元用于:
42、根据每个机器标识的最后活跃时间判断所述机器标识集合中是否存在失效标识;
43、若是,则删除所述失效标识。
44、可选的,所述k8s分布式系统还包括第二删除单元,所述第二删除单元用于:
45、当所述目标pod实例关闭时,删除所述机器标识集合中的目标标识。
46、本申请实施例第三方面提供了一种k8s分布式系统,包括多个节点,每个节点包括:
47、处理器、存储器、输入输出单元以及总线;
48、所述处理器与所述存储器、所述输入输出单元以及所述总线相连;
49、所述存储器中保存有程序,所述处理器调用所述程序执行第一方面及第一方面任意一种可能的实施方式中的方法。
50、本申请实施例第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时使得所述计算机执行第一方面及第一方面任意一种可能的实施方式中的方法。
51、从以上技术方案可以看出,本申请实施例具有以下优点:
52、本申请实施例提供的方法,机器标识集合中保存有已占用的机器标识,在目标pod实例启动需要分配机器标识时,访问机器标识集合从而生成未被占用的目标标识,能够保证目标标识的唯一性,利用具有唯一性的目标标识生成分布式id,有利于避免生成的分布式id发生id冲突的问题。
本文档来自技高网...【技术保护点】
1.一种基于k8s环境的分布式ID生成方法,应用于k8s分布式系统,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述机器标识集合生成所述目标POD实例的目标标识包括:
3.根据权利要求2所述的方法,其特征在于,所述从所述机器标识删除集合中获取任意一个机器标识作为所述目标POD实例的目标标识之后,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述根据所述机器标识集合生成所述目标POD实例的目标标识包括:
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述根据所述当前时间戳和所述目标标识生成分布式ID之后,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述更新所述机器标识集合中每个机器标识的活跃时间之后,所述方法还包括:
7.根据权利要求1至4中任一项所述的方法,其特征在于,所述将所述目标标识存入所述机器标识集合之后,所述方法还包括:
8.一种k8s分布式系统,其特征在于,包括:
9.一种k8s分布式系统,其特征在于,包括多个节
10.一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时,使得所述计算机执行如权利要求1至7中任一项所述的方法。
...【技术特征摘要】
1.一种基于k8s环境的分布式id生成方法,应用于k8s分布式系统,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述根据所述机器标识集合生成所述目标pod实例的目标标识包括:
3.根据权利要求2所述的方法,其特征在于,所述从所述机器标识删除集合中获取任意一个机器标识作为所述目标pod实例的目标标识之后,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述根据所述机器标识集合生成所述目标pod实例的目标标识包括:
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述根据所述当前时间戳和所述目标标识生...
【专利技术属性】
技术研发人员:李建威,周晓鑫,林晖,
申请(专利权)人:深圳市新国都支付技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。