CN108282531A - 一种基于分布式***的唯一性id生成方法 - Google Patents
一种基于分布式***的唯一性id生成方法 Download PDFInfo
- Publication number
- CN108282531A CN108282531A CN201810068918.8A CN201810068918A CN108282531A CN 108282531 A CN108282531 A CN 108282531A CN 201810068918 A CN201810068918 A CN 201810068918A CN 108282531 A CN108282531 A CN 108282531A
- Authority
- CN
- China
- Prior art keywords
- waiter
- uniqueness
- useful person
- distributed system
- contract
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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/2228—Indexing structures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种基于分布式***的唯一性ID生成方法,包含以下步骤:A、首先项目应用启动未完成之后,开启同步定时任务,定期调用redis注册,续约instanceId;B、然后注册一个特定时长的ID服务生成器来生成服务实例,之后归并入步骤A中的同步定时任务中去,当ID服务生成器实例存在时,会对服务进行续约,如果续约不成功进入一个短暂的等待阶段,之后会重新生成一个新的ID服务生成器,避免业务的间断情况,当ID服务生成器实例不存在时,会立即重新生成新的ID服务实例生成器,本发明有效解决了使用分布式***时,***架构面临全局ID生成可能会出现重复ID,导致整个业务无法正常进行的客观问题。
Description
技术领域
本发明涉及一种ID生成方法,具体是一种基于分布式***的唯一性ID生成方法。
背景技术
当前为解决分布式***的唯一ID有以下解决办法:
1.使用UUID生成唯一ID;
2.使用数据库sequence (序列,一种ID自增策略)
3.使用twitter的雪花算法生成全局ID;
4.使用MongoDB的objectId来生成全局唯一ID。
上述方法存在以下缺点:
UUID:无序,过长,难以建立索引。
MongoDB ObjectId:过长,非纯数字。
数据库自增序列:中心生成,有性能瓶颈。
雪花算法:中心生成,独立部署ID生成器。
发明内容
本发明的目的在于提供一种基于分布式***的唯一性ID生成方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于分布式***的唯一性ID生成方法,包含以下步骤:
A、首先项目应用启动未完成之后,开启同步定时任务,定期调用redis注册,续约instanceId;
B、注册一个特定时长的ID服务生成器来生成服务实例,之后归并入步骤A中的同步定时任务中去,当ID服务生成器实例存在时,会对服务进行续约,如果续约不成功进入一个短暂的等待阶段,之后会重新生成一个新的ID服务生成器,避免业务的间断情况,当ID服务生成器实例不存在时,会立即重新生成新的ID服务实例生成器。
作为本发明再进一步的方案:ID服务实例生成器的生成是根据所在网关的IPV4地址,进行机器唯一服务id的获取工作。
作为本发明再进一步的方案:ID的具体生成策略:ID为64位的2进制数,最后会将其转化为14位的10进制长整型数。
作为本发明再进一步的方案:在生成64位2进制数时,最高位的字节会被标记为不可用,前41位字节是以微秒为单位的timestamp,紧接着10个字节为redis根据IPV4生成的机器ID,最后12个字节是累加计数器,该计数器在***内。
与现有技术相比,本发明的有益效果是:1、效率高,速度快;2、综合了其他技术的优点,有效解决了使用分布式***时,***架构面临全局ID生成可能会出现重复ID,导致整个业务无法正常进行的客观问题。
附图说明
图1本发明的工作流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例中,一种基于分布式***的唯一性ID生成方法,包含以下步骤:
A、首先项目应用启动未完成之后,开启同步定时任务,定期调用redis注册,续约instanceId;
B、然后注册一个特定时长的ID服务生成器来生成服务实例。之后归并入步骤1中的同步定时任务中去,当ID服务生成器实例存在时,会对服务进行续约,如果续约不成功进入一个短暂的等待阶段,之后会重新生成一个新的ID服务生成器,避免业务的间断情况。当ID服务生成器实例不存在时,会立即重新生成新的ID服务实例生成器。
C、ID服务实例生成器的生成,是根据所在网关的IPV4地址,进行机器唯一服务id的获取工作;
D、ID的具体生成策略:ID为64位的2进制数,最后会将其转化为14位的10进制长整型数
E、在生成64位2进制数时,最高位的字节会被标记为不可用,前41位字节是以微秒为单位的timestamp,紧接着10个字节为redis根据IPV4生成的机器ID,最后12个字节是累加计数器,该计数器在软件内。
F、因为计算机存放数字都是存放数字的补码,正数的源码、补码、反码都一样,负数的补码是其反码加一。符号为拉取反操作时不变,做逻辑与、或、非、异或操作时要参与运算。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (4)
1.一种基于分布式***的唯一性ID生成方法,其特征在于,包含以下步骤:
首先项目应用启动未完成之后,开启同步定时任务,定期调用redis注册,续约instanceId;
然后注册一个特定时长的ID服务生成器来生成服务实例,之后归并入步骤A中的同步定时任务中去,当ID服务生成器实例存在时,会对服务进行续约,如果续约不成功进入一个短暂的等待阶段,之后会重新生成一个新的ID服务生成器,避免业务的间断情况,当ID服务生成器实例不存在时,会立即重新生成新的ID服务实例生成器。
2.根据权利要求1所述的基于分布式***的唯一性ID生成方法,其特征在于,ID服务实例生成器的生成是根据所在网关的IPV4地址,进行机器唯一服务id的获取工作。
3.根据权利要求1所述的基于分布式***的唯一性ID生成方法,其特征在于,ID的具体生成策略:ID为64位的2进制数,最后会将其转化为14位的10进制长整型数。
4.根据权利要求1所述的基于分布式***的唯一性ID生成方法,其特征在于,在生成64位2进制数时,最高位的字节会被标记为不可用,前41位字节是以微秒为单位的timestamp,紧接着10个字节为redis根据IPV4生成的机器ID,最后12个字节是累加计数器,该计数器在***内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810068918.8A CN108282531A (zh) | 2018-01-24 | 2018-01-24 | 一种基于分布式***的唯一性id生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810068918.8A CN108282531A (zh) | 2018-01-24 | 2018-01-24 | 一种基于分布式***的唯一性id生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108282531A true CN108282531A (zh) | 2018-07-13 |
Family
ID=62804912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810068918.8A Pending CN108282531A (zh) | 2018-01-24 | 2018-01-24 | 一种基于分布式***的唯一性id生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108282531A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109325016A (zh) * | 2018-09-12 | 2019-02-12 | 杭州朗和科技有限公司 | 数据迁移方法、装置、介质及电子设备 |
CN112054919A (zh) * | 2020-08-03 | 2020-12-08 | 华人运通(江苏)技术有限公司 | 容器集群无状态下的id生成方法、装置、存储介质及*** |
CN112235431A (zh) * | 2020-09-30 | 2021-01-15 | 银盛支付服务股份有限公司 | 一种基于雪花算法自动配置机器id的方法及*** |
CN112966035A (zh) * | 2021-03-08 | 2021-06-15 | 深圳证券通信有限公司 | 一种分布式数字id生成算法 |
CN113032131A (zh) * | 2021-05-26 | 2021-06-25 | 天津中新智冠信息技术有限公司 | 基于Redis的分布式定时调度***和方法 |
CN114244807A (zh) * | 2022-02-25 | 2022-03-25 | 山东宁泓信息技术有限公司 | 一种分布式id生成*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101796795A (zh) * | 2007-09-03 | 2010-08-04 | 英国电讯有限公司 | 分布式*** |
CN102339303A (zh) * | 2010-07-20 | 2012-02-01 | 西门子公司 | 分布式*** |
CN103838604A (zh) * | 2013-12-13 | 2014-06-04 | 广东天拓资讯科技有限公司 | 分布式全球唯一id生成方法 |
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN106776932A (zh) * | 2016-12-01 | 2017-05-31 | 湖北荆楚网络科技股份有限公司 | 一种在分布式***内生成唯一id的方法 |
CN107454203A (zh) * | 2017-07-19 | 2017-12-08 | 成都数联铭品科技有限公司 | 在分布式***中生成唯一id的方法 |
-
2018
- 2018-01-24 CN CN201810068918.8A patent/CN108282531A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101796795A (zh) * | 2007-09-03 | 2010-08-04 | 英国电讯有限公司 | 分布式*** |
CN102339303A (zh) * | 2010-07-20 | 2012-02-01 | 西门子公司 | 分布式*** |
CN103838604A (zh) * | 2013-12-13 | 2014-06-04 | 广东天拓资讯科技有限公司 | 分布式全球唯一id生成方法 |
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN106776932A (zh) * | 2016-12-01 | 2017-05-31 | 湖北荆楚网络科技股份有限公司 | 一种在分布式***内生成唯一id的方法 |
CN107454203A (zh) * | 2017-07-19 | 2017-12-08 | 成都数联铭品科技有限公司 | 在分布式***中生成唯一id的方法 |
Non-Patent Citations (1)
Title |
---|
化简为繁: "分布式***唯一性ID生成策略思考", 《简书》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109325016A (zh) * | 2018-09-12 | 2019-02-12 | 杭州朗和科技有限公司 | 数据迁移方法、装置、介质及电子设备 |
CN112054919A (zh) * | 2020-08-03 | 2020-12-08 | 华人运通(江苏)技术有限公司 | 容器集群无状态下的id生成方法、装置、存储介质及*** |
CN112054919B (zh) * | 2020-08-03 | 2022-08-16 | 华人运通(江苏)技术有限公司 | 容器集群无状态下的id生成方法、装置、存储介质及*** |
CN112235431A (zh) * | 2020-09-30 | 2021-01-15 | 银盛支付服务股份有限公司 | 一种基于雪花算法自动配置机器id的方法及*** |
CN112966035A (zh) * | 2021-03-08 | 2021-06-15 | 深圳证券通信有限公司 | 一种分布式数字id生成算法 |
CN113032131A (zh) * | 2021-05-26 | 2021-06-25 | 天津中新智冠信息技术有限公司 | 基于Redis的分布式定时调度***和方法 |
CN114244807A (zh) * | 2022-02-25 | 2022-03-25 | 山东宁泓信息技术有限公司 | 一种分布式id生成*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108282531A (zh) | 一种基于分布式***的唯一性id生成方法 | |
CN111934889B (zh) | 密钥生成方法、签名和验签方法、装置、设备和介质 | |
CN109542865A (zh) | 分布式集群***配置文件同步方法、装置、***及介质 | |
CN102055770B (zh) | 一种基于xml描述的安全协议代码自动实现*** | |
CN111934890B (zh) | 密钥生成方法、签名和验签方法、装置、设备和介质 | |
ES2812765T3 (es) | Aparato, sistema y método para procesar datos de registro de aplicaciones | |
CN109120477A (zh) | 基于modbus协议的动态解析方法、装置、服务器及存储介质 | |
CN103117864B (zh) | 一种子网合并的方法及装置 | |
CN113489583A (zh) | 一种多方隐私求交中的数据处理方法、装置及电子设备 | |
CN109672733B (zh) | 基于dag的区块链的账本同步方法及设备 | |
CN111147181B (zh) | 业务发送方法、接收方法、装置及***、存储介质 | |
CN105045598A (zh) | 一种基于Java的web前端性能优化及上线的方法和*** | |
CN105763411A (zh) | 一种建立组播隧道的方法及装置 | |
CN101848055A (zh) | 一种数据修正方法和装置 | |
CN103646015A (zh) | 发送、接收以及传输xml报文的方法和*** | |
CN105447141A (zh) | 一种数据处理的方法及节点 | |
CN111177263A (zh) | 一种区块链共识方法及节点 | |
CN107872387A (zh) | 发送vpn路由的方法和*** | |
CN115695920A (zh) | 一种基于Flume的rtsp摄像头视频流接入方法 | |
CN104580456B (zh) | 一种用于分布式***的动态消息分发方法及*** | |
CN108234447A (zh) | 一种针对不同网络安全功能的安全规则管理***及方法 | |
CN103166847A (zh) | 保证优雅重启的方法及设备 | |
Peng et al. | Delivery probability prediction based efficient routing in DTN | |
CN113434523B (zh) | 基于大数据的业务数据更新方法、装置、设备及存储介质 | |
CN104333513B (zh) | 一种支持IPv4报文传输的方法和发送装置、接收装置 |
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: 20180713 |
|
RJ01 | Rejection of invention patent application after publication |