订单全局唯一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来保证序列号自增和唯一性。
热门推荐
吃甲硝唑可以喝酒吗?了解药物与酒精的相互作用
面包车不能拉人也不能拉货?车主质问交警:那我买它当祖宗供着?
福利彩票中奖规则详解:双色球、即开型等玩法全攻略
人工智能的时代演变:从梦想照进现实
超人气白金作家,玄幻大神辰东
读懂《浮生六记》,方知何为爱情
药师说药丨病由“孕”生?妊娠期需警惕甲状腺功能减退症
宇宙由什么构成?
工程纠纷解决指南:从合同签订到违约金争议
火锅菜品,经典三样,你们一定吃过!
《三叉戟2》,不是所有的「2」都好看
主板开机指南:从硬件准备到系统登录
锻炼臀部和腿部的常规方法:在家或健身房
印尼顶级咖啡品牌:你值得一试
"协调性大挑战:如何通过日常练习提升运动表现与魅力"
谈话时仅需沉默10秒,就能达成意想不到的效果!职场必学的"策略性沉默"艺术
爱情公寓第一季角色介绍
如何应对公司恶意调动工作岗位?
油豆腐焖五花肉:一道香而不腻的客家经典家常菜
脚上真菌感染的症状及治疗
洗衣粉和洗衣液有什么区别
集体户口身份证补办如何进行
奶茶是怎么把你身体喝垮的?(不止肥胖和致癌)
个人养老金制度详解:从开户到领取全攻略
外伤伤口处理的常见误区与纠正方法实用指南
如何选择和更换高安全等级的家用门锁锁芯?
“答案都在艺术史里”——Beeple在南京呈现“来自人造未来的故事”

市场动态实时跟踪:实时监控市场动态的技巧
薪级工资和岗位工资的区别
音乐人如何获取创作灵感?