订单全局唯一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来保证序列号自增和唯一性。
热门推荐
巧用酒精白醋 轻松去除加湿器水箱顽固污垢
跟着潮汕小依吃遍地道美食!
独库公路217国道自驾游:乌鲁木齐到库车的绝美风景线!
库车:217国道终点的丝路明珠
新疆217国道:中国最美国道探秘
王羲之春联三度被偷,书圣巧对展智慧
杨文浏书法工作室春联大赏:春节必备!
四川天府新区春联大集:一场跨越国界的传统文化盛宴
西双版纳5G全覆盖,移动网络技术新突破!
校园食品安全:影响学习效率的关键因素
武隆旅游新宠:天生三桥+仙女山
重庆雪宝山国家级自然保护区成功繁殖60万株崖柏
重庆雪玉洞:国内最年轻溶洞里的冰雪世界
市市场监管局严查校园餐安全,护航学生健康
河南封丘营养餐事件引热议:校园食品安全如何保障?
克罗地亚GDP增长放缓,旅游业成经济新引擎
让年夜饭更有年味:美食与游戏的完美结合
杜布罗夫尼克:从中世纪古城到影视作品中的“君临城”
莫托文:克罗地亚的松露小镇与电影节之城
普利特维采湖:克罗地亚的自然奇迹
陈冬羽教你做年夜饭必选:哈尔滨锅包肉
冬季流感高发,老母鸡汤成家庭必备
老母鸡汤的完美熬制技巧,你get了吗?
老母鸡汤新吃法:加点XX更滋补!
秋冬养生:砂锅慢炖老母鸡汤
用高感全画幅相机拍出震撼星空大片!
兴隆县观测基地:今夜最佳观星指南
敦煌鸣沙山:沙漠深处的观星胜地
新能源汽车综合经济性对比分析及预测研究
春节倒计时!如何挑选有书法韵味的春联?