编号生成方法、设备及计算机可读存储介质与流程

文档序号:37515525发布日期:2024-04-01 14:25阅读:10来源:国知局
编号生成方法、设备及计算机可读存储介质与流程

本发明涉及分布式,尤指一种编号生成方法、设备及计算机可读存储介质。


背景技术:

1、随着网络的日益普及,技术的进步,越来越多的业务服务系统为了避免单一服务器设备承载过高的工作压力,会采用分布式技术构建业务服务系统,令多个分布式节点共同承担业务服务任务,以实现整个业务服务系统的高性能和高并发。

2、在分布式业务服务系统中,对于业务实现过程中产生的某些数据(例如用户账号、商品、订单、票据等),需要为这些数据分配全局唯一编号进行标记,以进行后续业务处理。由于同一个业务在分布式业务服务系统中会由多个分布式节点各自实现,因而需要保证各分布式节点为相同业务服务生成的编号全局唯一,避免不同分布式节点为相同业务服务生成的编号发生冲突。在一种可行的实施方式为由对各分布式节点进行调度的核心设备(例如数据库设备)为各业务生成全局唯一编号,在各分布式节点需要生成编号时向核心设备获取全局唯一编号进行使用。但是这种实施方式在分布式节点较多以及编号生成需求较大时,会导致核心设备承担较大的运算压力和通信压力,难以实现高并发。


技术实现思路

1、本发明实施例提供一种编号生成方法、设备及计算机可读存储介质,用以提供一种高并发的全局唯一编号生成方案。

2、第一方面,本发明实施例通过了一种编号生成方法,应用于分布式微服务节点,包括:

3、响应于目标业务的编号获取请求,根据所述目标业务对应的目标编号对象的索引在本地缓存中查找所述目标编号对象;

4、若查找到所述目标编号对象,则从目标编号对象中获取编号增长值和编号起始值,根据所述编号增长值和编号增长上限判断所述编号起始值是否有效;

5、若所述编号起始值有效,则根据所述编号起始值与所述编号增长值生成第一编号,并更新所述目标编号对象中的所述编号增长值;

6、利用预设规则根据所述第一编号生成第二编号并将所述第二编号返回给所述目标业务;

7、其中,所述目标编号对象的编号起始值通过数据库下发得到,且所述编号起始值满足:所述数据库对于所述目标业务为不同的分布式微服务节点下发的所述编号起始值全局唯一,且当前分布式微服务节点为所述目标业务生成的第一编号与其它分布式微服务节点为所述目标业务生成的第一编号不同。

8、可选地,所述根据所述目标业务对应的目标编号对象的索引在本地缓存中查找所述目标编号对象之后,所述方法还包括:

9、若本地缓存中不存在所述目标编号对象的索引,则向所述目标业务返回拒绝生成编号的错误信息。

10、可选地,所述根据所述目标业务对应的目标编号对象的索引在本地缓存中查找所述目标编号对象之后,所述方法还包括:

11、若未查找到所述目标编号对象,则从数据库中获取第一配置信息,并根据所述第一配置信息创建所述目标编号对象;其中,所述第一配置信息包括所述目标编号对象的编号起始值和编号增长上限。

12、可选地,所述根据所述编号增长值和编号增长上限判断所述编号起始值是否有效之后,所述方法还包括:

13、若所述编号起始值无效,则通过从数据库获取的第二配置信息更新所述目标编号对象,并更新所述目标编号对象的编号增长值;其中,所述第二配置信息至少包括所述目标对象的编号起始值。

14、可选地,所述编号增长值为原子类型变量。

15、可选地,所述根据所述第一配置信息创建所述目标编号对象之后,所述方法还包括:

16、在本地缓存的并发哈希表concurrenthashmap中记录目标编号对象的索引与所述目标编号对象的映射关系;

17、所述根据所述目标业务对应的目标编号对象的索引在本地缓存中查找所述目标编号对象,具体包括:

18、根据所述目标业务对应的目标编号对象的索引在所述concurrenthashmap中查找所述目标业务对应的目标编号对象。

19、可选地,所述向数据库请求获取第二配置信息,根据所述第二配置信息更新所述目标编号对象,并更新所述目标编号对象的编号增长值,具体包括:

20、利用倒计时门闩countdownlatch对除编号池更新线程以外的线程进行加锁,通过所述编号池更新线程使用原子性指令向所述数据库请求获取第二配置信息;

21、获取所述数据库提供的所述第二配置信息,根据所述第二配置信息更新所述目标编号对象,以及更新所述目标编号对象的编号增长值;

22、利用countdownlatch释放线程锁。

23、可选地,所述编号获取请求为编号获取请求对象。

24、可选地,所述将所述第二编号返回给所述目标业务,具体包括:

25、通过反射机制将所述第二编号赋值给所述目标业务的编号获取请求对象。

26、可选地,所述利用预设规则根据所述第一编号生成第二编号,具体包括:

27、对所述第一编号添加所述目标业务索引和时间信息后生成第二编号;

28、所述利用预设规则根据所述第一编号生成第二编号之后,所述方法还包括:

29、将所述第二编号发送给所述数据库进行保存。

30、第二方面,基于同一发明构思,本发明实施例还提供了一种编号生成方法,应用于数据库设备,包括:

31、响应于任一分布式微服务节点对目标业务对应的编号起始值的获取请求,更新所述目标业务对应的编号起始值并返回给所述分布式微服务节点;

32、以使所述分布式微服务节点根据编号增长上限、所述分布式微服务节点自身维护的编号增长值和接收的所述编号起始值为所述目标业务生成第二编号;

33、其中,对于所述目标业务为不同的分布式微服务节点下发的所述编号起始值全局唯一,且不同分布式微服务节点为所述目标业务生成的第一编号不同。

34、第三方面,基于同一发明构思,本发明实施例还提供了一种分布式微服务节点设备,包括:

35、响应模块,用于响应于目标业务的编号获取请求,根据所述目标业务对应的目标编号对象的索引在本地缓存中查找所述目标编号对象;

36、编号模块,用于若查找到所述目标编号对象,则从目标编号对象中获取编号增长值和编号起始值,根据所述编号增长值和编号增长上限判断所述编号起始值是否有效;若所述编号起始值有效,则根据所述编号起始值与所述编号增长值生成第一编号,并更新所述目标编号对象中的所述编号增长值;

37、输出模块,用于利用预设规则根据所述第一编号生成第二编号并将所述第二编号返回给所述目标业务;

38、其中,所述目标编号对象的编号起始值通过数据库下发得到,且所述编号起始值满足:所述数据库对于所述目标业务为不同的分布式微服务节点下发的所述编号起始值全局唯一,且当前分布式微服务节点为所述目标业务生成的第一编号与其它分布式微服务节点为所述目标业务生成的第一编号不同。

39、第四方面,基于同一发明构思,本发明实施例还提供了一种数据库设备,包括:

40、编号配置更新模块,用于响应于任一分布式微服务节点对目标业务对应的编号起始值的获取请求,更新所述目标业务对应的编号起始值;

41、编号配置下发模块,用于将所述目标业务对应的编号起始值返回给所述分布式微服务节点;以使所述分布式微服务节点根据编号增长上限、所述分布式微服务节点自身维护的编号增长值和接收的所述编号起始值为所述目标业务生成第二编号;

42、其中,对于所述目标业务为不同的分布式微服务节点下发的所述编号起始值全局唯一,且不同分布式微服务节点为所述目标业务生成的第一编号不同。

43、第五方面,基于同一发明构思,本发明实施例还提供了一种电子设备,包括:处理器和用于存储所述处理器可执行指令的存储器;

44、其中,所述处理器被配置为执行所述指令,以实现如第一方面所述的编号生成方法,或者实现第二方面所述的编号生成方法。

45、第六方面,基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机实现如第一方面所述的编号生成方法,或者实现如第二方面所述的编号生成方法。

46、本发明有益效果如下:

47、本发明实施例提供的编号生成方法、设备及计算机可读存储介质,通过将业务的编号由数据库设备生成变为由分布式微服务节点生成,分布式微服务节点根据编号增长上限和数据库设备提供的编号起始值确定分布式微服务节点为目标业务所能生成的编号范围,在该编号范围中根据编号增长值不断生成新的编号,实现了业务编号由分布式业务节点进行分布式生成,而不需要数据库设备直接生成业务编号,将编号生成的压力分散给各分布式微服务节点,降低了数据库设备的运算压力和访问压力。同时,数据库设备通过控制为不同的分布式微服务节点下发的编号起始值全局唯一,并通过编号起始值与编号增长上限的关系来保证不同分布式微服务节点为目标业务所能生成的编号范围不重叠,实现相同业务的编号由不同的分布式微服务节点生成全局唯一。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1