订单全局唯一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来保证序列号自增和唯一性。
热门推荐
传统文化“点节成金”
秋冬养生新宠:红参泡茶的正确打开方式
如何判断连板现象并做出投资决策?这种决策有哪些风险?
港大商学院最新录取数据揭秘:哪些专业最卷?
中国福利彩票:科技守护公正,创新引领未来
香港大学硕士:水与不水的深度剖析
港大金融硕士:金融精英的摇篮
揭秘双色球开奖黑科技:梅森旋转算法如何确保公平公正?
中国电影如何更好“走出去”?电影人提了这些建议
易学大师张其金揭秘:阴阳爻如何影响你的生活?
《周易》里的阴阳爻智慧
孔子与《周易》:揭秘阴阳爻的神秘起源
《周易》里的阴阳爻文化
冬季川藏线自驾攻略:挑战与美景并存的雪域之旅
川藏线高原行车全攻略:三大技巧保你安全抵达
春秋季节:川藏线自驾游的黄金季节
从拥挤到自由:揭秘共享单车如何改变我们的通勤生活
委托合同纠纷的法律基础与解决途径
西安城墙最佳拍摄点大揭秘!
健康科普|99%的人经常忽略的健康知识
新房装修后,去甲醛最科学有效的5种方法!
全天24小时通风半年依然超标,揭秘:除甲醛最大的谎言开窗通风
秋天的西安城墙骑行:绝美日落不容错过!
跟着《奔跑吧》打卡西安:城墙与钟鼓楼的时光之旅
炎症≠上火!中西医分别这样解释……
过年吃橘子、嗑瓜子、喝饮料……“上火”了怎么办?4个方法教你缓解!
个人养老金基金:你的退休金增值神器?
你的养老金够用吗?来聊聊退休后的生活
《英雄联盟》S14赛季:战队制胜之道
掌握这九种修辞手法,让你的文章生动有趣!