CN106571953A - 一种分布式唯一id生成方法 - Google Patents

一种分布式唯一id生成方法 Download PDF

Info

Publication number
CN106571953A
CN106571953A CN201610918689.5A CN201610918689A CN106571953A CN 106571953 A CN106571953 A CN 106571953A CN 201610918689 A CN201610918689 A CN 201610918689A CN 106571953 A CN106571953 A CN 106571953A
Authority
CN
China
Prior art keywords
interval
distributed unique
unique
distributed
hexadecimal
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.)
Pending
Application number
CN201610918689.5A
Other languages
English (en)
Inventor
阳建
李实�
彭添才
杨彪
占海华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dongguan Dayi Industry Chain Service Co Ltd
Original Assignee
Dongguan Dayi Industry Chain Service Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Dongguan Dayi Industry Chain Service Co Ltd filed Critical Dongguan Dayi Industry Chain Service Co Ltd
Priority to CN201610918689.5A priority Critical patent/CN106571953A/zh
Publication of CN106571953A publication Critical patent/CN106571953A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play

Abstract

本发明公开了一种分布式唯一ID生成方法,包括以下步骤:S1:设定分布式唯一ID的总位数,将分布式唯一ID的划分为若干个个区间;S2:获取服务器的节点名称,使用md5加密法将节点名称转化为十六进制的数字串,取数字串其中的一段作为分布式唯一ID的其中一个区间;S3:获取当前服务器时间,将当前时间转为十六进制后作为分布式唯一ID的其中一个区间;S4:从十六进制的0000‑ffff之间获取四位随机数作为分布式唯一ID的其中一个区间;S5:将从步骤S2‑S4中获得的区间拼接获得一个分布式唯一ID。本发明通过将一个多位数的ID划分成多个区间,采用不同的生成方法从而获得每个区间的数字串,有效地防止出现重复ID。

Description

一种分布式唯一ID生成方法
技术领域
本发明涉及数据处理技术领域,具体涉及一种分布式唯一ID生成方法。
背景技术
每一个服务器都有唯一的一个ID,为了区分每一个不同的服务器,正如人们的身份证一样,需要生成各不一样的ID才能辨别不一样的服务器,而目前的ID生成方法步骤繁琐,浪费计算机资源;并且传统的ID生成方法容易生成两个相同的ID。
发明内容
本发明的目的是针对现有技术中的上述不足,提供了一种分布式唯一ID生成方法。
本发明的目的通过以下技术方案实现:一种分布式唯一ID生成方法,包括以下步骤:
S1:设定分布式唯一ID的总位数,将分布式唯一ID划分为若干个区间;设定每个区间的位数;所述分布式唯一ID由所有区间拼接而成;
S2:获取服务器的节点名称,使用md5加密法将节点名称转化为十六进制的数字串,取数字串其中的一段作为分布式唯一ID的其中一个区间;
S3:启动服务器,获取当前服务器时间,将当前服务器的时间转为秒数和微秒数,并将当前秒数和微秒数转为十六进制后作为分布式唯一ID的其中一个区间;
S4:从十六进制的0000-ffff之间获取四位随机数作为分布式唯一ID的其中一个区间;
S5:将从步骤S2-S4中获得的区间拼接获得一个分布式唯一ID。
本发明进一步设置为,所述分布式唯一ID生成方法还包括有步骤S6:让CPU休眠时间T1后,重复步骤S1-S6。
本发明进一步设置为,在步骤S6中,CPU的休眠时间T1为5微秒。
本发明进一步设置为,在步骤S1中,所述分布式唯一ID的总位数为32位,将分布式唯一ID分为L1、L2、L3、L4、L5以及L6一共六个区间,所述L1、L2、L3、L4、L5以及L6的位数分别为4位、8位、8位、4位、4位以及4位。
本发明进一步设置为,在步骤S2中,获取数字串的前4位数字作为区间L1。
本发明进一步设置为,所述步骤S3包括有:
步骤A1:获取当前服务器时间,将当前服务器的时间转为unix时间戳,并转为8位数的16进制,作为区间L2;
步骤A2:再一次获取当前服务器时间的微秒数,并转为8位数的16进制,作为区间L3。
本发明进一步设置为,所述步骤S4包括有:
B1:从十六进制的0000-ffff之间获取四位随机数作为区间L4;
B2:从十六进制的0000-ffff之间获取四位随机数作为区间L5;
B2:从十六进制的0000-ffff之间获取四位随机数作为区间L6。
本发明进一步设置为,所述步骤S2、步骤S3以及步骤S4同时进行。
本发明的有益效果:本发明通过将一个多位数的ID划分成多个区间,采用不同的方法从而获得每个区间的数字串,能够增加获取的数字串的随机性,有效地防止出现重复的ID。
附图说明
利用附图对发明作进一步说明,但附图中的实施例不构成对本发明的任何限制,对于本领域的普通技术人员,在不付出创造性劳动的前提下,还可以根据以下附图获得其它的附图。
图1是本发明的流程示意图;
图2是本发明的具体流程图。
具体实施方式
结合以下实施例对本发明作进一步描述。
由图1可知;本实施例所述的一种分布式唯一ID生成方法,包括以下步骤:S1:设定分布式唯一ID的总位数,将分布式唯一ID的划分为若干个个区间;设定每个区间的位数;所述分布式唯一ID由所有区间拼接而成;通过将一个多位数的ID划分成多个区间,采用不同的方法从而获得每个区间的数字串,能够增加获取的数字串的随机性,并且与传统的ID生成方法相比,传统的方法需要每个字节逐个生成,本发明能够简化生成步骤,并且由于采用了不同的生成方法从而进一步防止出现重复的ID。
S2:获取服务器的节点名称,使用md5(信息-摘要算法5)加密法将节点名称转化为十六进制的数字串,取数字串其中的一段作为分布式唯一ID的其中一个区间;md5加密法能够将数据运算为数字串,并且具有抗修改性,哪怕修改一个字节,md5的数字串都有很大的区别,增加获取数字的随机性,进一步防止出现相同的ID值。
S3:启动服务器,获取当前服务器时间,将当前服务器的时间转为秒数和微秒数,并将当前秒数和微秒数转为十六进制后作为分布式唯一ID的其中一个区间;以计算机的诞生之日开始算起(1970年1月1日),获取当前的时间并且转为十六进制,由于以计算机的诞生之日开始算起,每次获取的时间都不一样,所以从秒数和微秒数转化为而成的十六进制数字串也不一样,增加获取数字的随机性,进一步防止出现相同的ID值。
S4:从十六进制的0000-ffff之间获取四位随机数作为分布式唯一ID的其中一个区间;随机抽取四位数能够增加获取数字的随机性,进一步防止出现相同的ID值。S5:将从步骤S2-S4中获得的区间拼接获得一个分布式唯一ID;将所有区间的数字串拼接在一起后,能够获得一个唯一的ID。
值得注意的是,上述步骤S1-S5中的S1、S2、S3……S5只是为了便于描述,并不为限定步骤顺序;本领域技术人员可以理解,并不需要严格按照上述顺序来执行上述步骤,例如,S2、S3、S4可以并列执行,也可以倒序或顺序执行。
本实施例所述的一种分布式唯一ID生成方法,所述分布式唯一ID生成方法还包括有步骤S6:让CPU休眠时间T1后,重复步骤S1-S6。本发明进一步设置为,在步骤S6中,CPU的休眠时间T1为5微秒。在生成ID的过程中,由于CPU不断地生成ID,有可能会发生高并发的现象,从而出现两个相同的ID,让CPU休息一段时间,能够有效地防止高并发的现象,保证了服务器生成的ID是绝对唯一的。
由图2可知,本实施例所述的一种分布式唯一ID生成方法,在步骤S1中,所述分布式唯一ID的总位数为32位,将分布式唯一ID分为L1、L2、L3、L4、L5以及L6一共六个区间,所述L1、L2、L3、L4、L5以及L6的位数分别为4位、8位、8位、4位、4位以及4位。通过将32位的ID分为六个区间,并且六个区间同时生成不同的数字串,能够加快唯一ID的生成速度,并且简化了生成步骤。
本实施例所述的一种分布式唯一ID生成方法,在步骤S2中,获取数字串的前4位数字作为区间L1。由于不同服务器具有不同的节点名称,故生成的数字串各不一样,取前4位能够保证ID的唯一性。
本实施例所述的一种分布式唯一ID生成方法,所述步骤S3包括有:
获取当前服务器时间,将当前服务器的时间转为unix时间戳,并转为8位数的16进制,作为区间L2;
步骤A2:再一次获取当前服务器时间的微秒数,并转为8位数的16进制,作为区间L3。由于以计算机的诞生之日开始算起,每次两次获取的时间都不一样,所以从秒数和微秒数转化而成的十六进制数字串也不一样,增加获取数字的随机性,进一步防止出现相同的ID值。
本实施例所述的一种分布式唯一ID生成方法,所述步骤S4包括有:
B1:从十六进制的0000-ffff之间获取四位随机数作为区间L4;
B2:从十六进制的0000-ffff之间获取四位随机数作为区间L5;
B2:从十六进制的0000-ffff之间获取四位随机数作为区间L6。
本发明进一步设置为,所述步骤S2、步骤S3以及步骤S4同时进行。将步骤S2、步骤S3以及步骤S4同时进行能够加快唯一ID的生成速度。
最后应当说明的是,以上实施例仅用以说明本发明的技术方案,而非对本发明保护范围的限制,尽管参照较佳实施例对本发明作了详细地说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的实质和范围。

Claims (8)

1.一种分布式唯一ID生成方法,其特征在于:包括以下步骤:S1:设定分布式唯一ID的总位数,将分布式唯一ID划分为若干个区间;设定每个区间的位数;所述分布式唯一ID由所有区间拼接而成;
S2:获取服务器的节点名称,使用md5加密法将节点名称转化为十六进制的数字串,取数字串其中的一段作为分布式唯一ID的其中一个区间;
S3:启动服务器,获取当前服务器时间,将当前服务器的时间转为秒数和微秒数,并将当前秒数和微秒数转为十六进制后作为分布式唯一ID的其中一个区间;
S4:从十六进制的0000-ffff之间获取四位随机数作为分布式唯一ID的其中一个区间;
S5:将从步骤S2-S4中获得的区间拼接获得一个分布式唯一ID。
2.根据权利要求1所述的一种分布式唯一ID生成方法,其特征在于:所述分布式唯一ID生成方法还包括有步骤S6:让CPU休眠时间T1后,重复步骤S1-S6。
3.根据权利要求2所述的一种分布式唯一ID生成方法,其特征在于:在步骤S6中,CPU的休眠时间T1为5微秒。
4.根据权利要求1所述的一种分布式唯一ID生成方法,其特征在于:在步骤S1中,所述分布式唯一ID的总位数为32位,将分布式唯一ID分为L1、L2、L3、L4、L5以及L6一共六个区间,所述L1、L2、L3、L4、L5以及L6的位数分别为4位、8位、8位、4位、4位以及4位。
5.根据权利要求4所述的一种分布式唯一ID生成方法,其特征在于:在步骤S2中,获取数字串的前4位数字作为区间L1。
6.根据权利要求4所述的一种分布式唯一ID生成方法,其特征在于:所述步骤S3包括有:步骤A1:获取当前服务器时间,将当前服务器的时间转为unix时间戳,并转为8位数的16进制,作为区间L2;
步骤A2:再一次获取当前服务器时间的微秒数,并转为8位数的16进制,作为区间L3。
7.根据权利要求4所述的一种分布式唯一ID生成方法,其特征在于:所述步骤S4包括有:B1:从十六进制的0000-ffff之间获取四位随机数作为区间L4;
B2:从十六进制的0000-ffff之间获取四位随机数作为区间L5;
B2:从十六进制的0000-ffff之间获取四位随机数作为区间L6。
8.根据权利要求1所述的一种分布式唯一ID生成方法,其特征在于:所述步骤S2、步骤S3以及步骤S4同时进行。
CN201610918689.5A 2016-10-21 2016-10-21 一种分布式唯一id生成方法 Pending CN106571953A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610918689.5A CN106571953A (zh) 2016-10-21 2016-10-21 一种分布式唯一id生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610918689.5A CN106571953A (zh) 2016-10-21 2016-10-21 一种分布式唯一id生成方法

Publications (1)

Publication Number Publication Date
CN106571953A true CN106571953A (zh) 2017-04-19

Family

ID=60414273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610918689.5A Pending CN106571953A (zh) 2016-10-21 2016-10-21 一种分布式唯一id生成方法

Country Status (1)

Country Link
CN (1) CN106571953A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108681528A (zh) * 2018-04-03 2018-10-19 卓望数码技术(深圳)有限公司 一种序列号生成方法和系统
CN109309736A (zh) * 2017-07-28 2019-02-05 北京京东尚科信息技术有限公司 全局唯一id的生成方法和生成装置
WO2019085350A1 (zh) * 2017-10-30 2019-05-09 平安科技(深圳)有限公司 识别码的生成方法和装置、计算机设备和存储介质
CN110109911A (zh) * 2018-01-10 2019-08-09 武汉斗鱼网络科技有限公司 分布式全局id生成方法、存储介质、电子设备及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040187015A1 (en) * 2003-03-21 2004-09-23 Kenneth J. Geer Generating numbers for use in product identifications
CN101242307A (zh) * 2008-02-01 2008-08-13 刘峰 用嵌入代码代理日志实现网站访问分析系统与方法
CN103838604A (zh) * 2013-12-13 2014-06-04 广东天拓资讯科技有限公司 分布式全球唯一id生成方法
CN105786628A (zh) * 2016-02-24 2016-07-20 浪潮通用软件有限公司 一种分布式系统线程同步的处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040187015A1 (en) * 2003-03-21 2004-09-23 Kenneth J. Geer Generating numbers for use in product identifications
CN101242307A (zh) * 2008-02-01 2008-08-13 刘峰 用嵌入代码代理日志实现网站访问分析系统与方法
CN103838604A (zh) * 2013-12-13 2014-06-04 广东天拓资讯科技有限公司 分布式全球唯一id生成方法
CN105786628A (zh) * 2016-02-24 2016-07-20 浪潮通用软件有限公司 一种分布式系统线程同步的处理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
P. LEACH, M. MEALLING, R. SALZ: "A Universally Unique IDentifier (UUID) URN Namespace", 《IETF》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109309736A (zh) * 2017-07-28 2019-02-05 北京京东尚科信息技术有限公司 全局唯一id的生成方法和生成装置
WO2019085350A1 (zh) * 2017-10-30 2019-05-09 平安科技(深圳)有限公司 识别码的生成方法和装置、计算机设备和存储介质
CN110109911A (zh) * 2018-01-10 2019-08-09 武汉斗鱼网络科技有限公司 分布式全局id生成方法、存储介质、电子设备及方法
CN108681528A (zh) * 2018-04-03 2018-10-19 卓望数码技术(深圳)有限公司 一种序列号生成方法和系统

Similar Documents

Publication Publication Date Title
Fan et al. Roll-DPoS: a randomized delegated proof of stake scheme for scalable blockchain-based internet of things systems
CN106571953A (zh) 一种分布式唯一id生成方法
JP6720463B2 (ja) ローカルコンセンサスを設定するための方法と装置およびコンピュータ可読記憶媒体
US11153098B2 (en) Systems, devices, and methods for recording a digitally signed assertion using an authorization token
WO2018112948A1 (zh) 区块生成方法、装置和区块链网络
US20210185038A1 (en) Method and apparatus for establishing trusted computing cluster
TW429365B (en) Cryptographic key generation system
Dani et al. Quorums quicken queries: Efficient asynchronous secure multiparty computation
CN109146677B (zh) 并行构建区块链视图的方法、计算机系统和可读存储介质
CN113612604B (zh) 面向异步网络的安全分布式随机数生成方法及装置
US20170359165A1 (en) One ins network-based anti-fault attack method of random infection
Kutten et al. Sublinear bounds for randomized leader election
GB2574828A (en) Leader selection for permissioned blockchain
EP3683678B1 (en) Computer-implemented method, computer program and data processing system
Han et al. Analysing and improving shard allocation protocols for sharded blockchains
CN109921897A (zh) 工作量证明计算的触发方法、装置、计算设备及存储介质
CN105894079B (zh) 时钟加扰电路
Park et al. A noble key pre-distribution scheme with LU matrix for secure wireless sensor networks
CN111813581A (zh) 一种基于完全二叉树的容错机制的配置方法
CN115396443B (zh) 基于时间因子的联盟链共识方法、装置、设备及存储介质
CN115941329A (zh) 区块链节点共识方法、装置、设备及存储介质
CN114205087B (zh) 一种基于区块链随机数产生的方法
CN110457006B (zh) 一种基于硬件的分布式多方随机数生成方法及系统
CN111200560B (zh) 微服务注册方法、装置、设备及存储介质
CN115378579A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20170419

RJ01 Rejection of invention patent application after publication