一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用户自定义的全局ID生成方法及装置

2022-08-17 11:19:29 来源:中国专利 TAG:

一种用户自定义的全局id生成方法及装置
技术领域
1.本发明涉及数据信息处理领域,特别涉及用户自定义的全局id领域,具体涉及一种用户自定义的全局id生成方法及装置。


背景技术:

2.随着互联网技术的飞速发展,原本单一的业务系统被拆分成数个相对独立的业务系统,每个业务系统的都有着各自的特点,不同系统的数据量、数据特点都存在巨大差异,在不同系统中,每一条数据都应有自己的id,这个id应该由用户自己的需求自定义生成的,这就涉及到用户自定义生成全局id的问题。
3.在现有的全局生成中,有通过uuid生成全局id,其特点是本地完成,无网络消耗,但是存在id长度与类型固定,不具有业务含义;有雪花算法或者雪花算法变形生成全局id,其特点是整体上按照时间自增,本地生成,不依赖数据库,性能好,但是仍然存在长度类型单一,无法区分业务类型,生成方法不具有扩展性,无法满足不同业务场景分布式标识与链路追踪需求。
4.综上所述,在现有的全局的id生成方法中,普遍存在扩展性差,不支持自定义业务的id,全局id类型单一,因此,如何提供一种新的全局id生成方案,解决上述问题成为该领域亟需解决的技术问题。


技术实现要素:

5.针对现有技术中存在的上述技术问题,本发明提供了一种用户自定义的全局id生成方法及装置,以至解决目前全局id生成方法中用户无法自定义的问题。具体技术方案如下:一种用户自定义的全局id生成方法,包括以下步骤:步骤s1、接收用户生成全局id自定义指令;步骤s2、自定义指令转化成一或多个自定义子指令,并做校验;步骤s3、根据自定义子指令生成自定义子指令序列,并转化为自定义指令序列;步骤s4、根据业务类型生成业务序列;步骤s5、校验此全局id是否存在,若存在,则重新生成全局id,直至生成唯一的全局id;步骤s6、存储全局id。
6.进一步的,全局id包含两部分组成,一部分为自定义指令序列,一部分为业务序列。
7.进一步的,步骤s1-步骤s3的自定义指令序列的生成流程,具体包括以下步骤:步骤一:获取用户生成全局id自定义指令;步骤二:自定义指令转化成一个或多个自定义子指令;步骤三:对自定义子指令进行排序,若设置了顺序,则按顺序序号小的在前,大的
在后排序,若未设置顺序,则按照默认顺序将子指令排序;步骤四:校验自定义子指令中自定义类型与自定义长度是否符合要求,若不符合要求,则该全局id生成流程结束;步骤五:校验自定义子指令是否设置了自定义值,若自定义子指令中未设置自定义值,则执行步骤七,若自定义子指令中设置了自定义值,执行步骤六;步骤六:校验自定义值是否符合自定义类型与自定义长度,若不符合,则执行步骤七,若符合,执行步骤八;步骤七:将自定义子指令交给自定义序列生成器生成自定义子序列;步骤八:保存当前自定义子序列;步骤九:将所有自定义子序列按照顺序生成自定义指令序列。
8.进一步的,所述自定义指令序列的长度具有扩展性,其长度由子指令序列的长度决定。
9.进一步的,所述自定义指令序列的类型具有扩展性,其类型由子指令序列的类型决定。
10.进一步的,根据业务类型从非关系型数据库中获取一个号段存在服务器缓冲区中;根据号段长度预设该号段最小业务序列值、预设该号段最大业务序列值。
11.进一步的,根据业务类型从号段中获取最小序列值;最小序列值的基础上加一,得到一个新的业务序列值;判断业务序列值是否超过最大业务序列值,如果超过,重新从非关系型数据库中获取一个新的号段存在服务器缓冲区中,根据号段长度预设该号段最小业务序列值、预设该号段最大业务序列值,并重新生成业务序列值;如果没有超过,则使用该序列值,并将号段的最小值设置为该业务序列值;生成的全局id会与非关系型数据库已经存在的全局id比较,验证是否存在,若存在,则重新生成自定义指令序列和业务系列,直至生成唯一的全局id。
12.进一步的,全局id的长度具有扩展性,其长度由自定义指令序列的长度与业务系列的长度决定;全局id的类型具有扩展性,其类型由自定义指令序列的类型与业务系列的类型决定。
13.进一步的,生成的全局id会存储在非关系型数据库中。
14.一种基于用户自定义的全局id生成装置,包括以下模块:接收用户指令模块,用于接收用户生成全局id自定义指令;指令分解与校验模块,用于指令转化成一或多个自定义子指令,并做校验;自定义指令序列生成模块,用于自定义指令序列生成;业务序列生成模块,用于业务序列生成;全局id校验模块,用于全局id唯一性校验;全局id存储模块,用于全局id存储。
15.根据所述技术方案,本发明的有益效果为:基于自定义指令的自定义类型与自定义长度,解决全局id类型单一的问题;通过自定义指令序列与业务序列相结合,解决了全局
id不支持业务含义、生成方法扩展性差的问题,实现全局id在不同业务场景具有分布式标识与链路追踪功能。
附图说明
16.附图是对本发明实施方式的进一步解释,并且构成说明书的一部分,与以下具体实施方式一起解释本发明额度实施方式,但是,附图并不是对本实施方式的限制;在附图中:图1是本发明的生成方法流程图;图2是本发明的自定义指令序列生成流程图;图3是本发明的生成装置连接图;图4是本发明的序列生成模块图。
具体实施方式
17.本发明申请的核心是一种用户自定义的全局id生成方法,全局id包括两个部分,一部分为自定义指令序列,一部分为业务序列,参照图4所示,在自定义指令序列中,其自定义类型可以是时间戳、字符、数字等,自定义指令序列类型具有扩展性;自定义指令序列的长度通过自定义指令中自定义长度设置,自定义指令序列的长度具有扩展性。业务序列根据自定义指令中的业务类型生成,其固定长度为20位,为数值类型。全局id由自定义指令序列和业务序列共同组成,其类型非固定,具有扩展性,全局id长度有自定义指令序列的长度和业务序列的长度共同组成,非定值,其长度具有扩展性。
18.本发明的一个实施例,参见图1,示出一种用户自定义的全局id生成方法,该生成方法的步骤包括:步骤s1、接收用户生成全局id自定义指令;步骤s2、自定义指令转化成一或多个自定义子指令,并做校验;步骤s3、根据自定义子指令生成自定义子指令序列,并转化为自定义指令序列;步骤s4、根据业务类型生成业务序列;步骤s5、校验此全局id是否存在,若存在,则重新生成全局id,直至生成唯一的全局id;步骤s6、存储全局id。
19.本发明的一个实施例,参见图2,描述步骤s1-步骤s3的自定义指令序列的生成流程,包含以下步骤:步骤一:获取用户生成全局id自定义指令;步骤二:自定义指令转化成一个或多个自定义子指令;步骤三:对自定义子指令进行排序,若设置了顺序,则按顺序序号小的在前,大的在后排序,若未设置顺序,则按照默认顺序将子指令排序;步骤四:校验自定义子指令中自定义类型与自定义长度是否符合要求,如果不符合要求,则该全局id生成流程结束;步骤五:校验自定义子指令是否设置了自定义值,若自定义子指令中未设置自定义值,则执行步骤七,若自定义子指令中设置了自定义值,执行步骤六;
步骤六:校验自定义值是否符合自定义类型与自定义长度,若不符合,则执行步骤七,若符合,执行步骤八;步骤七:将自定义子指令交给自定义序列生成器生成自定义子序列;步骤八:保存当前自定义子序列;步骤九:将所有自定义子序列按照顺序生成自定义指令序列。
20.本发明的一个实施例,步骤s3中描述业务序列的生成流程,包含以下步骤:步骤1:从用户自定义指令中获取业务类型;步骤2:根据业务类型,判断该业务类型的业务序列池是否初始化,若未初始化,则执行步骤3,若已经初始化则执行步骤6;步骤3:根据业务类型对业务序列池初始化,根据业务类型,从非关系性数据库中,从0开始,取出n个号;步骤4:根据步骤3得到号段,最小序列id为min是0,最大序列id为max=min n;步骤5:当前号段池范围即buffer[min,max],号段池buffer存在服务本地;步骤6:从buffer号段池生成一个业务序列id,业务序列id为sid=min 1;步骤7:校验sid是否大于max,如果sid大于max,根据业务类型,从非关系性数据库中,从max开始,取出n个号;步骤8:根据步骤七得到号段,最小序列id为min是max,最大序列id为max=min n,从步骤五开始重复执行;步骤9:校验sid是否大于99999,如果sid大于99999,从步骤3开始重复执行;步骤10:重新设置最小序列id的值min=sid;步骤11:生成一个业务序列id。
[0021]
本发明的一个实施例,参见图3,示出一种用户自定义的全局id生成装置,包括以下模块:接收用户指令模块,用于接收用户生成全局id自定义指令;指令分解与校验模块,用于指令转化成一或多个自定义子指令,并做校验;自定义指令序列生成模块,用于自定义指令序列生成;业务序列生成模块,用于业务序列生成;全局id校验模块,用于全局id唯一性校验;全局id存储模块,用于全局id存储。
[0022]
以上该仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献