订单全局唯一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来保证序列号自增和唯一性。
热门推荐
漫威《雷神》系列电影赏析
从追赶到引领——中国新材料产业迈向高质量发展之路
诗辞赋取名:300个藏在《诗经》《楚辞》《洛神赋》中唯美的名字大全!
头发先烫还是先染?理发师告诉你真相,看完就只知道如何做了
跳空现象的原因是什么?怎样应对跳空行情?
防范经济犯罪培训:提高企业防范能力,保障经济发展安全
全屏幕 vs 无边框窗口:游戏模式选择指南
零资金如何创业项目管理
脂肪肝诊断及预防
饮食的道理:从人类学视角解读“味道”的文化内涵
领了失业金还能继续交社保吗
领导会说话,下属才服气
应对肚子不适与拉稀水的有效方法与预防措施总结
如何全面检查新购笔记本电脑以确保性能与质量的验机指南
体温计的选择指南
游戏搬砖行业的前景分析:机遇与挑战并存
历史上的袁绍:并非无能之辈,实则非凡领袖
董卓与曹操:权力与恶行的对比剖析
《足球经理2024》如何利用好边锋
耳鸣难治?不妨试试这个奇妙的声音疗法
普洱边三县旅游攻略:景迈山、老达保等景点详解
过量摄入超加工食品,与32种不良健康结果的风险增加相关
我们都被「用户反馈」坑过
科普 | 急性腹泻怎么治?看这篇就够了
汽车保险费计算全解析:基础费用、计算要素详解!
一碗面的命运:兰州牛肉拉面产业高质量发展之路
专业技术与管理岗位的融合与平衡
6杯茶把办公室变成养生局
中国各省份五行分布图(高清)
香港通报:一个月内137人因流感死亡