CN106571953A - 一种分布式唯一id生成方法 - Google Patents
一种分布式唯一id生成方法 Download PDFInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0806—Configuration 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生成方法,包括以下步骤:
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同时进行。
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)
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)
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 | 浪潮通用软件有限公司 | 一种分布式系统线程同步的处理方法 |
-
2016
- 2016-10-21 CN CN201610918689.5A patent/CN106571953A/zh active Pending
Patent Citations (4)
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)
Title |
---|
P. LEACH, M. MEALLING, R. SALZ: "A Universally Unique IDentifier (UUID) URN Namespace", 《IETF》 * |
Cited By (4)
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 |