订单全局唯一ID设计方案
创作时间:
作者:
@小白创作中心
订单全局唯一ID设计方案
引用
CSDN
1.
https://blog.csdn.net/CSDN_SAVIOR/article/details/141279168
在高并发交易系统中,如何保证订单号的全局唯一性是一个重要的技术挑战。本文提出了一种基于TDDL的订单全局唯一ID设计方案,通过合理的结构设计和高效的序列生成机制,成功解决了这一问题。
背景
交易系统最重要的就是收单,庞大的订单量如何保证订单号唯一,成为了目前我们要解决的问题。
问题点
- 订单号全局唯一
- 订单号趋势递增
- 订单号生成的可用性
- 订单号的特点
设计
设定订单号由19位组成:
2(订单标识符)+13(唯一序列)+4(用户ID)
订单标识符
- 订单标识符的作用主要用于区分订单类型。
- 在进行新旧系统切流的时候,也可以用于流量染色。
唯一序列
- 唯一序列只要保证唯一,订单号就不会重复。
- 唯一序列保证趋势递增,这个订单号就会趋势递增,因为订单标识符是固定的。
- 13位的唯一序列,可以有5万亿的组成方式,可用性比较高。
用户ID
用户ID主要用于分库分表的策略,如果是B端系统,不会向C端交易系统一样实时查订单列表数据,可以直接根据订单号取模即可。
方案
这里给出TDDL生成唯一序列的方案。
TDDL提供了基础的分库分表、读写分离和全局唯一序列的功能。
分库分表和读写分离的功能基本和sharding-jdbc的原理一样,会在代码层级做逻辑分片。
针对于全局唯一序列的功能,TDDL在本地启动的时候,会初始化一个指定步长(默认1000)的容器,数据会从TDDL的服务端拉取过来,存到本地。本地需要序列号,直接在本地内存中取即可。相对来说保证了获取序列号时的效率。至于序列号的唯一性由TDDL能力提供。
TDDL服务端会维护一个数据库,每次去数据库拉取序列号的时候,会通过Auto-increment Lock来保证序列号自增和唯一性。
热门推荐
深度解析gsa目标管理的执行策略与实践方法
毕业生必读:三方协议签订全流程及注意事项
STM32时钟配置全攻略——从小白到高手
中国人均存款“出炉”,家庭存款“标准数”是多少?你及格了吗?
补牙齿可以涂麻药
早餐这样吃,疾病风险会降低
电子签章和公章的效力一样吗
小米汽车:严禁转售SU7订单
Excel中统一设置上标的四种方法
使用VSCode、ZeroTier和SSH实现远程开发的完整教程
如何将电子文档归类管理
有效治疗抑郁症的方法探讨:从专业角度出发
如何获取SNP数据库
2070元/月!如果你在广州失业了,记得来领这笔钱!
人工智能在制药技术与药物递送设计中的革命性应用
巴黎圣母院大火五年后
基于碳稳定同位素技术鉴别白酒中掺杂食用酒精和己酸乙酯的研究
雕塑翡翠白菜:传统工艺的精湛呈现
梦到杀人意味着什么?探索梦境中的暴力象征
秋水伊人——中国古代女性与文物
探究端午节的意义和饮食传统
雪花来到人间有哪些变化?雪花落地:六大奇妙蜕变!
漫画《明白啦!老子的智慧道——老子智慧求生术》隆重出版
玳瑁猫与三花猫的区别:毛色遗传与性格解析
1068短信是真的吗?揭秘短信背后的真相与风险
新能源产业如何走出新一轮“光周期”
如何理解“不可说”的世界
冷知识!这些眼药水需要“冷藏”→
圆面积公式:从古至今的数学探索之旅
秒懂!cos2x的导数及推导过程详解