一种批量生成ID的方法及终端技术

技术编号:21453904 阅读:73 留言:0更新日期:2019-06-26 04:46
本发明专利技术公开了一种批量生成ID的方法及终端,通过间隔第一时间定时向第一缓存批量写入ID,间隔第二时间定时向第二缓存批量写入ID,每次接收到调用ID请求时,均先从所述第一缓存读取ID,若所述第一缓存出现宕机或返回数据为空等没有返回正确ID的情况,则从所述第二缓存读取ID,区别于现有技术中仅有一个缓存来存放ID或是采用备份缓存的方式来提高ID可用性的方式,本发明专利技术间隔不同时间分别向两个缓存写入ID,通过写入与读取同时实现主从互备的方式,可以减少资源浪费,在快速批量生成ID的同时保证了ID的高可用性。

【技术实现步骤摘要】
一种批量生成ID的方法及终端
本专利技术涉及生成ID
,尤其是涉及一种批量生成ID的方法及终端。
技术介绍
在实际项目开发中存在有多种的ID生成方式,例如:1、数据库自增主键生成ID,这种方式的扩展较差,写性能决定了每秒生成ID的数量上限。在分布式数据库中容易出现主节点不可用,备节点也产生问题的情况,或是出现主节点生成的ID写入成功,但日志未同步到备节点,导致备节点生成重复ID的情况;若将一个数据库变成多个数据库同时进行生成ID的写入,例如三个数据库同时进行ID的生成写入,初始ID分别为1、2、3,自增幅度都为3,这时可以保证三个数据库生成的ID不重复,但会导致ID不是绝对递增,而是整体趋势上递增的问题,并且数据库写入的压力仍然很大,数据库容易成为具体功能的性能瓶颈;2、数据库批量生成ID,通过数据库创建一张ID_start表,初始化其中一行数据,例如设定初始值为1,取10个ID,就给该值加10,接着将这10个ID写入redis缓存,需要获取ID的应用直接通过redis缓存获取ID,同时后端存在定时任务默认补充ID到redis缓存中实现批量生成ID,但这种方式需要防止取到重复ID,并且当业务需求是每次只生成一个ID时,这种方式则无法适用,当redis宕机、网络不好或定时任务出现停机、异常时,也无法正常获取ID,影响业务使用。3、UUID,这种方式生成唯一的ID虽然可以保证产生的ID是为唯一的,效率较高,但UUID字符串过长且无实际意义,无法保证生成ID的递增趋势,根据UUID生成的ID建立索引会导致查询效率较低。4、根据当前时间的毫秒与微秒生成ID,这种方式生成ID延时低,索引性能高,但在1秒内请求过1000次后会出现ID重复的问题,不够完善。
技术实现思路
本专利技术所要解决的技术问题是:提供一种批量生成ID的方法及终端,在快速批量生成ID的同时保证了ID的高可用性。为了解决上述技术问题,本专利技术采用的一种技术方案为:一种批量生成ID的方法,包括步骤:S1、间隔第一时间定时向第一缓存批量写入ID,间隔第二时间定时向第二缓存批量写入ID;S2、接收调用ID请求,从所述第一缓存读取ID,判断所述第一缓存是否返回正确的ID,若否,则执行S3;S3、从所述第二缓存读取ID。为了解决上述技术问题,本专利技术采用的另一种技术方案为:一种批量生成ID的终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:S1、间隔第一时间定时向第一缓存批量写入ID,间隔第二时间定时向第二缓存批量写入ID;S2、接收调用ID请求,从所述第一缓存读取ID,判断所述第一缓存是否返回正确的ID,若否,则执行S3;S3、从所述第二缓存读取ID。本专利技术的有益效果在于:通过间隔第一时间定时向第一缓存批量写入ID,间隔第二时间定时向第二缓存批量写入ID,每次接收到调用ID请求时,均先从所述第一缓存读取ID,若所述第一缓存出现宕机或返回数据为空等没有返回正确ID的情况,则从所述第二缓存读取ID,区别于现有技术中仅有一个缓存来存放ID或是采用备份缓存的方式来提高ID可用性的方式,本专利技术间隔不同时间分别向两个缓存写入ID,通过写入与读取同时实现主从互备的方式,可以减少资源浪费,在快速批量生成ID的同时保证了ID的高可用性。附图说明图1为本专利技术实施例的一种批量生成ID的方法的步骤流程图;图2为本专利技术实施例的一种批量生成ID的终端的结构示意图;图3为本专利技术实施例的一种批量生成ID的方法的步骤流程图;标号说明:1、一种批量生成ID的终端;2、存储器;3、处理器。具体实施方式为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。本专利技术最关键的构思在于:间隔第一时间定时向第一缓存批量写入ID,间隔第二时间定时向第二缓存批量写入ID,接收调用ID请求时优先访问第一缓存读取ID,若第一缓存未返回正确的ID,则访问第二缓存读取ID。请参照图1,一种批量生成ID的方法,包括步骤:S1、间隔第一时间定时向第一缓存批量写入ID,间隔第二时间定时向第二缓存批量写入ID;S2、接收调用ID请求,从所述第一缓存读取ID,判断所述第一缓存是否返回正确的ID,若否,则执行S3;S3、从所述第二缓存读取ID。从上述描述可知,本专利技术的有益效果在于:通过间隔第一时间定时向第一缓存批量写入ID,间隔第二时间定时向第二缓存批量写入ID,每次接收到调用ID请求时,均先从所述第一缓存读取ID,若所述第一缓存出现宕机或返回数据为空等没有返回正确ID的情况,则从所述第二缓存读取ID,区别于现有技术中仅有一个缓存来存放ID或是采用备份缓存的方式来提高ID可用性的方式,本专利技术间隔不同时间分别向两个缓存写入ID,通过写入与读取同时实现主从互备的方式,可以减少资源浪费,在快速批量生成ID的同时保证了ID的高可用性。进一步的,所述第一缓存和第二缓存分别设置在不同的机器上;所述步骤S1具体为:通过第一任务间隔第一时间定时获取ID,并将获取到的ID批量写入第一缓存;通过第二任务间隔第二时间定时获取ID,并将获取到的ID批量写入第二缓存;同一时间点只允许一个任务获取ID。由上述描述可知,将两个缓存设置在不同的机器上,降低两个缓存同时出现故障的情况,提高了可靠性,通过两个任务分别对应两个缓存进行ID写入操作,整体上加快了获取ID并写入缓存的效率,同一时间点只允许一个任务获取ID,可以避免重复获取ID,保证ID的唯一性,从而实现ID的零概率重复。进一步的,所述步骤S1之前包括:预设ID生成配置表,所述ID生成配置表包括修改版本号字段;所述同一时间点只允许一个任务获取ID具体为:当前任务获取所述ID生成配置表中的修改版本号,将所述修改版本号加一作为当前任务对应的第一信息,判断当前任务对应的第一信息是否大于所述ID生成配置表中的修改版本号,若是,则允许当前任务获取ID,若否,则禁止当前任务获取ID。由上述描述可知,当前任务在获取ID前先将获取到的修改版本号加一与当前修改版本号进行比对,若获取到的修改版本号加一大于当前修改版本号,则说明此时只有当前任务在获取ID,即可正常获取ID,否则说明此时还有另一个任务在获取ID,则禁止当前任务获取ID,通过所述修改版本号避免重复获取ID,简单快捷地保证了ID的唯一性,提高效率。进一步的,所述ID生成配置表还包括ID开始字段;所述获取ID具体为:根据所述ID生成配置表中的ID开始字段获取生成的ID,并根据获取到的ID的数量更新所述ID开始字段。由上述描述可知,根据所述ID开始字段获取ID,并在获取ID完毕后更新所述ID开始字段,可以避免获取重复ID,保证ID的唯一性。进一步的,所述定时获取ID包括:定时查询当前任务对应的缓存中的ID个数是否低于预设值,若是,则获取ID。由上述描述可知,只有在缓存中的ID个数低于预设值时才获取ID并写入对应的缓存,可以避免资源浪费,提高效率。请参照图2,一种批量生成ID的终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:S1、间隔第一时间定时向第一缓存批量写入ID,间隔第二时间定时向第二缓存批本文档来自技高网
...

【技术保护点】
1.一种批量生成ID的方法,其特征在于,包括步骤:S1、间隔第一时间定时向第一缓存批量写入ID,间隔第二时间定时向第二缓存批量写入ID;S2、接收调用ID请求,从所述第一缓存读取ID,判断所述第一缓存是否返回正确的ID,若否,则执行S3;S3、从所述第二缓存读取ID。

【技术特征摘要】
1.一种批量生成ID的方法,其特征在于,包括步骤:S1、间隔第一时间定时向第一缓存批量写入ID,间隔第二时间定时向第二缓存批量写入ID;S2、接收调用ID请求,从所述第一缓存读取ID,判断所述第一缓存是否返回正确的ID,若否,则执行S3;S3、从所述第二缓存读取ID。2.根据权利要求1所述的一种批量生成ID的方法,其特征在于,所述第一缓存和第二缓存分别设置在不同的机器上;所述步骤S1具体为:通过第一任务间隔第一时间定时获取ID,并将获取到的ID批量写入第一缓存;通过第二任务间隔第二时间定时获取ID,并将获取到的ID批量写入第二缓存;同一时间点只允许一个任务获取ID。3.根据权利要求2所述的一种批量生成ID的方法,其特征在于,所述步骤S1之前包括:预设ID生成配置表,所述ID生成配置表包括修改版本号字段;所述同一时间点只允许一个任务获取ID具体为:当前任务获取所述ID生成配置表中的修改版本号,将所述修改版本号加一作为当前任务对应的第一信息,判断当前任务对应的第一信息是否大于所述ID生成配置表中的修改版本号,若是,则允许当前任务获取ID,若否,则禁止当前任务获取ID。4.根据权利要求3所述的一种批量生成ID的方法,其特征在于,所述ID生成配置表还包括ID开始字段;所述获取ID具体为:根据所述ID生成配置表中的ID开始字段获取生成的ID,并根据获取到的ID的数量更新所述ID开始字段。5.根据权利要求2所述的一种批量生成ID的方法,其特征在于,所述定时获取ID包括:定时查询当前任务对应的缓存中的ID个数是否低于预设值,若是,则获取ID。6.一种批量生成ID的终端,包括存储器、处理器及存储...

【专利技术属性】
技术研发人员:刘德建林伟郭玉湖
申请(专利权)人:福建天泉教育科技有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1