CN113204441B - 一种多应用id生成方法及系统 - Google Patents
一种多应用id生成方法及系统 Download PDFInfo
- Publication number
- CN113204441B CN113204441B CN202110497011.5A CN202110497011A CN113204441B CN 113204441 B CN113204441 B CN 113204441B CN 202110497011 A CN202110497011 A CN 202110497011A CN 113204441 B CN113204441 B CN 113204441B
- Authority
- CN
- China
- Prior art keywords
- redis
- information
- application
- layer
- service
- 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.)
- Active
Links
Images
Classifications
-
- 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/547—Remote procedure calls [RPC]; Web services
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开一种多应用ID生成方法及系统,所述系统包括:ID服务层、ID分发层、数据持久层;所述ID服务层由多个IDGen服务构成,用于根据ID信息和Redis信息为第三方应用程序提供基于RPC的ID申请;所述ID分发层由多个Redis服务器构成,用于ID的生成,Redis服务器与ID名称建立多对一关系;所述数据持久层由数据库或者文件构成,用于存放ID信息和Redis信息。本发明解决了现有的ID生成方法无法实现分布式多应用环境下的全局唯一性的问题。
Description
技术领域
本发明属于分布式系统管理方法技术领域,尤其涉及一种多应用ID生成方法及系统。
背景技术
目前现有ID的生产方案主要有基于数据库自增的ID生成方法、基于UUID的ID生成方法、基于Redis的ID生成方法。基于数据库自增的ID生成方法利用数据库自增ID来实现,具备简单、有序、全库唯一的优点,但可扩展性和健壮性不强,同时无法做到分布式环境下的全局唯一。基于UUID的ID生成方法让分散式系统中所有的元素都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的制定;算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成UUID;其缺点是随机性强、不连续、不单调(不能递增或者递减)。传统基于Redis的ID生成方法通过分布式Redis实现ID的生成,提升了ID生成效率,但针对多应用缺乏统一的规划和管理,比较混乱,无法实现全局唯一性。
随着云计算的快速发展,越来越多的应用采用基于云平台的架构。通常在企业内部云中,集成多种企业应用,每种企业应用需要使用不同的全局唯一数字ID。通常全局唯一数字ID缺乏统一的规划和管理,容易造成ID使用混乱。
发明内容
本发明针对现有的ID生成方法无法实现分布式多应用环境下的全局唯一性的问题,提出一种多应用ID生成方法及系统。
为了实现上述目的,本发明采用以下技术方案:
一种多应用ID生成系统,包括:ID服务层、ID分发层、数据持久层;
所述ID服务层由多个IDGen服务构成,用于根据ID信息和Redis信息为第三方应用程序提供基于RPC的ID申请;所述ID信息包括项目名称、ID名称、ID被分配的Redis标识;所述Redis信息包括Redis标识、Redis服务器IP、Redis服务器端口、Redis密码;所述ID分发层由多个Redis服务器构成,用于ID的生成,所述Redis服务器与ID名称建立多对一关系;
所述数据持久层由数据库或者文件构成,用于存放ID信息和Redis信息。
进一步地,所述数据持久层还用于存放ID的状态信息,所述ID的状态信息为有效或无效。
进一步地,所述ID服务层只能访问ID的状态信息为有效的ID信息。
一种多应用ID生成方法,包括:
步骤1:数据持久层建立多种应用的ID信息和Redis信息;
步骤2:ID服务层访问数据持久层,获取Redis信息,枚举并访问Redis信息,如果Redis服务无法访问,则依据Redis信息,启动Redis服务;
步骤3:ID服务层内多个IDGen服务建立互斥机制,从数据持久层加载ID信息,枚举ID信息,依据ID信息连接到Redis服务器上,如果Redis服务器上所述ID信息不存在,则在Redis服务器上建立对应ID信息;
步骤4:第三方应用程序通过RPC调用ID服务层的任一IDGen服务申请ID。
进一步地,所述Redis服务器开启持久化功能,用于保存最新的ID信息。
进一步地,所述步骤4包括:
第三方应用程序调用RPC接口申请ID,包括ID名称申请;
ID服务层的任一IDGen服务根据ID名称查询ID所在的Redis服务器;
Redis服务器据ID名称调用incr命令,生成新的ID ;
IDGen服务将从Redis服务器获取的新的ID返回给第三方应用程序。
进一步地,所述Redis服务器生成新的ID时采用动态扩展的方式增加ID范围。
与现有技术相比,本发明具有的有益效果:
现有ID通常采用数据库、UUID、Redis等方式来生成,无法实现分布式多应用环境下的全局唯一性。本发明针对云平台运行环境,通过构建ID服务层、ID分发层、数据持久层,对应用ID和Redis服务器进行统一的规划和管理,为多应用提供了统一的全局唯一数字ID,采用分布式架构实现了应用ID的快速生成和查找,通过应用ID与Redis的动态绑定实现了资源的弹性、可扩展。
附图说明
图1为本发明实施例一种多应用ID生成系统的架构图;
图2为本发明实施例一种多应用ID生成方法的基本流程图;
图3为本发明实施例另一种多应用ID生成方法的基本流程图。
具体实施方式
下面结合附图和具体的实施例对本发明做进一步的解释说明:
如图1所示,一种多应用ID生成系统,包括:ID服务层、ID分发层、数据持久层;
所述ID服务层由多个IDGen服务构成,用于根据ID信息和Redis信息为第三方应用程序提供基于RPC的ID申请;所述ID信息包括项目名称、ID名称、ID被分配的Redis标识;所述Redis信息包括Redis标识、Redis服务器IP、Redis服务器端口、Redis密码;
所述ID分发层由多个Redis服务器构成,用于ID的生成, Redis服务器与ID名称建立多对一关系,即一种ID只对应一个Redis服务器,一个Redis服务器对应多种ID;值得说明的是,ID名称可以理解为ID类型名称,一般一个项目(应用)中申请的ID为同一种类型,即申请的ID名称相同;
所述数据持久层由数据库或者文件构成,用于存放ID信息和Redis信息,其中ID信息包括项目名称、ID名称、ID被分配的Redis标识,其中Redis信息包括Redis标识、Redis服务器IP、Redis服务器端口、Redis密码。
进一步地,所述ID的状态信息为有效或无效。
进一步地,所述ID服务层只能访问ID的状态信息为有效的ID信息。
在上述实施例的基础上,如图2所示,本发明还公开一种多应用ID生成方法,包括:
步骤S101:数据持久层建立多种应用的ID信息和Redis信息;
步骤S102:ID服务层访问数据持久层,获取Redis信息,枚举并访问Redis信息,如果Redis服务无法访问,则依据Redis信息,启动Redis服务;
步骤S103:ID服务层内多个IDGen服务建立互斥机制,从数据持久层加载ID信息,枚举ID信息,依据ID信息连接到Redis服务器上,如果Redis服务器上所述ID信息不存在,则在Redis服务器上建立对应ID信息;
步骤S104:第三方应用程序通过RPC调用ID服务层的任一IDGen服务申请ID。
进一步地,所述Redis服务器开启持久化功能,用于保存最新的ID信息。
进一步地,所述步骤S104包括:
第三方应用程序调用RPC接口申请ID,包括ID名称申请;
ID服务层的任一IDGen服务根据ID名称查询ID所在的Redis服务器;
Redis服务器据ID名称调用incr命令,生成新的ID ;
IDGen服务将从Redis服务器获取的新的ID返回给第三方应用程序。
进一步地,所述Redis服务器生成新的ID时采用动态扩展的方式增加ID范围。
作为一种可实施方式,当数据持久层为Mysql数据库时,如图3所示,本发明的另一种多应用ID生成方法,包括:
步骤S201:Mysql数据库建立ID信息表和Redis信息表;所述Redis信息表包含Redis标识、Redis服务器IP、Redis服务器端口、Redis密码;所述ID信息表包含项目名称、ID名称、ID被分配的Redis标识、ID状态。
步骤S202:分别录入Redis信息和ID信息。
步骤S203:IDGen查询Mysql数据库的Redis信息,并枚举Redis信息,依据Redis服务器IP、Redis服务器端口、Redis密码,连接Redis服务器;如果连接不成功,则依据Redis服务器IP、Redis服务器端口、Redis密码启动Redis服务。
步骤S204、IDGen查询数据库的ID信息表,并枚举ID信息,依据枚举的ID信息连接到Redis服务器上;如果查询不到,则在该Redis服务器上建立该ID信息。
步骤S205:应用app调用RPC接口申请ID,ID申请包含项目信息、ID名称等信息。
步骤S206:IDGen根据ID名称查询ID所在的Redis服务器,连接Redis服务器,并申请ID。
步骤S207:Redis服务器依据ID名称调用incr命令,生成新的ID;如果新的ID数目超过设置的阈值,则启动ID更新,动态扩展ID范围。
步骤S208:IDGen将从Redis获取的新的ID,返回给应用app。
综上,现有ID通常采用数据库、UUID、Redis等方式来生成,无法实现分布式多应用环境下的全局唯一性。本发明针对云平台运行环境,通过构建ID服务层、ID分发层、数据持久层,对应用ID和Redis服务器进行统一的规划和管理,为多应用提供了统一的全局唯一数字ID,采用分布式架构实现了应用ID的快速生成和查找,通过应用ID与Redis的动态绑定实现了资源的弹性、可扩展。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种多应用ID生成系统的多应用ID生成方法,其特征在于,
所述多应用ID生成系统包括:ID服务层、ID分发层、数据持久层;
所述ID服务层由多个IDGen服务构成,用于根据ID信息和Redis信息为第三方应用程序提供基于RPC的ID申请;所述ID信息包括项目名称、ID名称、ID被分配的Redis标识;所述Redis信息包括Redis标识、Redis服务器IP、Redis服务器端口、Redis密码;
所述ID分发层由多个Redis服务器构成,用于ID的生成,所述Redis服务器与ID名称建立多对一关系;
所述数据持久层由数据库或者文件构成,用于存放ID信息和Redis信息;
所述多应用ID生成方法,其执行以下步骤:
步骤1:数据持久层建立多种应用的ID信息和Redis信息;
步骤2:ID服务层访问数据持久层,获取Redis信息,枚举并访问Redis信息,如果Redis服务无法访问,则依据Redis信息,启动Redis服务;
步骤3:ID服务层内多个IDGen服务建立互斥机制,从数据持久层加载ID信息,枚举ID信息,依据ID信息连接到Redis服务器上,如果Redis服务器上所述ID信息不存在,则在Redis服务器上建立对应ID信息;
步骤4:第三方应用程序通过RPC调用ID服务层的任一IDGen服务申请ID。
2.根据权利要求1所述的一种多应用ID生成方法,其特征在于,所述数据持久层还用于存放ID的状态信息,所述ID的状态信息为有效或无效。
3.根据权利要求2所述的一种多应用ID生成方法,其特征在于,所述ID服务层只能访问ID的状态信息为有效的ID信息。
4.根据权利要求3所述的一种多应用ID生成方法,其特征在于,所述Redis服务器开启持久化功能,用于保存最新的ID信息。
5.根据权利要求1所述的一种多应用ID生成方法,其特征在于,所述步骤4包括:
第三方应用程序调用RPC接口申请ID,包括ID名称申请;
ID服务层的任一IDGen服务根据ID名称查询ID所在的Redis服务器;
Redis服务器据ID名称调用incr命令,生成新的ID ;
IDGen服务将从Redis服务器获取的新的ID返回给第三方应用程序。
6.根据权利要求5所述的一种多应用ID生成方法,其特征在于,所述Redis服务器生成新的ID时采用动态扩展的方式增加ID范围。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110497011.5A CN113204441B (zh) | 2021-05-07 | 2021-05-07 | 一种多应用id生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110497011.5A CN113204441B (zh) | 2021-05-07 | 2021-05-07 | 一种多应用id生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113204441A CN113204441A (zh) | 2021-08-03 |
CN113204441B true CN113204441B (zh) | 2022-04-05 |
Family
ID=77029585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110497011.5A Active CN113204441B (zh) | 2021-05-07 | 2021-05-07 | 一种多应用id生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113204441B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165216A (zh) * | 2018-08-02 | 2019-01-08 | 杭州启博科技有限公司 | 一种Redis分布式数据库主键id的生成方法及系统、存储介质 |
CN109639775A (zh) * | 2018-11-27 | 2019-04-16 | 湖南蚁为软件有限公司 | 全局单调递增id生成方法、装置、系统及设备 |
WO2019169696A1 (zh) * | 2018-03-08 | 2019-09-12 | 平安科技(深圳)有限公司 | 平台客户数据回流方法、电子装置、设备及存储介质 |
CN111651459A (zh) * | 2020-06-08 | 2020-09-11 | 北京首汽智行科技有限公司 | 一种基于Redis的业务ID生成方法 |
CN111708775A (zh) * | 2020-05-21 | 2020-09-25 | 四川虹美智能科技有限公司 | 自增id生成方法、装置及系统 |
CN112328598A (zh) * | 2020-11-09 | 2021-02-05 | 北京达佳互联信息技术有限公司 | Id生成方法、装置、电子设备及存储介质 |
-
2021
- 2021-05-07 CN CN202110497011.5A patent/CN113204441B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019169696A1 (zh) * | 2018-03-08 | 2019-09-12 | 平安科技(深圳)有限公司 | 平台客户数据回流方法、电子装置、设备及存储介质 |
CN109165216A (zh) * | 2018-08-02 | 2019-01-08 | 杭州启博科技有限公司 | 一种Redis分布式数据库主键id的生成方法及系统、存储介质 |
CN109639775A (zh) * | 2018-11-27 | 2019-04-16 | 湖南蚁为软件有限公司 | 全局单调递增id生成方法、装置、系统及设备 |
CN111708775A (zh) * | 2020-05-21 | 2020-09-25 | 四川虹美智能科技有限公司 | 自增id生成方法、装置及系统 |
CN111651459A (zh) * | 2020-06-08 | 2020-09-11 | 北京首汽智行科技有限公司 | 一种基于Redis的业务ID生成方法 |
CN112328598A (zh) * | 2020-11-09 | 2021-02-05 | 北京达佳互联信息技术有限公司 | Id生成方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113204441A (zh) | 2021-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102982141B (zh) | 一种实现分布式数据库代理的方法及装置 | |
CN111934918A (zh) | 对同一容器集群内的容器实例的网络隔离方法和装置 | |
CN111857873A (zh) | 一种实现云原生容器网络的方法 | |
CN110008665B (zh) | 一种区块链的权限控制方法及装置 | |
CN111767144B (zh) | 交易数据的交易路由确定方法、装置、设备及系统 | |
CN112468525B (zh) | 一种基于区块链的域名管理系统 | |
CN111385370B (zh) | Id分配方法、装置、存储介质及id分配系统 | |
US20100332532A1 (en) | Distributed directory environment using clustered ldap servers | |
CN105045762A (zh) | 一种配置文件的管理方法及装置 | |
CN109145053B (zh) | 数据处理方法和装置、客户端、服务器 | |
CN111064786B (zh) | 账户标识管理方法及设备 | |
CN104104582A (zh) | 一种数据存储路径管理方法、客户端及服务器 | |
CN113407560B (zh) | 更新消息处理方法、数据同步方法、配置信息配置方法 | |
US20080086486A1 (en) | Hierarchical federation metadata | |
CN114879907A (zh) | 一种数据分布确定方法、装置、设备及存储介质 | |
US10467143B1 (en) | Event-driven cache | |
CN112910796B (zh) | 流量管理方法、装置、设备、存储介质以及程序产品 | |
CN113204441B (zh) | 一种多应用id生成方法及系统 | |
CN117155948A (zh) | 集群管理方法、装置、电子设备及存储介质 | |
CN104714923A (zh) | 一种实现设备共享的方法和装置 | |
CN112685451B (zh) | 数据查询处理方法、装置、计算机设备及存储介质 | |
CN117014175A (zh) | 云系统的权限处理方法、装置、电子设备及存储介质 | |
CN103164410B (zh) | 一种文件存储及操作的方法,存储设备和系统 | |
CN115438333A (zh) | 一种权限分配的方法和装置 | |
CN114462016A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |