System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,特别涉及一种服务标识的生成方法及装置、电子设备、存储介质。
技术介绍
1、在分布式集群中,如何使并发的程序能够生成全局唯一标识码,是必然会遇到的问题。现在通用的方法有以下两类:
2、方法1:借助redis、自研等强一致性中心数据处理服务实现:服务需要id时向其请求,获取成功后使用。
3、方法2.预先给每个服务分配一个短的唯一标识码a,根据统一规则,自行生成长的唯一标识码c=a+自定义部分b。
4、但以上方法都有其不适用的情况,方法1的标识码生成方式决定了所有使用的地方必须向同一个服务请求标识码,且标识码是串行生成的,无法并行。这就导致了请求过程耗时、等待耗时比较久,无法发挥分布式的并发优势;而且一旦中心数据处理服务故障,唯一标识就无法生成,这会影响系统的健壮性。所以只适用于标识符生成频率低、对生成效率要求不高的场景。方法2在唯一标识码长度不受限制,或足够用的情况下适用。但如果长度受限制、标识码个数有限的情况,则标识码a的长度即限制了服务的个数(不能超过a所有表示的最大值),又导致标识码的浪费(服务个数不到a表示的最大值时)。所以这种方法在标识码资源比较紧张、服务个数可扩、缩的情况下不适用。
5、比如gat1400(公共安全行业标准ga/t1400)中的id数据类型businessobjectidtype,长度为33位,前14位根据系统和类型等已固定,15~28为精确到秒的14位时间串(20240722151406),仅29~33这最后5位是自定义,也即系统中每
技术实现思路
1、鉴于上述问题,本专利技术提出了一种服务标识的生成方法及装置、电子设备、存储介质。
2、在本专利技术的第一方面,首先提供了一种服务标识的生成方法,应用于分布式集群,所述分布式集群中部署有至少一个服务,所述服务有对应的服务类型,其特征在于,所述方法包括:
3、针对任一所述服务,当所述服务启动或接收到同服务类型的服务变更通知时,所述服务向服务管理中心发送服务变更请求;所述服务管理中心用于接收所述服务变更请求并根据所述服务的服务类型筛选出所有同类型服务;
4、所述服务接收所述服务管理中心返回的同类型服务个数以及排序位置;其中,所述排序位置为所述服务管理中心根据预设的排序策略对所述服务进行排序得到;
5、所述服务根据获取得到的同类型服务个数、排序位置以及规则标识符范围计算标识符范围的开始值和标识符个数阈值;
6、所述服务在当前时间所属的时间区间内,根据所述标识符范围的开始值和标识符个数阈值,生成唯一标识符。
7、可选地,针对任一所述服务,当所述服务启动或接收到同服务类型的服务变更通知时,所述服务向服务管理中心发送服务变更请求;所述服务管理中心用于接收所述服务变更请求并根据所述服务的服务类型筛选出所有同类型服务,包括:
8、当所述服务首次启动时,向所述服务管理中心请求注册所述服务的信息;所述服务管理中心用于记录所述服务的信息并根据所述服务的信息中记载的服务类型筛选出所有同类型服务;
9、或,
10、当所述服务接收到同服务类型的服务变更通知时,向所述服务管理中心发送服务变更请求;所述服务管理中心用于接收所述服务变更请求并实时根据所述服务的服务类型筛选出所有同类型服务。
11、可选地,所述服务接收所述服务管理中心返回的同类型服务个数以及排序位置,包括:
12、所述服务向所述服务管理中心请求获取同类型服务个数;所述服务管理中心用于接收所述服务获取同类型服务个数的请求,并返回根据所述服务的服务类型筛选出的所有同类型服务的个数;
13、所述服务在获取到所述服务管理中心返回的同类型服务个数后,所述服务向所述服务管理中心请求获取排序位置;所述服务管理中心用于接收所述服务获取排序位置的请求,并返回根据预设的排序策略对所述服务进行排序得到的排序位置。
14、可选地,所述服务标识符范围的开始值通过所述规则标识符范围除以所述同类型服务个数向下取整得到;
15、所述服务标识符范围的标识符个数阈值通过所述规则标识符范围除以所述同类型服务个数向下取整并乘以所述排序位置得到。
16、可选地,所述服务在当前时间所属的时间区间内,根据所述标识符范围的开始值和标识符个数阈值,生成唯一标识符,包括:
17、设置上一次生成唯一标识符时对应的时间区间与上一次生成唯一标识符时的序号为初始值;
18、获取所述服务的当前时间,并根据所述服务的当前时间确定所述服务当前时间所属的时间区间;
19、判断所述服务当前时间所属的时间区间与上一次生成唯一标识符时对应的时间区间是否一致;
20、若所述服务当前时间所属的时间区间与上一次生成唯一标识符时对应的时间区间一致,判断上一次生成唯一标识符时的序号是否小于所述服务的标识符个数阈值;
21、若上一次生成唯一标识符时的序号大于等于所述服务的标识符个数阈值,则计算所述服务当前时间到下一时间区间起始位置的睡眠时间;
22、所述服务在经过睡眠时间时长后,唤醒所述服务并重复执行获取所述服务的当前时间,并根据所述服务的当前时间确定所述服务当前时间所属的时间区间;
23、若上一次生成唯一标识符的序号小于所述服务的标识符个数阈值,更新所述上一次生成唯一标识符时的序号,将所述上一次生成唯一标识符时的序号增加预设数值,得到新的生成唯一标识符时的序号;
24、若所述服务当前时间所属的时间区间与上一次生成唯一标识符时对应的时间区间不一致,更新所述上一次生成唯一标识符时对应的时间区间为所述服务当前时间所属的时间区间,将所述上一次生成唯一标识符时的序号重置为初始值,得到新的生成唯一标识符时的序号;
25、所述服务的唯一标识符为固定部分与所述新的生成唯一标识符时的序号和所述服务标识符范围的开始值之和。
26、可选地,所述服务在当前时间所属的时间区间内,根据所述标识符范围的开始值和标识符个数阈值,生成唯一标识符之前,还包括:
27、对所述服务生成唯一标识符的过程添加线程锁。
28、所述服务在所述线程锁的保护下生成唯一标识符。
29、可选地,对所述服务生成唯一标识符的过程添加线程锁,包括:
30、创建所述线程锁;
31、在所述服务生成唯一标识符之前,获取所述线程锁;
32、在所述服务生成唯一标识符之后,释放所述线程锁。本文档来自技高网...
【技术保护点】
1.一种服务标识的生成方法,应用于分布式集群,所述分布式集群中部署有至少一个服务,所述服务有对应的服务类型,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,针对任一所述服务,当所述服务启动或接收到同服务类型的服务变更通知时,所述服务向服务管理中心发送服务变更请求;所述服务管理中心用于接收所述服务变更请求并根据所述服务的服务类型筛选出所有同类型服务,包括:
3.根据权利要求1或2所述的方法,其特征在于,所述服务接收所述服务管理中心返回的同类型服务个数以及排序位置,包括:
4.根据权利要求1所述的方法,其特征在于,所述服务标识符范围的开始值通过所述规则标识符范围除以所述同类型服务个数向下取整得到;
5.根据权利要求1或4所述的方法,其特征在于,所述服务在当前时间所属的时间区间内,根据所述标识符范围的开始值和标识符个数阈值,生成唯一标识符,包括:
6.根据权利要求5所述的方法,其特征在于,所述服务在当前时间所属的时间区间内,根据所述标识符范围的开始值和标识符个数阈值,生成唯一标识符之前,还包括:
< ...【技术特征摘要】
1.一种服务标识的生成方法,应用于分布式集群,所述分布式集群中部署有至少一个服务,所述服务有对应的服务类型,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,针对任一所述服务,当所述服务启动或接收到同服务类型的服务变更通知时,所述服务向服务管理中心发送服务变更请求;所述服务管理中心用于接收所述服务变更请求并根据所述服务的服务类型筛选出所有同类型服务,包括:
3.根据权利要求1或2所述的方法,其特征在于,所述服务接收所述服务管理中心返回的同类型服务个数以及排序位置,包括:
4.根据权利要求1所述的方法,其特征在于,所述服务标识符范围的开始值通过所述规则标识符范围除以所述同类型服务个数向下取整得到;
5.根据权利要求1或4所述的方法,其特征在于,所述服务在当前时间所属的时间区间内,根据所述标识符范...
【专利技术属性】
技术研发人员:孟丹丹,范小龙,郭军,刘文国,
申请(专利权)人:济南浪潮数据技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。