一种分布式系统序号发生器的制作方法

文档序号:36267572发布日期:2023-12-06 14:31阅读:35来源:国知局
一种分布式系统序号发生器的制作方法

本发明涉及分布式系统,特别涉及一种分布式系统序号发生器。


背景技术:

1、分布式序号生成器是在分布式系统中生成全局唯一序号的一种机制。在分布式系统中,由于系统的分散性,生成全局唯一序号的需求变得尤为重要。这些序号可以用于订单编号、用户id、事务id等场景,需要保证在全局范围内的唯一性。

2、分布式序号生成器的实现通常需要考虑以下几个关键因素:1.全局唯一性:在整个分布式系统中,生成的每一个序号都必须是唯一的,不能有重复。2.高可用性:序号生成器必须能够在任何节点故障的情况下,仍然能够正常工作。3.高性能:序号生成器需要能够快速地生成序号,以满足高并发的需求。4.可扩展性:随着系统规模的扩大,序号生成器需要能够进行水平扩展。

3、常见的分布式序号生成器有twitter的snowflake算法、美团的leaf、百度的uidgenerator等。这些算法都有各自的优点和缺点,需要根据具体的业务需求和系统环境来选择合适的算法。

4、现有的序号生成器都为单节点序号生成器,单节点序号生成器是指只有一个节点负责生成唯一序号的系统。它的缺点包括:

5、单点故障:系统中只有一个节点负责生成序号,如果这个节点发生故障或停止工作,整个序号生成过程会中断,影响系统的正常运行。此外,单点故障也会导致序号生成器的性能下降或不可用。吞吐量有限:由于只有一个节点负责生成序号,系统的吞吐量受限于该节点的性能和处理能力。如果系统的并发量较高,单节点可能无法处理足够多的请求,导致性能瓶颈。扩展性差:当系统需要处理更大规模的序号生成需求时,单节点序号生成器很难进行水平扩展,因为只有一个节点可用于生成序号。这限制了系统的横向扩展能力,阻碍了系统的可伸缩性。容易产生冲突:单节点序号生成器可能存在序号冲突的问题。由于只有一个节点生成序号,当多个请求同时到达时,可能会生成相同的序号,引发冲突。冲突的发生会导致数据不一致性和错误的结果。难以实现高可用性:由于单节点序号生成器存在单点故障的问题,实现高可用性变得较为困难。需要采取复杂的备份和故障转移机制来确保序号生成的连续性和可用性。

6、单节点序号生成器在一些场景下可能具备一定的优势,但也存在着上述的缺点,特别是对于高并发、大规模需求以及高可用性的系统而言,单节点序号生成器可能无法满足需求。


技术实现思路

1、本发明的目的在于针对上述现有技术的不足,提供一种分布式系统序号发生器,以解决现有技术中单节点序号发生器对于高并发、大规模需求以及高可用性的系统无法满足的问题。

2、本发明具体提供如下技术方案:一种分布式系统序号发生器,包括:

3、随机数字生成器,用于根据用户配置内容自动选择随机数字生成方法,生成用户指定数量的随机数字,并将所述随机数字存储到随机数字队列中,在客户端sdk需要时提供随机数字;

4、客户端sdk,用于在业务服务使用序号生成方法时,从随机数字队列中获取用户期望数量的随机数字,缓存到本地;并在序号生成方法获取到未使用过的随机数字后,基于序号生成规则,利用所述随机数字生成供业务服务使用的唯一序号。

5、优选的,所述客户端sdk嵌入到客户业务服务中,当客户业务服务启动时激活注册服务和调度服务,并且为客户业务服务提供序号读取方法。

6、优选的,所述客户端sdk还用于:

7、在业务服务启动时会收集所在服务器ip、mac信息,利用所述信息向随机数字生成服务的注册中心发起注册服务,注册中心为客户端服务器分配唯一序号,然后将序号返回给客户端sdk服务。

8、优选的,所述序号读取方法用于客户业务服务在需要使用序号时,从缓存中读取一个序号供客户业务服务使用,并且将该序号从缓存中删除,避免被重复使用。

9、优选的,在业务服务启动后,同时启动调度服务工作,此时调度服务定时监控随机数队列中存储的随机数字数量,当数量小于用户设置的最小阈值时将自动触发随机数字生成方法再次产品指定数量的随机数字,使随机数字队列中的随机数字队列始终保持在用户设定的最小数量之上。

10、优选的,所述客户端sdk激活调度服务后,调度服务将监控客户端缓存中存放的序号数量,当所述序号数量小于客户设定最小数量时,调用随机数拉取方法,从随机数生成服务的队列中拉取客户设定数量的随机数,并利用序号生成方法生成批量有效序号存放到缓存中。

11、优选的,所述随机数字拉取方法用于从随机数生成服务的随机数队列中拉取随机数。

12、优选的,所述序号生成方法用于根据用户指定规则,利用随机数字和机器编号生成有效的序号;其中所述规则为当前时间+机器编号+随机数字,同时用户根据自身需要自定义序号生成方法。

13、优选的,所述随机数字生成方法用于生成指定位数随机数,包括uuid序号生成方法、雪花序号生成方法、workdid和自增序号生成方法,并且用户根据自身需求自定义随机数生成方法。

14、优选的,所述随机数字队列用于存储随机数字生成方法产生的随机数字,用于对客户端sdk的需求进行缓冲。

15、与现有技术相比,本发明具有如下显著优点:

16、本发明在随机数字生成器的序号生成端增加了随机数字队列作为一个新的组件,并且结合了本地缓存机制,以解决单节点序号生成器的一些缺点。具体而言,随机数字在序号生成端生成后,首先被存放到随机数字队列中,而不是直接返回给客户端;当客户端需要使用随机数字时,可以从随机数字队列中按需获取足够数量的随机数字,这样一来,随机数字队列起到了削峰填谷的作用,平滑了客户端的需求波动,提高了系统的稳定性和可靠性。

17、客户端还可以将从序号生成端获取的随机数字缓存到本地。当需要使用序号时,首先从本地缓存获取,避免了频繁地去请求序号生成端,减轻了系统的压力,提高了客户端程序的使用效率。通过引入消息队列和本地缓存,本发明在解决了单节点序号生成器的缺点,提高了系统的并发处理能力、可用性和性能;同时客户端的使用体验也得到了改善。



技术特征:

1.一种分布式系统序号发生器,其特征在于,包括:

2.如权利要求1所述的一种分布式系统序号发生器,其特征在于,所述客户端sdk嵌入到客户业务服务中,当客户业务服务启动时激活注册服务和调度服务,并且为客户业务服务提供序号读取方法。

3.如权利要求1所述的一种分布式系统序号发生器,其特征在于,所述客户端sdk还用于:

4.如权利要求2所述的一种分布式系统序号发生器,其特征在于,所述序号读取方法用于客户业务服务在需要使用序号时,从缓存中读取一个序号供客户业务服务使用,并且将该序号从缓存中删除,避免被重复使用。

5.如权利要求2所述的一种分布式系统序号发生器,其特征在于,在业务服务启动后,同时启动调度服务工作,此时调度服务定时监控随机数队列中存储的随机数字数量,当数量小于用户设置的最小阈值时将自动触发随机数字生成方法再次产品指定数量的随机数字,使随机数字队列中的随机数字队列始终保持在用户设定的最小数量之上。

6.如权利要求2所述的一种分布式系统序号发生器,其特征在于,所述客户端sdk激活调度服务后,调度服务将监控客户端缓存中存放的序号数量,当所述序号数量小于客户设定最小数量时,调用随机数拉取方法,从随机数生成服务的队列中拉取客户设定数量的随机数,并利用序号生成方法生成批量有效序号存放到缓存中。

7.如权利要求6所述的一种分布式系统序号发生器,其特征在于,所述随机数字拉取方法用于从随机数生成服务的随机数队列中拉取随机数。

8.如权利要求6所述的一种分布式系统序号发生器,其特征在于,所述序号生成方法用于根据用户指定规则,利用随机数字和机器编号生成有效的序号;其中所述规则为当前时间+机器编号+随机数字,同时用户根据自身需要自定义序号生成方法。

9.如权利要求1所述的一种分布式系统序号发生器,其特征在于,所述随机数字生成方法用于生成指定位数随机数,包括uuid序号生成方法、雪花序号生成方法、workdid和自增序号生成方法,并且用户根据自身需求自定义随机数生成方法。

10.如权利要求1所述的一种分布式系统序号发生器,其特征在于,所述随机数字队列用于存储随机数字生成方法产生的随机数字,用于对客户端sdk的需求进行缓冲。


技术总结
本发明公开了一种分布式系统序号发生器,涉及分布式系统技术领域,包括:随机数字生成器和客户端sdk。其中,随机数字生成器用于根据用户配置内容自动选择随机数字生成方法,生成用户指定数量的随机数字,并将所述随机数字存储到随机数字队列中,在客户端sdk需要时提供随机数字。客户端sdk用于在业务服务使用序号生成方法时,从随机数字队列中获取用户期望数量的随机数字,缓存到本地;并在序号生成方法获取到未使用过的随机数字后,基于序号生成规则,利用所述随机数字生成供业务服务使用的唯一序号。本发明通过引入消息队列和本地缓存,在一定程度上解决了单节点序号生成器的缺点,提高了系统的并发处理能力、可用性和性能。

技术研发人员:张颖,张衡宇
受保护的技术使用者:创云融达信息技术(天津)股份有限公司
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1