摘要:对订单类系统而言,单据号是非常重要的东西。一个好的单据号组成往往应该包含丰富的元素,利于问题的调查,业务的扩展。
对订单类系统而言,单据号是非常重要的东西。一个好的单据号组成往往应该包含丰富的元素,利于问题的调查,业务的扩展。
这里列举几种不好的单据号范例:
单纯的数字递增: 001, 002, 003 //无业务含义
UUID//无业务含义,且无顺序概念
日期+用户ID//当天同一用户发生两笔业务时可能重复
好的单据号规则
系统标识 | 日期 | sequence空间 |
---|---|---|
表示当前单据号是属于哪个系统的,比如001表示支付系统,002表示团购系统 | 表示这笔单据是发生在哪一天的,yyyyMMdd格式字符串 | 可放8位数字,支持一亿的sequence,值可以来自当前表的主键ID,不满8位的左边统一补0,这个保证了最终的唯一性 |
如果当前系统有子单据概念,比如订单系统里还有物流单的概念,则可以加入子业务单标识
系统标识 | 日期 | 子业务单标识 | sequence空间 |
---|---|---|---|
- | - | 001表示物流单,002表示退款单 | - |
如果你的数据库是分库分表的,则强烈建议在单据号中加入分库分表位,将有很大的收益
系统标识 | 日期 | 分库分表位 | sequence空间 |
---|---|---|---|
- | - | 0102表示01库的02号表 | - |
总之好的单据号可以获得如下收益:
根据单据号马上可以知道这个来自哪个系统,发生在哪一天
在这个系统中属于具体哪一个子业务
这笔单子是属于哪个库哪个表的
在程序中只要你能获得单据号,就能通过截取的方式获得很多有价值的信息,便于逻辑的处理。久而久之你会不自主让单据号贯穿整个系统,也乐意在日志中打印,将极大方便你解决问题
当整个系统群都遵守统一的标准时,你会发现当进入任意一个新系统时,只要给你这个系统的单据号则你都能快速定位日志,代码,数据库表,非常利于学习
让我们拥抱好的单据号生成习惯吧!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/11782.html
摘要:有些接口可以天然的实现幂等性,比如查询接口,对于查询来说,你查询一次和两次,对于系统来说,没有任何影响但对于有写库操作的增删改接口,多次调用就会对系统有多次影响。 写在前面:之前在设计接口时因经验尚浅,并未过多考虑幂等性,但这两天出现的一个线上问题让我认识到了某些情况下接口幂等性的重要性; 非幂等场景:服务A将单据A信息通过RPC远程过程调用传给下游服务B接口(非幂等接口)用于生成关联...
摘要:解决幂等问题的三部曲,也是作者的思考框架。这是解决幂等问题的第二部曲列出并减少副作用的分析维度。所以在并发执行的维度,将并发重复执行变成串行重复执行是最好的幂等解决方案。 纲要 文章目的:本文旨在提炼一套分布式幂等问题的思考框架,而非解决某个具体的分布式幂等问题。在这个框架体系内,会有一些方案举例说明。文章目标:希望读者能通过这套思考框架设计出符合自己业务的完备的幂等解决方案。文章内容...
摘要:如果要消灭大程序,那就得切分,做好切分必然离不开高内聚低耦合的核心思想。分布式系统关注点高内聚低耦合详解这篇聊的就是这个。也是分布式系统的分治思想体现。垂直切分垂直切分有时候也会被称作纵向切分。题外话不到迫不得己,尽量避免进行水平切分。 如果第二次看到我的文章,欢迎下方扫码订阅我的个人公众号(跨界架构师)哟~本文长度为5389字,建议阅读14分钟。坚持原创,每一篇都是用心之作~ 没...
摘要:建立后台触发熔断操作入口,人工录入熔断配置或资损防控检测出异常新增并生效熔断配置,应急情况生效熔断,日常支付链路不会过熔断判断。确认无误或故障处理完成后,触发解熔断操作,业务继续处理或驳回。 1. 资损盲区 随着有赞支付体量的增大,资产部门承担的资金管理,风险把控的责任也越大。我们一方面要小步快跑,快速支撑业务,又要稳住底盘,守好底线。支付业务底线就是守护用户的每一分钱,不能有资金损失...
阅读 1675·2021-11-18 10:02
阅读 2180·2021-11-15 11:38
阅读 2641·2019-08-30 15:52
阅读 2147·2019-08-29 14:04
阅读 3198·2019-08-29 12:29
阅读 2059·2019-08-26 11:44
阅读 947·2019-08-26 10:28
阅读 792·2019-08-23 18:37