2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > -01-15 记一次微信支付订单号重复问题

-01-15 记一次微信支付订单号重复问题

时间:2018-08-28 06:15:06

相关推荐

-01-15 记一次微信支付订单号重复问题

问题

今天系统突然出现订单号重复的问题,但通过日志观察,并没发现订单号有重复的(使用redis的incr生成),于是猜测可能是之前测试的时候用过这些订单号,但未支付的订单在商户上也查不到,所以最终只能通过代码的方式来处理。

处理

因为用的是第三方封装的微信支付jar,所以通过捕获其异常,如果是订单号重复,那么就重新生成订单号再次下单。

雪花算法

不过try-catch来处理,每次下单也是需要耗费时间的

于是参考了雪花算法,据说只要是时间不回溯,编号就不会重复,可以看看这篇文章,感觉还不错

个人理解

一个long(64bit),由几部分组成

1bit(符号位)

41bit(毫秒数)

10bit(机器标识[机房id + 机器id 或跟业务相关的id])

12bit(序列号[如果1ms进入多个请求就根据这个来区别])

由上可知主导还是时间,只要时间不回去的话,重复的概率还是很低的,而且这个生成不依赖于数据库(我是依赖于redis),方便

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。