全局唯一数字ID生成子系统

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: GUID 雪花算法 snowflake uid-generator

为什么需要一个GUID生成服务?

1、业务实现会有限制
例如:某些业务场景批量导入功能,生成订单ID需要调用订单服务的订单ID生成来生成订单ID,支付信息的ID则需要调用支付服务来生成支付ID。
2、分库分表
分库分表时如果使用数据库自增主键,分表会受限。

为什么不用工具类等方式集成到每个工程里面?

1、业务系统集群内全局唯一
如果用工具类等方式集成到工程
优点:
1、ID为本地业务服务生成,不需要走网络调用链,性能提升
缺点:
1、业务服务可能需要关注ID生成的相关内容
要么每个工程都需要做相关配置(如:timebits、workerbits、seqbits和epohstr),要么将这些配置写死到代码。
2、业务服务生成的ID可能不是全局唯一

有什么风险

1、全局唯一ID服务挂掉业务全挂
2、可能会存在性能问题

为什么不使用MySQL自增ID?

1、MySQL自增ID限制后续业务分库分表
2、MySQL自增ID限制一些业务的简便性,例如:批量导入业务ID关联,只能先将业务数据写入数据库得到ID,然后再执行后续业务

目的

1、使用全局ID生成服务替换MySQL 自增ID

需求

1、生成全局唯一ID
2、ID有序
3、支持34年
4、单节点每秒生成65,534个ID
5、集群支持最大节点重启次数262,143次
6、接口需求(获取单个ID接口,获取N个ID接口、获取当前服务worker_node信息)

技术

1、搭建guid服务集群
2、使用百度uid-generator
3、使用MySQL数据库作为work_node记录
4、时间比特位分配:30位
5、worker比特位分配:18位
6、序列比特位分配:15位

系统架构-GUID服务

1、全局ID服务划分到整体业务架构的基础服务层
2、上层服务(应用服务层和领域服务层)使用http进行内部调用
3、上层根据服务业务场景都可以调用该服务

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
存储 NoSQL 数据库
全局id生成方式
全局id生成方式
|
6月前
|
存储 算法 数据库
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
345 0
|
程序员 C语言 C++
06 C++ - 名字控制
06 C++ - 名字控制
55 0
|
6月前
|
传感器 安全
3500/42 GE / 本特利内华达 带内部屏障和内部终端的I/O模块
3500/42 GE / 本特利内华达 带内部屏障和内部终端的I/O模块
|
6月前
|
存储 JavaScript
如果需要在组件之间共享一个`ref`,应该如何实现?
如果需要在组件之间共享一个`ref`,应该如何实现?
81 0
|
存储 Rust 算法
有关'全局唯一id'
有关'全局唯一id'
78 0
|
安全
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
RxSwift特征序列Driver的使用,以及共享附加作用与非共享附加作用的区别?
174 0
|
安全
PADS Layout元器件独立规则设置
对于设计规则设置,之前有粉丝说单独设置元器件的规则没有效果,主要是指间距和线宽的设置。
392 0
|
SQL 机器学习/深度学习 算法
如何判断多账号是同一个人?用图技术搞定 ID Mapping
如何判断多个账号,它可能是一个邮箱,一个地址,一个手机对应着多个 ID,或者是多个同一前缀的邮箱,背后是同一个用户。如何进行这种关联性信息的收集,判断这些信息归属于同一人呢?
414 0
如何判断多账号是同一个人?用图技术搞定 ID Mapping
|
算法 数据库
分布式学习十三:实现全局唯一id命名
分布式学习十三:实现全局唯一id命名
149 0
分布式学习十三:实现全局唯一id命名