掌桥专利:专业的专利平台
掌桥专利
首页

基于ETCD键值版本号的ID生成方法及系统

文献发布时间:2023-06-19 18:32:25


基于ETCD键值版本号的ID生成方法及系统

技术领域

本发明属于计算机技术领域,特别是涉及一种基于ETCD键值版本号的ID生成方法及系统。

背景技术

在复杂分布式系统中,往往需要对大量的数据和消息进行唯一性标识,如在金融、电商、支付等产品的系统中,数据的日渐增长,传统数据库自增长ID生成的局限在于多个单体应用生成的ID可能是重复的,在分布式系统中,存在多个节点用于数据标识存储,单体应用由于自身存在的缺陷包括但不限于单节点故障、单节点计算能力不足等,无法满足分布式、微服务架构等等新兴技术实现的大型分布式应用。单纯用数据库自增长ID作为数据的ID显然不能满足需求,此时一个能生成全局唯一ID的系统非常必要。

分布式系统唯一ID的实现方案大致有5种,数据库生成ID、UUID生成ID、Redis生成ID、Zookeeper生成ID、雪花算法生成ID。其中,数据库生成ID虽然简单便利、ID号单调递增,但强依赖于数据库;UUID生成ID虽然性能很好,但生成的ID太长且信息不安全;Redis虽然不依赖数据库,但需要在系统中引入新的组件,增加系统的复杂度;Zookeeper生成ID需要依赖Zookeeper,还需要考虑分布式锁;雪花算法生成ID同样存在ID太长,并且强依赖机器时钟问题。

发明内容

本发明的目的在于克服现有技术的不足,提供一种基于ETCD键值版本号的ID生成方法及系统。

本发明的目的是通过以下技术方案来实现的:

根据本发明的第一方面,基于ETCD键值版本号的ID生成方法,包括:

接收用于生成ID的key;

操作ETCD模块更新所述key对应的value和键版本号;

获取所述键版本号,并根据所述key和键版本号生成ID。

进一步地,根据所述key和键版本号生成ID,包括:

若所述key为空,则使用所述键版本号作为ID;

若所述key不为空,则使用所述key和键版本号的组合作为ID。

根据本发明的第二方面,基于ETCD键值版本号的ID生成方法,包括:

根据ID生成模块的操作更新key对应的value,并生成键版本号,所述key为ID生成模块接收的用于生成ID的key;

将所述键版本号发送给ID生成模块,以使所述ID生成模块根据所述key和键版本号生成ID。

进一步地,ID生成模块根据所述key和键版本号生成ID,包括:

若所述key为空,则ID生成模块使用所述键版本号作为ID;

若所述key不为空,则ID生成模块使用所述key和键版本号的组合作为ID。

根据本发明的第三方面,基于ETCD键值版本号的ID生成系统,包括:

ID生成模块,用于接收用于生成ID的key,并操作ETCD模块更新所述key对应的value和键版本号,以及根据所述key和键版本号生成ID;

ETCD模块,用于根据ID生成模块的操作更新所述key对应的value和键版本号。

进一步地,根据所述key和键版本号生成ID,包括:

若所述key为空,则使用所述键版本号作为ID;

若所述key不为空,则使用所述key和键版本号的组合作为ID。

本发明的有益效果是:

(1)本发明可以方便地利用ETCD为分布式系统生成不重复、连号、单调递增、ID可分类的分布式唯一ID,避免了传统ID生成方式的一些弊端;例如,传统数字ID生成一般会固定位数,如用户ID通常有固定为7位ID或者11位ID;基于UUID生成ID则难以记忆并且一长串数字字母没有实际意义;雪花算法生成的ID和传统数字ID一样有固定位数限制、难以记忆以及可能因为时钟回拨问题产生重复;本发明生成的ID可以分类归类,而且可以携带有实际意义的信息在ID中,便于记忆和处理数据,不会依赖时钟,不会产生重复ID;

(2)ETCD 本身是一种KEY-VALUE存储组件,具有数据线性一致性、高可用性等等特点,本身能够提供高可用高并发和数据线性一致性的分布式KEY-VALUE存储组件,由于ETCD提供数据的多版本控制,且数据版本是单调递增的,依赖于该特性,本发明获取到的ID存在单调递增的性质;

(3)由于key的唯一性以及key的可自由组合性,那么key存储在ETCD模块中就可以进行分类,有相同类型需求的ID的key可由相同特征数据以及自身不同特征数据组合成唯一的key,那么这部分有相同数据特征的key就可归类为一组特殊的集合,从而达到ID分类的需求。

附图说明

图1为本发明中ID生成方法的一种实施例的流程图;

图2为本发明中ID生成方法的又一种实施例的流程图;

图3为本发明中ID生成系统的一种实施例的组成框图。

具体实施方式

下面将结合实施例,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

参阅图1-图3,本实施例提供了一种基于ETCD键值版本号的ID生成方法及系统:

本发明的第一方面提供了一种基于ETCD键值版本号的ID生成方法。如图1所示,所述ID生成方法包括步骤S100-步骤S300,以下详细说明。

步骤S100.ID生成模块接收用于生成ID的key。

一般的,所述key为空则表示使用预设的key值,例如,预设的key值为“GLOBAL_ID_KEY”;所述key不为空则表示使用此接收到的key值。该步骤中接收到的key作为生成键版本的key。

步骤S200.ID生成模块操作ETCD模块更新所述key对应的value和键版本号。

步骤S300.ID生成模块获取所述键版本号,并根据所述key和键版本号生成ID。

具体的,若所述key为空,则ID生成模块使用所述键版本号作为ID,例如123;若所述key不为空,则ID生成模块使用所述key和键版本号的组合(如“key_键版本号”)作为ID,例如user_123。

本发明的第二方面提供了一种基于ETCD键值版本号的ID生成方法。如图2所示,所述ID生成方法包括步骤K100-步骤K200,以下详细说明。

步骤K100.ETCD模块根据ID生成模块的操作更新key对应的value,并生成键版本号;所述key为ID生成模块接收的用于生成ID的key。

一般的,所述key为空则表示使用预设的key值,例如,预设的key值为“GLOBAL_ID_KEY”;所述key不为空则表示使用此接收到的key值。

步骤K200.ETCD模块将所述键版本号发送给ID生成模块,以使所述ID生成模块根据所述key和键版本号生成ID。

具体的,若所述key为空,则ID生成模块使用所述键版本号作为ID,例如123;若所述key不为空,则ID生成模块使用所述key和键版本号的组合(如“key_键版本号”)作为ID,例如user_123。

本发明的第三方面提供了一种基于ETCD键值版本号的ID生成系统。如图3所示,所述ID生成系统包括ID生成模块和ETCD模块。

ID生成模块用于接收用于生成ID的key,并操作ETCD模块更新所述key对应的value和键版本号,以及根据所述key和键版本号生成ID。

一般的,所述key为空则表示使用预设的key值,例如,预设的key值为“GLOBAL_ID_KEY”;所述key不为空则表示使用此接收到的key值。该步骤中接收到的key作为生成键版本的key。

具体的,若所述key为空,则ID生成模块使用所述键版本号作为ID,例如123;若所述key不为空,则ID生成模块使用所述key和键版本号的组合(如“key_键版本号”)作为ID,例如user_123。

ETCD模块用于根据ID生成模块的操作更新所述key对应的value和键版本号。

以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

相关技术
  • 一种生成缓存区域和缓存键值的方法及终端
  • 一种应用于键值存储系统中的数据合并方法和装置
  • 基于ETCD的虚拟网络地址高可用实现方法及系统
  • 一种基于ETCD的集群容灾管理方法、系统、设备及存储介质
技术分类

06120115601910