CN117149137A - 一种分布式系统序号发生器 - Google Patents
一种分布式系统序号发生器 Download PDFInfo
- Publication number
- CN117149137A CN117149137A CN202311421574.1A CN202311421574A CN117149137A CN 117149137 A CN117149137 A CN 117149137A CN 202311421574 A CN202311421574 A CN 202311421574A CN 117149137 A CN117149137 A CN 117149137A
- Authority
- CN
- China
- Prior art keywords
- random number
- random
- sequence number
- service
- sequence
- 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
- 238000000034 method Methods 0.000 claims abstract description 55
- 241000533950 Leucojum Species 0.000 claims description 5
- 230000003139 buffering effect Effects 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000007547 defect Effects 0.000 abstract description 5
- 238000012545 processing Methods 0.000 abstract description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式系统序号发生器,涉及分布式系统技术领域,包括:随机数字生成器和客户端sdk。其中,随机数字生成器用于根据用户配置内容自动选择随机数字生成方法,生成用户指定数量的随机数字,并将所述随机数字存储到随机数字队列中,在客户端sdk需要时提供随机数字。客户端sdk用于在业务服务使用序号生成方法时,从随机数字队列中获取用户期望数量的随机数字,缓存到本地;并在序号生成方法获取到未使用过的随机数字后,基于序号生成规则,利用所述随机数字生成供业务服务使用的唯一序号。本发明通过引入消息队列和本地缓存,在一定程度上解决了单节点序号生成器的缺点,提高了系统的并发处理能力、可用性和性能。
Description
技术领域
本发明涉及分布式系统技术领域,特别涉及一种分布式系统序号发生器。
背景技术
分布式序号生成器是在分布式系统中生成全局唯一序号的一种机制。在分布式系统中,由于系统的分散性,生成全局唯一序号的需求变得尤为重要。这些序号可以用于订单编号、用户ID、事务ID等场景,需要保证在全局范围内的唯一性。
分布式序号生成器的实现通常需要考虑以下几个关键因素:1.全局唯一性:在整个分布式系统中,生成的每一个序号都必须是唯一的,不能有重复。2.高可用性:序号生成器必须能够在任何节点故障的情况下,仍然能够正常工作。3.高性能:序号生成器需要能够快速地生成序号,以满足高并发的需求。4.可扩展性:随着系统规模的扩大,序号生成器需要能够进行水平扩展。
常见的分布式序号生成器有Twitter的Snowflake算法、美团的Leaf、百度的UidGenerator等。这些算法都有各自的优点和缺点,需要根据具体的业务需求和系统环境来选择合适的算法。
现有的序号生成器都为单节点序号生成器,单节点序号生成器是指只有一个节点负责生成唯一序号的系统。它的缺点包括:
单点故障:系统中只有一个节点负责生成序号,如果这个节点发生故障或停止工作,整个序号生成过程会中断,影响系统的正常运行。此外,单点故障也会导致序号生成器的性能下降或不可用。吞吐量有限:由于只有一个节点负责生成序号,系统的吞吐量受限于该节点的性能和处理能力。如果系统的并发量较高,单节点可能无法处理足够多的请求,导致性能瓶颈。扩展性差:当系统需要处理更大规模的序号生成需求时,单节点序号生成器很难进行水平扩展,因为只有一个节点可用于生成序号。这限制了系统的横向扩展能力,阻碍了系统的可伸缩性。容易产生冲突:单节点序号生成器可能存在序号冲突的问题。由于只有一个节点生成序号,当多个请求同时到达时,可能会生成相同的序号,引发冲突。冲突的发生会导致数据不一致性和错误的结果。难以实现高可用性:由于单节点序号生成器存在单点故障的问题,实现高可用性变得较为困难。需要采取复杂的备份和故障转移机制来确保序号生成的连续性和可用性。
单节点序号生成器在一些场景下可能具备一定的优势,但也存在着上述的缺点,特别是对于高并发、大规模需求以及高可用性的系统而言,单节点序号生成器可能无法满足需求。
发明内容
本发明的目的在于针对上述现有技术的不足,提供一种分布式系统序号发生器,以解决现有技术中单节点序号发生器对于高并发、大规模需求以及高可用性的系统无法满足的问题。
本发明具体提供如下技术方案:一种分布式系统序号发生器,包括:
随机数字生成器,用于根据用户配置内容自动选择随机数字生成方法,生成用户指定数量的随机数字,并将所述随机数字存储到随机数字队列中,在客户端sdk需要时提供随机数字;
客户端sdk,用于在业务服务使用序号生成方法时,从随机数字队列中获取用户期望数量的随机数字,缓存到本地;并在序号生成方法获取到未使用过的随机数字后,基于序号生成规则,利用所述随机数字生成供业务服务使用的唯一序号。
优选的,所述客户端sdk嵌入到客户业务服务中,当客户业务服务启动时激活注册服务和调度服务,并且为客户业务服务提供序号读取方法。
优选的,所述客户端sdk还用于:
在业务服务启动时会收集所在服务器ip、MAC信息,利用所述信息向随机数字生成服务的注册中心发起注册服务,注册中心为客户端服务器分配唯一序号,然后将序号返回给客户端sdk服务。
优选的,所述序号读取方法用于客户业务服务在需要使用序号时,从缓存中读取一个序号供客户业务服务使用,并且将该序号从缓存中删除,避免被重复使用。
优选的,在业务服务启动后,同时启动调度服务工作,此时调度服务定时监控随机数队列中存储的随机数字数量,当数量小于用户设置的最小阈值时将自动触发随机数字生成方法再次产品指定数量的随机数字,使随机数字队列中的随机数字队列始终保持在用户设定的最小数量之上。
优选的,所述客户端sdk激活调度服务后,调度服务将监控客户端缓存中存放的序号数量,当所述序号数量小于客户设定最小数量时,调用随机数拉取方法,从随机数生成服务的队列中拉取客户设定数量的随机数,并利用序号生成方法生成批量有效序号存放到缓存中。
优选的,所述随机数字拉取方法用于从随机数生成服务的随机数队列中拉取随机数。
优选的,所述序号生成方法用于根据用户指定规则,利用随机数字和机器编号生成有效的序号;其中所述规则为当前时间+机器编号+随机数字,同时用户根据自身需要自定义序号生成方法。
优选的,所述随机数字生成方法用于生成指定位数随机数,包括uuid序号生成方法、雪花序号生成方法、workdid和自增序号生成方法,并且用户根据自身需求自定义随机数生成方法。
优选的,所述随机数字队列用于存储随机数字生成方法产生的随机数字,用于对客户端sdk的需求进行缓冲。
与现有技术相比,本发明具有如下显著优点:
本发明在随机数字生成器的序号生成端增加了随机数字队列作为一个新的组件,并且结合了本地缓存机制,以解决单节点序号生成器的一些缺点。具体而言,随机数字在序号生成端生成后,首先被存放到随机数字队列中,而不是直接返回给客户端;当客户端需要使用随机数字时,可以从随机数字队列中按需获取足够数量的随机数字,这样一来,随机数字队列起到了削峰填谷的作用,平滑了客户端的需求波动,提高了系统的稳定性和可靠性。
客户端还可以将从序号生成端获取的随机数字缓存到本地。当需要使用序号时,首先从本地缓存获取,避免了频繁地去请求序号生成端,减轻了系统的压力,提高了客户端程序的使用效率。通过引入消息队列和本地缓存,本发明在解决了单节点序号生成器的缺点,提高了系统的并发处理能力、可用性和性能;同时客户端的使用体验也得到了改善。
附图说明
图1为本发明提供的序号生成器结构图。
具体实施方式
下面结合本发明中的附图,对本发明实施例的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
本发明目的是提供一种分布式系统序号发生器,解决传统序号发生器的缺陷。分布式序号生成器使用的技术领域主要包括以下几个方面:1. 分布式系统:分布式序号生成器需要在分布式环境中工作,因此需要理解和应用分布式系统的相关知识,如分布式锁、分布式事务等。2. 数据库:序号生成器通常需要与数据库交互,因此需要理解数据库的基本操作,如插入、更新、查询等。3. 算法:序号生成器需要使用一些算法来生成唯一的序号,如雪花算法(Snowflake Algorithm)等。4. 网络通信:在分布式环境中,序号生成器需要通过网络进行通信,因此需要理解网络通信的基本原理和协议。5. 多线程编程:在高并发环境中,序号生成器需要支持多线程操作,因此需要理解多线程编程的基本原理和技术。6. 系统设计:设计一个高效、可靠的序号生成器需要对系统设计有深入的理解,包括负载均衡、容错、高可用等方面。
为了便于理解和说明,如附图1所示,本发明提供的一种分布式系统序号发生器,包括:随机数字生成器和客户端sdk。
其中,随机数字生成器用于根据用户配置内容自动选择随机数字生成方法,生成用户指定数量的随机数字,并将所述随机数字存储到随机数字队列中,在客户端sdk需要时提供随机数字。客户端sdk用于在业务服务使用序号生成方法时,从随机数字队列中获取用户期望数量的随机数字,缓存到本地;并在序号生成方法获取到未使用过的随机数字后,基于序号生成规则,利用所述随机数字生成供业务服务使用的唯一序号。
客户端sdk嵌入到客户业务服务中,当客户业务服务启动时激活注册服务和调度服务,并且为客户业务服务提供序号读取方法。
客户端sdk还用于:在业务服务启动时,客户端sdk激活注册服务后,注册服务会收集所在服务器信息(ip、MAC地址等),利用信息向随机数字生成服务的注册中心发起注册服务,注册中心为客户端服务器分配唯一序号,然后将序号返回给客户端sdk服务,并将从随机数字生成服务中的注册中心获得的编号记录到本地。
序号读取方法用于客户业务服务在需要使用序号时使用的方法,该方法将会在客户业务系统调用时从缓存中读取一个序号供客户业务服务使用,并且将该序号从缓存中删除,避免被重复使用。
在业务服务启动后,同时客户端sdk激活调度服务,启动调度服务工作,此时调度服务定时监控随机数队列中存储的随机数字数量,当数量小于用户设置的最小阈值时将自动触发随机数字生成方法再次产品指定数量的随机数字,使随机数字队列中的随机数字队列始终保持在用户设定的最小数量之上。
客户端sdk激活调度服务后,调度服务将监控客户端缓存中存放的序号数量,当序号数量小于客户设定最小数量时,调用随机数拉取方法,从随机数字生成服务的队列中拉取客户设定数量的随机数,并利用序号生成方法生成批量有效序号存放到缓存中。
在客户端sdk中使用随机数字拉取方法,用于从随机数生成服务的随机数队列中拉取随机数。
在客户端sdk中使用序号生成方法,根据用户指定规则,利用随机数字和机器编号生成有效的序号;其中所述规则为当前时间+机器编号+随机数字,同时用户可根据自身需要自定义序号生成方法。
在随机数字生成器中使用随机数字生成方法生成指定位数随机数,本分布式系统序号发生器已经提供目前主流的uuid序号生成方法、雪花序号生成方法、workdid和自增序号生成方法,并且用户根据自身需求自定义随机数生成方法。
随机数字队列用于存储随机数字生成方法产生的随机数字,用于对客户端sdk的需求进行缓冲。
以上内容是结合具体优选实施方式对本发明做进一步详细说明,对于本发明所属技术领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种分布式系统序号发生器,其特征在于,包括:
随机数字生成器,用于根据用户配置内容自动选择随机数字生成方法,生成用户指定数量的随机数字,并将所述随机数字存储到随机数字队列中,在客户端sdk需要时提供随机数字;
客户端sdk,用于在业务服务使用序号生成方法时,从随机数字队列中获取用户期望数量的随机数字,缓存到本地;并在序号生成方法获取到未使用过的随机数字后,基于序号生成规则,利用所述随机数字生成供业务服务使用的唯一序号。
2.如权利要求1所述的一种分布式系统序号发生器,其特征在于,所述客户端sdk嵌入到客户业务服务中,当客户业务服务启动时激活注册服务和调度服务,并且为客户业务服务提供序号读取方法。
3.如权利要求1所述的一种分布式系统序号发生器,其特征在于,所述客户端sdk还用于:
在业务服务启动时会收集所在服务器ip、MAC信息,利用所述信息向随机数字生成服务的注册中心发起注册服务,注册中心为客户端服务器分配唯一序号,然后将序号返回给客户端sdk服务。
4.如权利要求2所述的一种分布式系统序号发生器,其特征在于,所述序号读取方法用于客户业务服务在需要使用序号时,从缓存中读取一个序号供客户业务服务使用,并且将该序号从缓存中删除,避免被重复使用。
5.如权利要求2所述的一种分布式系统序号发生器,其特征在于,在业务服务启动后,同时启动调度服务工作,此时调度服务定时监控随机数队列中存储的随机数字数量,当数量小于用户设置的最小阈值时将自动触发随机数字生成方法再次产品指定数量的随机数字,使随机数字队列中的随机数字队列始终保持在用户设定的最小数量之上。
6.如权利要求2所述的一种分布式系统序号发生器,其特征在于,所述客户端sdk激活调度服务后,调度服务将监控客户端缓存中存放的序号数量,当所述序号数量小于客户设定最小数量时,调用随机数拉取方法,从随机数生成服务的队列中拉取客户设定数量的随机数,并利用序号生成方法生成批量有效序号存放到缓存中。
7.如权利要求6所述的一种分布式系统序号发生器,其特征在于,所述随机数字拉取方法用于从随机数生成服务的随机数队列中拉取随机数。
8.如权利要求6所述的一种分布式系统序号发生器,其特征在于,所述序号生成方法用于根据用户指定规则,利用随机数字和机器编号生成有效的序号;其中所述规则为当前时间+机器编号+随机数字,同时用户根据自身需要自定义序号生成方法。
9.如权利要求1所述的一种分布式系统序号发生器,其特征在于,所述随机数字生成方法用于生成指定位数随机数,包括uuid序号生成方法、雪花序号生成方法、workdid和自增序号生成方法,并且用户根据自身需求自定义随机数生成方法。
10.如权利要求1所述的一种分布式系统序号发生器,其特征在于,所述随机数字队列用于存储随机数字生成方法产生的随机数字,用于对客户端sdk的需求进行缓冲。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311421574.1A CN117149137A (zh) | 2023-10-31 | 2023-10-31 | 一种分布式系统序号发生器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311421574.1A CN117149137A (zh) | 2023-10-31 | 2023-10-31 | 一种分布式系统序号发生器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117149137A true CN117149137A (zh) | 2023-12-01 |
Family
ID=88899147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311421574.1A Pending CN117149137A (zh) | 2023-10-31 | 2023-10-31 | 一种分布式系统序号发生器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117149137A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
WO2018225039A1 (en) * | 2017-06-09 | 2018-12-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for congestion control in a network |
CN113467753A (zh) * | 2020-12-31 | 2021-10-01 | 易百信息技术(上海)股份有限公司 | 一种分布式不重复随机序列生成方法和系统 |
CN115577042A (zh) * | 2022-09-16 | 2023-01-06 | 杭州当虹科技股份有限公司 | 分布式系统递增数字id生成方法 |
CN116775764A (zh) * | 2023-06-25 | 2023-09-19 | 招商银行股份有限公司 | 分布式id生成方法、分布式id生成装置及存储介质 |
-
2023
- 2023-10-31 CN CN202311421574.1A patent/CN117149137A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
WO2018225039A1 (en) * | 2017-06-09 | 2018-12-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for congestion control in a network |
CN113467753A (zh) * | 2020-12-31 | 2021-10-01 | 易百信息技术(上海)股份有限公司 | 一种分布式不重复随机序列生成方法和系统 |
CN115577042A (zh) * | 2022-09-16 | 2023-01-06 | 杭州当虹科技股份有限公司 | 分布式系统递增数字id生成方法 |
CN116775764A (zh) * | 2023-06-25 | 2023-09-19 | 招商银行股份有限公司 | 分布式id生成方法、分布式id生成装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6950961B2 (en) | Highly available, monotonic increasing sequence number generation | |
JP4637842B2 (ja) | クラスタ化されたコンピューティングシステムにおける高速なアプリケーション通知 | |
US8898680B2 (en) | System and method for supporting asynchronous message processing in a distributed data grid | |
US7185096B2 (en) | System and method for cluster-sensitive sticky load balancing | |
US20030187927A1 (en) | Clustering infrastructure system and method | |
CN111259071B (zh) | 一种分布式数据库系统中的并发访问控制方法 | |
CN102831156A (zh) | 一种云计算平台上的分布式事务处理方法 | |
CN101751415B (zh) | 元数据服务系统、元数据同步方法与写服务器更新方法 | |
JP2012155740A (ja) | メッセージ待ち行列の管理 | |
EP2898655A2 (en) | System and method for small batching processing of usage requests | |
CN112039970A (zh) | 一种分布式业务锁服务方法、服务端、系统及存储介质 | |
CN110457059A (zh) | 一种基于redis的序列号生成方法及装置 | |
US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
US10243869B2 (en) | System and method for providing a distributed queue in a distributed data grid | |
US5742812A (en) | Parallel network communications protocol using token passing | |
CN109639773A (zh) | 一种动态构建的分布式数据集群控制系统及其方法 | |
US20090100436A1 (en) | Partitioning system including a generic partitioning manager for partitioning resources | |
US8359601B2 (en) | Data processing method, cluster system, and data processing program | |
US8266634B2 (en) | Resource assignment system with recovery notification | |
CN107168642B (zh) | 一种数据存储方法及系统 | |
CN112632093A (zh) | 工单处理方法、设备、系统、存储介质及程序产品 | |
US8230444B2 (en) | Global attribute uniqueness (GAU) using an ordered message service (OMS) | |
CN117149137A (zh) | 一种分布式系统序号发生器 | |
Romano et al. | A lightweight and scalable e-Transaction protocol for three-tier systems with centralized back-end database | |
CN117851077A (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 |