The application discloses a distributed ID generation method, which comprises the following steps: S1. Reading the business type identification and ID generation parameters stored in the database; S2. Loading and caching the business type identification and ID generation parameters; S3. Keeping the corresponding relationship between the business type identification and ID generation parameters; S4. Receiving the ID generation instruction; S5. Searching the cache data according to the business type identification; S6. Determining The current value size of ID returns the result of ID generation; S7. Run the task of applying for a new ID segment. The distributed ID generation method of the application can generate globally unique and monotonically increasing ID. in any case, the ID will not be repeated or fallback. It has the ability to generate ID efficiently and provide multiple IDs.
【技术实现步骤摘要】
分布式ID生成
本申请涉及计算机
,尤其是涉及一种分布式ID生成方法和装置。
技术介绍
在分布式系统中,需要对数据、消息、http请求等进行唯一标识,要求产生全局唯一且单调递增的ID(identity,唯一编码),任何情况下ID不能重复或者回退,具备高效率产生ID和提供多种ID的能力。目前,常见的方案有UUID、Flicker方案、snowflake算法等,但已经不能满足需求,需要生成全局唯一ID的服务。
技术实现思路
本申请实施例提供一种分布式ID生成方法和装置。本申请实施例采用下述技术方案:一种分布式ID生成方法,其特征在于,所述分布式ID生成方法包括以下步骤:S1、读取数据库中存储的业务类型标识和ID生成参数,所述ID生成参数包括ID起始分配值、申请ID号段长度、最近一次申请ID号段时间和加载比例因子;S2、加载并缓存业务类型标识和ID生成参数;S3、所述业务类型标识与所述ID生成参数保持对应关系,根据所述ID生成参数,确定每个业务的ID当前值,ID当前值默认等于ID生成参数的ID起始分配值,缓存每个业务的ID当前值;S4、接收ID生成指令,所述ID生成指令携带某个业务类型标识为请求参数;S5、根据业务类型标识查找缓存数据,如果确定缓存中有该业务类型标识对应的ID当前值,获取ID当前值,将ID当前值加一设置为新的ID当前值;S6、判定ID当前值大小,返回ID生成结果:如果ID当前值大于ID起始分配值并且小于ID更新阈值,返 ...
【技术保护点】
1.一种分布式ID生成方法,其特征在于,所述分布式ID生成方法包括以下步骤:/nS1、读取数据库中存储的业务类型标识和ID生成参数,所述ID生成参数包括ID起始分配值、申请ID号段长度、最近一次申请ID号段时间和加载比例因子;/nS2、加载并缓存业务类型标识和ID生成参数;/nS3、所述业务类型标识与所述ID生成参数保持对应关系,根据所述ID生成参数,确定每个业务的ID当前值,ID当前值默认等于ID生成参数的ID起始分配值,缓存每个业务的ID当前值;/nS4、接收ID生成指令,所述ID生成指令携带某个业务类型标识为请求参数;/nS5、根据业务类型标识查找缓存数据,如果确定缓存中有该业务类型标识对应的ID当前值,获取ID当前值,将ID当前值加一设置为新的ID当前值;/nS6、判定ID当前值大小,返回ID生成结果:如果ID当前值大于ID起始分配值并且小于ID更新阈值,返回ID当前值,所述ID更新阈值为申请ID号段长度×加载比例因子+ID起始分配值;如果ID当前值大于ID更新阈值并且小于ID分配结束值,产生一个申请新ID段的任务,所述ID结束值为ID起始分配值加上申请ID号段长度;如果ID当 ...
【技术特征摘要】
1.一种分布式ID生成方法,其特征在于,所述分布式ID生成方法包括以下步骤:
S1、读取数据库中存储的业务类型标识和ID生成参数,所述ID生成参数包括ID起始分配值、申请ID号段长度、最近一次申请ID号段时间和加载比例因子;
S2、加载并缓存业务类型标识和ID生成参数;
S3、所述业务类型标识与所述ID生成参数保持对应关系,根据所述ID生成参数,确定每个业务的ID当前值,ID当前值默认等于ID生成参数的ID起始分配值,缓存每个业务的ID当前值;
S4、接收ID生成指令,所述ID生成指令携带某个业务类型标识为请求参数;
S5、根据业务类型标识查找缓存数据,如果确定缓存中有该业务类型标识对应的ID当前值,获取ID当前值,将ID当前值加一设置为新的ID当前值;
S6、判定ID当前值大小,返回ID生成结果:如果ID当前值大于ID起始分配值并且小于ID更新阈值,返回ID当前值,所述ID更新阈值为申请ID号段长度×加载比例因子+ID起始分配值;如果ID当前值大于ID更新阈值并且小于ID分配结束值,产生一个申请新ID段的任务,所述ID结束值为ID起始分配值加上申请ID号段长度;如果ID当前值大于ID分配结束值,返回错误;
S7、运行申请新ID段任务。
2.根据权利要求1所述的分布式ID生成方法,其特征在于,S1步骤为:读取MySQL数据库中存储的多个业务的业务类型标识及多个业务的ID生成参数。
3.根据权利要求1所述的分布式ID生成方法,其特征在于,缓存服务由Redis提供。
4.根据权利要求1所述的分布式ID生成方法,其特征在于,S7步骤为:
第一步,利用分布式锁,对更新任务进行加锁;
第二步,计算新申请ID号段长度,根据上一次更新号段的周期和申请ID号段长度,确定新申请ID号段长度;
第三步,根据目标业务类型标识...
【专利技术属性】
技术研发人员:杨造,
申请(专利权)人:上海摩库数据技术有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。