System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种分布式ID生成方法、装置、计算机设备及存储介质制造方法及图纸_技高网

一种分布式ID生成方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:44205283 阅读:1 留言:0更新日期:2025-02-06 18:39
本发明专利技术公开了一种分布式ID生成方法、装置、计算机设备及存储介质,涉及云部署领域,方法包括:将多个Redis集群分别部署在不同的机房;当客户端申请ID时,将申请发送到负载均衡器并通过负载均衡器将申请转发到多个Redis集群中;通过Redis集群获取全局唯一最新时间戳和机器标识;根据全局唯一最新时间戳和机器标识并使用Redis的INCR操作生成ID;将ID返回给客户端。本发明专利技术使用Redis的原子操作实现分布式环境下的全局唯一性ID生成,ID的生成不需要额外的服务,简化了系统的架构,避免了单点故障问题。通过将Redis集群部署在不同的机房,实现跨机房的分布式ID生成,提高了系统的可用性和扩展性。此外,生成的ID长度较短,提升了数据存储和传输过程中的效率。

【技术实现步骤摘要】

本专利技术涉及云部署领域,特别涉及一种分布式id生成方法、装置、计算机设备及存储介质。


技术介绍

1、随着互联网技术的飞速发展,分布式系统已成为现代互联网应用不可或缺的基础设施,广泛应用于诸如分布式缓存、分布式数据库等多个关键领域。在分布式系统架构中,确保各个节点间数据交互的正确性和一致性是维系整个系统稳定性和可靠性的核心要素之一。其中,生成全局唯一性id(global unique identifier,guid)的技术扮演了至关重要的角色。全局唯一性id不仅用于标识系统中的每个实体或数据记录,还确保了数据在分布式环境下的唯一性和可追溯性。

2、针对这一需求,业界已经提出并实施了多种技术方案。twitter的snowflake算法是其中较为知名的一种,其通过结合时间戳、工作机器id和序列号等元素,能够高效生成全局唯一的64位id。然而,snowflake算法依赖于一个集中的id生成服务,这要求该服务必须保持高可用性和高性能。一旦这个独立的节点发生故障,整个系统就会陷入无法生成新id的困境,严重影响系统的持续运行能力。此外,该中心化节点的存在还可能成为系统扩展的瓶颈,限制了系统的横向扩展能力。

3、另一种常见的方案是使用uuid(universallyunique identifier,通用唯一识别码),uuid基于随机数和/或特定算法生成,能够确保在全球范围内的唯一性。尽管uuid在唯一性方面表现出色,但其较长的长度(通常是128位)却给数据存储和传输带来了额外的负担,降低了系统的整体效率,特别是在需要频繁读写或传输大量数据的场景中。

4、数据库自增长id作为一种传统且简单的id生成方式,在单机环境下表现良好,通过数据库内部机制保证id的唯一性和递增性。然而,在分布式系统中,尤其是跨机房部署的场景下,自增长id无法确保全局唯一性,因为每个独立的数据库实例都会按照自己的序列生成id,这可能导致id冲突,破坏了数据的一致性和完整性。


技术实现思路

1、本专利技术的目的是提供一种分布式id生成方法、装置、计算机设备及存储介质,旨在现有id生成方法要么需要独立的id生成服务、要么生成的id长度长,要么只适用于单机环境等问题。

2、第一方面,本专利技术实施例提供一种分布式id生成方法,包括:

3、将多个redis集群分别部署在不同的机房;

4、当客户端申请id时,将所述申请发送到负载均衡器并通过所述负载均衡器将所述申请转发到多个redis集群中;

5、通过所述redis集群获取全局唯一最新时间戳和机器标识;

6、根据所述全局唯一最新时间戳和机器标识并使用redis的incr操作生成id;

7、将所述id返回给所述客户端。

8、第二方面,本专利技术实施例提供一种分布式id生成装置,包括:

9、部署单元,用于将多个redis集群分别部署在不同的机房;

10、发送单元,用于当客户端申请id时,将所述申请发送到负载均衡器并通过所述负载均衡器将所述申请转发到多个redis集群中;

11、获取单元,用于通过所述redis集群获取全局唯一最新时间戳和机器标识;

12、生成单元,用于根据所述全局唯一最新时间戳和机器标识并使用redis的incr操作生成id;

13、返回单元,用于将所述id返回给所述客户端。

14、第三方面,本专利技术实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的分布式id生成方法。

15、第四方面,本专利技术实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时实现上述第一方面所述的分布式id生成方法。

16、本专利技术公开了一种分布式id生成方法、装置、计算机设备及存储介质,方法包括:将多个redis集群分别部署在不同的机房;当客户端申请id时,将申请发送到负载均衡器并通过负载均衡器将申请转发到多个redis集群中;通过redis集群获取全局唯一最新时间戳和机器标识;根据全局唯一最新时间戳和机器标识并使用redis的incr操作生成id;将id返回给客户端。本专利技术使用redis的原子操作实现分布式环境下的全局唯一性id生成,id的生成不需要额外的服务,简化了系统的架构,避免了单点故障问题。通过将redis集群部署在不同的机房,实现跨机房的分布式id生成,提高了系统的可用性和扩展性。此外,生成的id长度较短,提升了数据存储和传输过程中的效率,降低了数据存储和传输过程中带宽的消耗和存储成本。本专利技术实施例同时还提供了一种分布式id生成装置、一种计算机可读存储介质和一种计算机设备,具有上述有益效果,在此不再赘述。

本文档来自技高网...

【技术保护点】

1.一种分布式ID生成方法,其特征在于,包括:

2.根据权利要求1所述的分布式ID生成方法,其特征在于,所述ID包括:全局唯一最新时间戳、机器标识和单机缓冲时间戳。

3.根据权利要求1所述的分布式ID生成方法,其特征在于,获取全局唯一最新时间戳包括:

4.根据权利要求3所述的分布式ID生成方法,其特征在于,所述得到全局唯一最新时间戳之后包括:将所述全局唯一最新时间戳保存至Redis集群中,得到Redis集群的最新的时间戳。

5.根据权利要求4所述的分布式ID生成方法,其特征在于,所述得到Redis集群的最新的时间戳之后包括:将所述Redis集群的最新的时间戳改为本地时间戳。

6.根据权利要求1所述的分布式ID生成方法,其特征在于,所述根据所述全局唯一最新时间戳和机器标识并使用Redis的INCR操作生成ID之后包括:

7.根据权利要求1所述的分布式ID生成方法,其特征在于,根据所述全局唯一最新时间戳和机器标识并使用Redis的INCR操作生成ID之后还包括:通过使用Redis的EXPIRE操作设置所述ID的过期时间。

8.一种分布式ID生成装置,其特征在于,包括:

9.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的分布式ID生成方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如权利要求1至7任一项所述的分布式ID生成方法。

...

【技术特征摘要】

1.一种分布式id生成方法,其特征在于,包括:

2.根据权利要求1所述的分布式id生成方法,其特征在于,所述id包括:全局唯一最新时间戳、机器标识和单机缓冲时间戳。

3.根据权利要求1所述的分布式id生成方法,其特征在于,获取全局唯一最新时间戳包括:

4.根据权利要求3所述的分布式id生成方法,其特征在于,所述得到全局唯一最新时间戳之后包括:将所述全局唯一最新时间戳保存至redis集群中,得到redis集群的最新的时间戳。

5.根据权利要求4所述的分布式id生成方法,其特征在于,所述得到redis集群的最新的时间戳之后包括:将所述redis集群的最新的时间戳改为本地时间戳。

6.根据权利要求1所述的分布式id生成方法,其特征在于,所述根据所述全局唯一最新时间戳...

【专利技术属性】
技术研发人员:张楠
申请(专利权)人:中国平安人寿保险股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1