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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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、上层根据服务业务场景都可以调用该服务

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9月前
|
存储 NoSQL 数据库
全局id生成方式
全局id生成方式
|
9月前
|
存储 算法 数据库
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
397 0
|
程序员 C语言 C++
06 C++ - 名字控制
06 C++ - 名字控制
68 0
|
4月前
|
Oracle Java 关系型数据库
@Id、@GeneratedValue的作用,以及@GeneratedValue的使用
@Id、@GeneratedValue的作用,以及@GeneratedValue的使用
|
9月前
|
存储 缓存 算法
分布式全局id
分布式全局id
|
9月前
|
传感器 安全
3500/42 GE / 本特利内华达 带内部屏障和内部终端的I/O模块
3500/42 GE / 本特利内华达 带内部屏障和内部终端的I/O模块
|
iOS开发
id的本质
id的本质
84 1
添加子控制正确姿势
添加子控制正确姿势
40 0
|
存储 Rust 算法
有关'全局唯一id'
有关'全局唯一id'
90 0
|
SQL 机器学习/深度学习 算法
如何判断多账号是同一个人?用图技术搞定 ID Mapping
如何判断多个账号,它可能是一个邮箱,一个地址,一个手机对应着多个 ID,或者是多个同一前缀的邮箱,背后是同一个用户。如何进行这种关联性信息的收集,判断这些信息归属于同一人呢?
438 0
如何判断多账号是同一个人?用图技术搞定 ID Mapping