CN113420029B - 一种分布式系统全局id生成方法、装置、设备及介质 - Google Patents
一种分布式系统全局id生成方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN113420029B CN113420029B CN202110712706.0A CN202110712706A CN113420029B CN 113420029 B CN113420029 B CN 113420029B CN 202110712706 A CN202110712706 A CN 202110712706A CN 113420029 B CN113420029 B CN 113420029B
- Authority
- CN
- China
- Prior art keywords
- node
- global
- registration number
- distributed system
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000012544 monitoring process Methods 0.000 claims description 34
- 238000011084 recovery Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 10
- 238000004064 recycling Methods 0.000 claims description 4
- 230000001502 supplementing effect Effects 0.000 claims 2
- 238000012423 maintenance Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000004308 accommodation Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2291—User-Defined Types; Storage management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本申请公开了一种分布式系统全局ID生成方法、装置、设备及介质,包括:在zookeeper服务节点进行注册,并从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号;当获取到业务服务的全局ID分配请求,则生成相应的时间戳;利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。这样,利用了节点注册号,保证了全局ID的全局唯一性,依赖于时间戳,保证了全局ID的递增性,在本地生成全局ID,实现了全局ID生成的去中心化,使全局ID生成无需与中心节点进行交互,简化了ID生成链路,减少网络开销和维护,保证了全局ID的并发性和稳定性。
Description
技术领域
本申请涉及分布式技术领域,特别涉及一种分布式系统全局ID生成方法、装置、设备及介质。
背景技术
为了不断兼容服务器功能模块和业务场景的扩展,满足更多元化的资源管理场景,服务器的整体管理运行系统逐渐演变为分布式架构的系统,比如云操作系统。对于分布式系统,一方面,由于业务数据记录必须有独立的唯一标识来表明数据的唯一性,否则很难进行有效的数据筛选和获取,而使得相应的业务数据成为无效数据。另一方面,随着存储数据不断增长,通常会采用历史数据备份或者分库分表等技术来减少单表存储量,以提高查询和存储效率,但如果只依赖于数据库自增ID(即Identity document,身份标识号)很难满足上述技术的实现,因此,分布式系统全局唯一ID的设计与实现是必不可少的部分。
目前,在分布式环境下,系统各节点为保障ID具有全局唯一性,一般采用以下两种方式:第一,利用IEEE机器识别码或者网卡MAC(即Media Access Control,媒体介入控制层)地址的唯一性,如UUID(即Universally Unique Identifier,通用唯一识别码)。第二,依赖于中间件,比如,mysql、redis(即REmote DIctionary Server,远程字典服务器)、zookeeper、mongodb等,作为中心化节点协调和控制ID的唯一性。其中,UUID虽然保障了唯一性,但是无法保障ID的趋势递增,并且生成的ID长度过长还会带来不必要的内存和网络消耗等。利用中间件作为中心节点协调和控制ID的生成很显然也继承了中心化系统存在的问题,如:单点故障,单点瓶颈,网络消耗等。
发明内容
有鉴于此,本申请的目的在于提供一种分布式系统全局ID生成方法、装置、设备及介质,能够保证全局ID的全局唯一性以及递增性,并且去中心化,保证全局ID的并发性和稳定性。其具体方案如下:
第一方面,本申请公开了一种分布式系统全局ID生成方法,应用于分布式系统节点,包括:
在zookeeper服务节点进行注册,并从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号;
当获取到业务服务的全局ID分配请求,则生成相应的时间戳;
利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。
可选的,所述从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号,包括:
读取所述zookeeper服务节点的回收队列中最小的注册号,将该注册号作为所述分布式系统节点唯一的节点注册号;
若所述回收队列中没有注册号,则读取所述zookeeper服务节点中预设计数器当前的计数器值,将当前的计数器值作为所述分布式系统节点唯一的节点注册号,并控制所述预设计数器进行值加1操作。
可选的,还包括:
若所述预设计数器当前的计数器值达到预设阈值,则查询zookeeper服务节点中所有已注册节点的运行状态;
当查询到任一所述已注册节点的运行状态为服务关闭,则将该已注册节点的节点注册号回收至所述回收队列以及注销该已注册节点的节点注册信息。
可选的,所述查询zookeeper服务节点中所有已注册节点的运行状态,包括:
读取所述zookeeper服务节点中所有已注册节点的节点IP地址,基于所述节点IP地址查询相应的所述已注册节点的的运行状态。
可选的,还包括:
在本节点关闭服务之前,则将本节点的所述节点注册号回收至所述回收队列,并注销所述zookeeper服务节点中的本节点的节点注册信息。
可选的,还包括:
将所述节点注册号存入本节点的缓存;
相应的,所述利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID,包括:
从所述缓存中读取所述节点注册号,并利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。
可选的,还包括:
启动与所述zookeeper服务节点之间的心跳监控线程,并利用所述心跳监控线程更新所述zookeeper服务节点中的节点注册信息,以便监控节点查询所述节点注册信息。
第二方面,本申请公开了一种分布式系统全局ID生成装置,应用于分布式系统节点,包括:
节点注册模块,用于在zookeeper服务节点进行注册,并从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号;
时间戳生成模块,用于当获取到业务服务的全局ID分配请求,则生成相应的时间戳;
全局ID生成模块,用于利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述的分布式系统全局ID生成方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的分布式系统全局ID生成方法。
可见,本申请先在zookeeper服务节点进行注册,并从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号,当获取到业务服务的全局ID分配请求,则生成相应的时间戳,然后利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。也即,本申请先在zookeeper服务节点中获取本节点唯一的节点注册号,最终利用节点注册号以及时间戳生成业务服务的全局ID,这样,利用了节点注册号,保证了全局ID的全局唯一性,依赖于时间戳,保证了全局ID的递增性,在本地生成全局ID,实现了全局ID生成的去中心化,使全局ID生成无需与中心节点进行交互,简化了ID生成链路,减少网络开销和维护,保证了全局ID的并发性和稳定性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种分布式系统全局ID生成方法流程图;
图2为本申请公开的一种具体的节点注册信息存储结构示意图;
图3为本申请公开的一种具体的分布式系统全局ID生成方法流程图;
图4为本申请公开的一种具体的分布式系统全局ID生成方案示意图;
图5为本申请公开的一种分布式系统全局ID生成装置结构示意图;
图6为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,在分布式环境下,系统各节点为保障ID具有全局唯一性,一般采用以下两种方式:第一,利用IEEE机器识别码或者网卡MAC(即Media Access Control,媒体介入控制层)地址的唯一性,如UUID(即Universally Unique Identifier,通用唯一识别码)。第二,依赖于中间件,比如,mysql、redis(即REmote DIctionary Server,远程字典服务器)、zookeeper、mongodb等,作为中心化节点协调和控制ID的唯一性。其中,UUID虽然保障了唯一性,但是无法保障ID的趋势递增,并且生成的ID长度过长还会带来不必要的内存和网络消耗等。利用中间件作为中心节点协调和控制ID的生成很显然也继承了中心化系统存在的问题,如:单点故障,单点瓶颈,网络消耗等。为此,本申请提供了一种分布式系统全局ID生成方案,能够保证全局ID的全局唯一性以及递增性,并且去中心化,保证全局ID的并发性和稳定性。
参见图1所示,本申请实施例公开了一种分布式系统全局ID生成方法,应用于分布式系统节点,包括:
步骤S11:在zookeeper服务节点进行注册,并从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号。
在具体的实施方式中,节点启动时,在zookeeper服务节点进行注册,将节点注册信息存储在zookeeper服务节点中。
其中,节点注册信息包括节点IP地址,节点启动时间,节点注册号等信息。参见图2所示,图2为本申请实施例公开的一种具体的节点注册信息存储结构示意图。
步骤S12:当获取到业务服务的全局ID分配请求,则生成相应的时间戳。
目前,分布式系统包括多个业务服务,比如管理存储模块的业务服务、管理虚拟机的业务服务等,不同的业务服务需要不同的全局ID。在业务服服务需要时,请求分配全局ID。
步骤S13:利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。
并且,可以将所述节点注册号存入本节点的缓存;从所述缓存中读取所述节点注册号,并利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。
需要指出的是,节点注册号存储在本地内存缓存中,能够尽可能的减少I/O消耗。
在具体的实施方式中,可以采用Snowflake算法根据时间戳在单机环境下快速生成本地唯一ID。进一步的,本实施例将缓存中的节点注册号作为后缀补充到本地唯一ID,该ID就可以保障在分布式环境下全局唯一性,并且依赖于时间戳可以保障其趋势递增性,依赖于本地内存生成可以保证其并发性和稳定性。
例如,生成全局ID二进制格式如下所示:
0-00000000000000000000000000000000000000000-0000000000-000000000000;
第一位始终为0表示正数,然后41位表示毫秒级时间戳(41位的长度可以使用69年);然后十位表示节点注册号(最多可容纳1024个节点),最后12位为序列号,一毫秒内支持产生4096个ID序列号。
因为,只是启动时注册到zookeeper,因此只要在注册号允许的范围内节点可以任意的注册和注销,提高了系统的可扩展性。
可见,本申请实施例先在zookeeper服务节点进行注册,并从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号,当获取到业务服务的全局ID分配请求,则生成相应的时间戳,然后利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。也即,本申请先在zookeeper服务节点中获取本节点唯一的节点注册号,最终利用节点注册号以及时间戳生成业务服务的全局ID,这样,利用了节点注册号,保证了全局ID的全局唯一性,依赖于时间戳,保证了全局ID的递增性,在本地生成全局ID,实现了全局ID生成的去中心化,使全局ID生成无需与中心节点进行交互,简化了ID生成链路,减少网络开销和维护,保证了全局ID的并发性和稳定性。
参见图3所示,本申请实施例提供了一种具体的分布式系统全局ID生成方法,包括:
步骤S21:在zookeeper服务节点进行注册,并读取所述zookeeper服务节点的回收队列中最小的注册号,将该注册号作为所述分布式系统节点唯一的节点注册号。
步骤S22:若所述回收队列中没有注册号,则读取所述zookeeper服务节点中预设计数器当前的计数器值,将当前的计数器值作为所述分布式系统节点唯一的节点注册号,并控制所述预设计数器进行值加1操作。
在具体的实施方式中,若所述预设计数器当前的计数器值达到预设阈值,则查询zookeeper服务节点中所有已注册节点的运行状态;当查询到任一所述已注册节点的运行状态为服务关闭,则将该已注册节点的节点注册号回收至所述回收队列以及注销该已注册节点的节点注册信息。
进一步的,本申请实施例可以读取所述zookeeper服务节点中所有已注册节点的节点IP地址,基于所述节点IP地址查询相应的所述已注册节点的的运行状态。
另外,本申请实施例中,在本节点关闭服务之前,则将本节点的所述节点注册号回收至所述回收队列,并注销所述zookeeper服务节点中的本节点的节点注册信息。
也即,zookeeper服务节点除了节点注册信息的存储之外,还包括注册号生成器,注册号生成器由一个计数器和一个回收队列组成。该计数器的计数器值为新增节点的注册号,每新增一个节点计数器就会加1。计时器数值的位数决定了注册节点最大允许注册的节点数量,以8位无符号二进制为例,最大容纳的节点数量为255(2^8-1)。所有被注销节点只要其注册号小于计数器数值都会被记录到回收队列中。其中,数据结构如下所示(为便于展示均使用十进制):
计数器:/id/node/registry/num:67
回收队列:/id/node/recovery/list:3,8,45
计数器中67表示下一个新增节点注册到zookeeper服务节点的节点注册号。回收队列中3,8,45表示注册号为3,8,45的节点已经停止服务即注册号被回收。
新增节点注册号获取包括:首先读取回收队列,将队列头部最小注册号分配给新节点;如果回收队列为空,需读取计数器数值,如果该数值不为其上限值,将其作为注册号分配给新节点,并将计数器数值加1。如果计数器累加后到达上限值,此时需要节点根据zookeeper全量注册信息查询所有节点运行状态,将已关闭服务的节点注销并回收注册号到回收队列。需要指出的是,全量遍历节点状态,是防止有些节点不是正常关闭,其未进行节点注销。
另外,若回收队列无值并且计数器已到上限时,无法新增节点,需要修改计数器的上限值位数来扩展最大节点容纳量。
需要指出的是,前述步骤步骤S21、S22以及遍历节点运行状态的步骤均可以通过注册线程实现。
步骤S23:当获取到业务服务的全局ID分配请求,则生成相应的时间戳。
步骤S24:利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。
关于上述步骤S23、S24的具体实现过程可以参考前述实施例公开的内容,在此不再进行赘述。
进一步的,本申请实施例还可以启动与所述zookeeper服务节点之间的心跳监控线程,并利用所述心跳监控线程更新所述zookeeper服务节点中的节点注册信息,以便监控节点查询所述节点注册信息,以实现对各节点的监控。
需要指出的是,本申请实施例可以设置监控节点,当启用监控节点,则监控节点读取zookeeper服务节点中的节点注册信息,并利用节点注册信息向各分布式系统节点发送心跳线程启动请求,各节点启动与所述zookeeper服务节点之间的心跳监控线程,并利用所述心跳监控线程更新所述zookeeper服务节点中的节点注册信息,具体的,更新节点注册信息中的时间戳字段,以便监控节点在查询节点注册信息时,根据时间戳字段的内容判断节点状态,实现对节点的监控,另外,监控节点还可以修改节点注册信息。提高了系统的维护效率。
例如,参见图4所示,图4为本申请实施例公开的一种具体的分布式系统全局ID生成方案示意图。zookeeper服务节点作为注册节点,维护所有节点的注册信息和注册号生成器,并且,在具体的实施方式中,zookeeper服务可采用集群形式提高其高可用性。各节点启动时均主动注册到zookeeper服务节点并从中获取唯一的节点注册号,节点正常关闭时也会主动注销zookeeper服务节点注册信息和回收注册号。各节点包含统一的ID生成服务,ID生成服务利用生成算法和节点注册号完成唯一ID的生成,主要提节点注册、注册号存储、心跳监控线程、本地ID生成器等服务,各节点的业务服务(Business Server)在必要时从ID生成服务获取ID号。系统节点服务启动时ID生成服务会将节点信息注册到zookeeper服务节点中,并获取注册号。监控服务部署在一个相对独立的监控节点,主要提供zookeeper运行信息查询以及其关联服务节点注册信息查询和维护。心跳监控线程,用于监听注册表中个节点运行状态和编辑注册信息等。需要指出的是,监控节点是否部署并不影响分布式ID生成,其主要为系统提供一套界面化的监控与维护工具,提高维护工作效率。可以为维护人员提供节点注册信息查询与修改服务,如节点注册号使用和回收情况,手动修改节点注册号等,依赖于心跳监控线程。监控服务可以同时监听多个zookeeper单机/集群节点,即监控服务可以同时维护多套分布式系统。
参见图5所示,本申请实施例公开了一种分布式系统全局ID生成装置,应用于分布式系统节点,包括:
节点注册模块11,用于在zookeeper服务节点进行注册,并从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号;
时间戳生成模块12,用于当获取到业务服务的全局ID分配请求,则生成相应的时间戳;
全局ID生成模块13,用于利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。
可见,本申请实施例先在zookeeper服务节点进行注册,并从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号,当获取到业务服务的全局ID分配请求,则生成相应的时间戳,然后利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。也即,本申请先在zookeeper服务节点中获取本节点唯一的节点注册号,最终利用节点注册号以及时间戳生成业务服务的全局ID,这样,利用了节点注册号,保证了全局ID的全局唯一性,依赖于时间戳,保证了全局ID的递增性,在本地生成全局ID,实现了全局ID生成的去中心化,使全局ID生成无需与中心节点进行交互,简化了ID生成链路,减少网络开销和维护,保证了全局ID的并发性和稳定性。
其中,节点注册模块11,具体用于读取所述zookeeper服务节点的回收队列中最小的注册号,将该注册号作为所述分布式系统节点唯一的节点注册号;若所述回收队列中没有注册号,则读取所述zookeeper服务节点中预设计数器当前的计数器值,将当前的计数器值作为所述分布式系统节点唯一的节点注册号,并控制所述预设计数器进行值加1操作。
进一步的,节点注册模块11,还用于若所述预设计数器当前的计数器值达到预设阈值,则查询zookeeper服务节点中所有已注册节点的运行状态;当查询到任一所述已注册节点的运行状态为服务关闭,则将该已注册节点的节点注册号回收至所述回收队列以及注销该已注册节点的节点注册信息。
在具体的实施方式中,节点注册模块11,用于读取所述zookeeper服务节点中所有已注册节点的节点IP地址,基于所述节点IP地址查询相应的所述已注册节点的的运行状态。
并且,所述装置还包括:节点注销模块,用于在本节点关闭服务之前,则将本节点的所述节点注册号回收至所述回收队列,并注销所述zookeeper服务节点中的本节点的节点注册信息。
进一步的,所述装置还包括缓存模块,用于将所述节点注册号存入本节点的缓存;
相应的,全局ID生成模块12,具体用于从所述缓存中读取所述节点注册号,并利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。
另外,所述装置还包括心跳监控线程控制模块,用于启动与所述zookeeper服务节点之间的心跳监控线程,并利用所述心跳监控线程更新所述zookeeper服务节点中的节点注册信息,以便监控节点查询所述节点注册信息。
参见图6所示,本申请实施例公开了一种电子设备20,包括处理器21和存储器22;其中,所述存储器22,用于保存计算机程序;所述处理器21,用于执行所述计算机程序,前述实施例公开的分布式系统全局ID生成方法。
关于上述分布式系统全局ID生成方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
并且,所述存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,存储方式可以是短暂存储或者永久存储。
另外,所述电子设备20还包括电源23、通信接口24、输入输出接口25和通信总线26;其中,所述电源23用于为所述电子设备20上的各硬件设备提供工作电压;所述通信接口24能够为所述电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;所述输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的分布式系统全局ID生成方法。
关于上述分布式系统全局ID生成方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种分布式系统全局ID生成方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种分布式系统全局ID生成方法,其特征在于,应用于分布式系统节点,包括:
在zookeeper服务节点进行注册,并从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号;
当获取到业务服务的全局ID分配请求,则生成相应的时间戳;
利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID;
其中,所述利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID,包括:采用Snowflake算法并根据所述时间戳在单机环境下生成本地唯一ID;将位于缓存中的所述节点注册号作为后缀补充到所述本地唯一ID,以为所述业务服务生成全局ID。
2.根据权利要求1所述的分布式系统全局ID生成方法,其特征在于,所述从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号,包括:
读取所述zookeeper服务节点的回收队列中最小的注册号,将该注册号作为所述分布式系统节点唯一的节点注册号;
若所述回收队列中没有注册号,则读取所述zookeeper服务节点中预设计数器当前的计数器值,将当前的计数器值作为所述分布式系统节点唯一的节点注册号,并控制所述预设计数器进行值加1操作。
3.根据权利要求2所述的分布式系统全局ID生成方法,其特征在于,还包括:
若所述预设计数器当前的计数器值达到预设阈值,则查询zookeeper服务节点中所有已注册节点的运行状态;
当查询到任一所述已注册节点的运行状态为服务关闭,则将该已注册节点的节点注册号回收至所述回收队列以及注销该已注册节点的节点注册信息。
4.根据权利要求3所述的分布式系统全局ID生成方法,其特征在于,所述查询zookeeper服务节点中所有已注册节点的运行状态,包括:
读取所述zookeeper服务节点中所有已注册节点的节点IP地址,基于所述节点IP地址查询相应的所述已注册节点的的运行状态。
5.根据权利要求2所述的分布式系统全局ID生成方法,其特征在于,还包括:
在本节点关闭服务之前,则将本节点的所述节点注册号回收至所述回收队列,并注销所述zookeeper服务节点中的本节点的节点注册信息。
6.根据权利要求1所述的分布式系统全局ID生成方法,其特征在于,还包括:
将所述节点注册号存入本节点的缓存;
相应的,所述利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID,包括:
从所述缓存中读取所述节点注册号,并利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID。
7.根据权利要求1所述的分布式系统全局ID生成方法,其特征在于,还包括:
启动与所述zookeeper服务节点之间的心跳监控线程,并利用所述心跳监控线程更新所述zookeeper服务节点中的节点注册信息,以便监控节点查询所述节点注册信息。
8.一种分布式系统全局ID生成装置,其特征在于,应用于分布式系统节点,包括:
节点注册模块,用于在zookeeper服务节点进行注册,并从所述zookeeper服务节点中获取所述分布式系统节点唯一的节点注册号;
时间戳生成模块,用于当获取到业务服务的全局ID分配请求,则生成相应的时间戳;
全局ID生成模块,用于利用所述节点注册号以及所述时间戳为所述业务服务生成全局ID;
其中,所述全局ID生成模块,具体用于采用Snowflake算法并根据所述时间戳在单机环境下生成本地唯一ID;将位于缓存中的所述节点注册号作为后缀补充到所述本地唯一ID,以为所述业务服务生成全局ID。
9.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的分布式系统全局ID生成方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的分布式系统全局ID生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110712706.0A CN113420029B (zh) | 2021-06-25 | 2021-06-25 | 一种分布式系统全局id生成方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110712706.0A CN113420029B (zh) | 2021-06-25 | 2021-06-25 | 一种分布式系统全局id生成方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113420029A CN113420029A (zh) | 2021-09-21 |
CN113420029B true CN113420029B (zh) | 2024-04-12 |
Family
ID=77717669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110712706.0A Active CN113420029B (zh) | 2021-06-25 | 2021-06-25 | 一种分布式系统全局id生成方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113420029B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116060A (zh) * | 2021-11-26 | 2022-03-01 | 中企云链(北京)金融信息服务有限公司 | 一种全局唯一的分布式id生成方法 |
CN114363333B (zh) * | 2021-12-29 | 2023-11-28 | 胜斗士(上海)科技技术发展有限公司 | 分布式系统中分配机器id的方法、装置、设备与介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7440992B1 (en) * | 2003-09-16 | 2008-10-21 | Agent Software Corporation | Cell-based computing platform where services and agents interface within cell structures to perform computing tasks |
CN108108252A (zh) * | 2017-12-20 | 2018-06-01 | 马上消费金融股份有限公司 | 一种全局唯一id生成方法、系统及存储介质 |
CN108959386A (zh) * | 2018-05-31 | 2018-12-07 | 深圳壹账通智能科技有限公司 | 分布式全局唯一id生成方法、装置、设备和存储介质 |
CN109783126A (zh) * | 2019-01-10 | 2019-05-21 | 珠海金山网络游戏科技有限公司 | 一种分布式全局id生成方法及其装置 |
CN110619114A (zh) * | 2019-09-26 | 2019-12-27 | 北京明略软件系统有限公司 | 流水号生成方法及系统 |
CN110795399A (zh) * | 2019-09-29 | 2020-02-14 | 北京淇瑀信息科技有限公司 | 一种为应用产生机器id的方法、装置和系统 |
CN110830608A (zh) * | 2019-11-14 | 2020-02-21 | 腾讯科技(深圳)有限公司 | 一种全局唯一标识符生成方法、装置、设备及存储介质 |
CN111241011A (zh) * | 2019-12-31 | 2020-06-05 | 清华大学 | 一种分布式持久性内存的全局地址空间管理方法 |
CN112351110A (zh) * | 2020-11-27 | 2021-02-09 | 杭州安恒信息技术股份有限公司 | 基于zookeeper的ID分配方法、装置 |
CN112463790A (zh) * | 2020-11-03 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种微服务架构下快速生成id的方法、系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8447846B2 (en) * | 2010-08-06 | 2013-05-21 | International Business Machines Corporation | Using unique local unicast addresses in a global domain name server by providing a centralized registry |
-
2021
- 2021-06-25 CN CN202110712706.0A patent/CN113420029B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7440992B1 (en) * | 2003-09-16 | 2008-10-21 | Agent Software Corporation | Cell-based computing platform where services and agents interface within cell structures to perform computing tasks |
CN108108252A (zh) * | 2017-12-20 | 2018-06-01 | 马上消费金融股份有限公司 | 一种全局唯一id生成方法、系统及存储介质 |
CN108959386A (zh) * | 2018-05-31 | 2018-12-07 | 深圳壹账通智能科技有限公司 | 分布式全局唯一id生成方法、装置、设备和存储介质 |
CN109783126A (zh) * | 2019-01-10 | 2019-05-21 | 珠海金山网络游戏科技有限公司 | 一种分布式全局id生成方法及其装置 |
CN110619114A (zh) * | 2019-09-26 | 2019-12-27 | 北京明略软件系统有限公司 | 流水号生成方法及系统 |
CN110795399A (zh) * | 2019-09-29 | 2020-02-14 | 北京淇瑀信息科技有限公司 | 一种为应用产生机器id的方法、装置和系统 |
CN110830608A (zh) * | 2019-11-14 | 2020-02-21 | 腾讯科技(深圳)有限公司 | 一种全局唯一标识符生成方法、装置、设备及存储介质 |
CN111241011A (zh) * | 2019-12-31 | 2020-06-05 | 清华大学 | 一种分布式持久性内存的全局地址空间管理方法 |
CN112463790A (zh) * | 2020-11-03 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种微服务架构下快速生成id的方法、系统 |
CN112351110A (zh) * | 2020-11-27 | 2021-02-09 | 杭州安恒信息技术股份有限公司 | 基于zookeeper的ID分配方法、装置 |
Non-Patent Citations (2)
Title |
---|
Tree-based classification algorithm for heterogeneous unique item ID schemes;Lee, YH et al.;《International Conference on Embedded and Ubiquitous Computing》;20051231;全文 * |
基于Zookeeper的GIS集群实现;苟丽美;张锋叶;林国华;;计算机工程与设计(09);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113420029A (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113420029B (zh) | 一种分布式系统全局id生成方法、装置、设备及介质 | |
EP3418877A1 (en) | Data writing and reading method and apparatus, and cloud storage system | |
CN107820043B (zh) | 视频监控系统的控制方法、装置及系统 | |
CN111857873A (zh) | 一种实现云原生容器网络的方法 | |
CN110196860B (zh) | 唯一标识分配方法及装置、电子设备、存储介质 | |
CN114070822B (zh) | 一种Kubernetes Overlay IP地址管理方法 | |
CN109522043B (zh) | 一种配置数据的管理方法、装置及存储介质 | |
CN112492063A (zh) | 一种ip地址池分配、申请方法、装置、设备及介质 | |
CN103064717A (zh) | 一种集群系统并行安装软件的装置和方法 | |
CN111858190A (zh) | 提高集群可用性的方法及其系统 | |
CN114710549B (zh) | 一种容器平台中网卡的动态管理方法、系统及业务节点 | |
CN114500462A (zh) | 虚拟私有云网络地址分配方法、装置、电子设备及介质 | |
CN104793981A (zh) | 一种虚拟机集群的在线快照管理方法及装置 | |
CN107070719B (zh) | 一种设备管理方法和装置 | |
CN107451254B (zh) | 一种生成数据库表数据唯一标识的方法 | |
CN110417876A (zh) | 会话方法、分布式系统中的节点服务器及主控设备 | |
CN106993022A (zh) | 用于集群的标识管理方法、标识服务器及相应的系统 | |
CN107807931A (zh) | 模板信息管理的方法和系统 | |
CN112804276B (zh) | 虚拟化宽带远程接入服务器及其控制方法、通信系统 | |
CN104618414A (zh) | 一种分布式服务的实现方法、服务代理装置及分布式系统 | |
CN111008095A (zh) | 一种面向边缘云的状态快照生成和恢复方法 | |
CN116032614A (zh) | 容器网络微隔离方法、装置、设备和介质 | |
CN107273047B (zh) | 一种缓存管理方法、缓存管理器及存储管理软件 | |
CN115543687A (zh) | Etcd集群业务数据恢复方法、装置、设备及存储介质 | |
CN114020453A (zh) | 服务总线消息处理方法、服务总线系统、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |