订单号生成--相关

以下故事仅供参考:

#############################################################################################

你是个程序员。

隔壁老王通过你老婆找到你,说要做个"巨牛逼电商网站",并许诺给你股份若干,你想想首付也攒了好久,就差200万就够了,于是就同意了,你花了一个星期做了一个网站并上线运营,订单号格式如下:

日期+6位自增数字

例如:

20160301000001
20160301000002
20160301000003
20160301000004
...

你很开心,这天你加班改完bug回家,老王从你的衣柜里跳出来对你说,不行啊大兄弟,为什么对门老张的"超屌电商网站"每天都知道我们有多少订单量呢?

没办法,你只能回去继续修改代码。

这就是最基本的流水号的问题,不仅仅会暴露你的交易量,而且有规律的订单号很容易成为安全隐患。

你又把订单号改为即时生成‘日期+6位随机数字’,并且也做了重复检查,心想这回应该没问题了吧,运营了一周之后,半夜里老王又从你的床底下爬出来说,不行啊大兄弟,为什么每天晚上下单都很慢/下单失败(取决于失误的大小)呢?。

没办法,你只能回去继续修改代码。

这就是即时随机数的问题,不仅仅是检测重复的性能差,你想一下一共六位数字理论值100万条,假设当天下单记录已有80w,接下来再下单可能会不断的随机并且产生的随机数都已经存在,而且,这种方式并发如果处理不好就会导致下单失败(数据库unique)或者相同订单号(数据库非unique)。

你苦思冥想,终于想到了解决办法,我每天把明天要用的订单号先随机好,放进redis之类的缓存里里随用随取,这样就不会有性能和并发的问题了,回家发现老婆不在家,于是你开心的玩起了dota。

这里已经很接近订单池的概念了,不过因为这个池子没有流动性,就让我们暂且叫做订单桶吧,每天都要往桶里打水。

随着用户量的增长,你们决定在三月三号做一个"对3促销节",你在办公室监视着服务器,突然老王用你家座机给你打电话,大兄弟你快看下,下不了单了,你熟练的连接上服务器查找着问题,发现生成的订单号已经被用完了,这一天的促销不得不停止。

于是你又连续加班了三个月,做了一个实时监控订单号熟练的系统,当低于xxxxx的时候迅速生成新的订单号,并且买了更多的服务器,做了更多的集群,可以同时预留出更多的订单号等等等等。

**这就是现在订单池的概念,随着订单号的被消费还继续生成着订单号,这个涉及的内容就很复杂了。**

我讲这个故事不是想说隔壁老王跟你老婆的关系,也不是房价到底有多贵,创业公司到底怎么样,而是软件开发往往不是一蹴而就的,所有的东西都是不断进化的,你不可能起步就按照京东淘宝的标准来,根据实际情况实际分析就可以了,脱离需求谈实现都是耍流氓,比如就是一个内部的ERP,用户不超过200,每天生成订单量不超过50,用自增有问题么?我觉得没问题啊。你说呢。

#############################################################################################

1、为什么淘宝单号这么长?前几年还12、13位,现在都16位了?

2、为什么自己的淘宝单号最后4位都一样呢?这4位数字代表什么?

3、凡客单号是日期+订单量吗?

4、从订单号可以推算出竞品的销量吗?

5、从订单号可以判断出竞品业务发展的速度吗?

6、从订单号可以猜想出竞品的业务策略和布局吗?

7、如何解决订单号重复的问题?

8、如何解决业务发展快,订单号长度不够用问题?

9、客服OR物流如何快速解读订单号的关键信息,从而提高工作效率?

10、业务变更,如果有拆单等需求,如何设计编码来满足业务的灵活和拓展需求?

11、编码变长之后,如何解决数据库的存储和读取性能?

 

从用户体验和数据库优化的角度来看

1.利用数据库主键值产生一个自增长的订单号(订单号即数据表的主键)

2.日期+自增长数字的订单号(比如:2012040110235662)

3.产生随机的订单号(65865325365966)

4.字母+数字字符串式,字母有包含特别意义,C02356652

5.订单号无重复性;

6.如果方便客服的话,最好是“日期+自增数”样式的订单号,客服一看便知道订单是否在退货保障期限内容;

7.订单号长度尽量保持短(10位以内),方便用户,尤其电话投诉时,长的号码报错几率高,影响客服效率;

8.订单号尽量保持数字型(纯整数),在数据库订单索引查询中,长整数字型的数据索引与检索效率,远远高于文本型,因此尽量避免“字母+数字字符串式”!

 


作者:笔记Bang
链接:https://www.jianshu.com/p/544ab3d60e77
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值