电子商务网站中订单号设计规则和依据 曾经终败给现在 2022-09-04 13:58 163阅读 0赞 作者:ben ben 链接:https://www.zhihu.com/question/19805896/answer/37150071 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 **订单命名的几种规则:** **1、不重复。** 这点我相信大家都懂,订单的唯一性不用解释。 **2、安全性。** 你的订单编号不能透露你公司的真实运营信息,比如你的订单就是流水号的话,那么别人就可以从订单号推测出你公司的整体运营概括了。所以订单编码必须是除了你们公司少部分人外,其他人基本看不懂的。参考京东和淘宝的编码规则,基本别人是搞不清是什么意思的。 其实最好的防泄漏编码规则就是在编码中不要加入任何和公司运营的数据。 **3、不能使用大规模随机码。** 很多人分析订单编码规则的时候,第一个念头肯定是不重复唯一性,那么第二个念头可能就是安全性,那么同时满足前两者的第三个念头就是随机码了。因为大规模的随机码随机生成,因为本身就没有意义所以无所谓泄密了。但是事实上这种编码规则在实现上会有很大问题的。 随机码满足第二点安全性要求,为了满足第一点不重复特性,那就得在生成随机码的时候对比历史数据是否有重复,如果你的订单数量到达了十万次,你每次生成订单编码时就得对比十万条历史数据,你可想而知会造成什么巨大问题。 但是难道随机码就不能在编码中使用了吗?小规模的随机码是可以使用的,比如2~3位,这种随机码一般都是和流水号等结合使用,主要作用是为了隐藏流水号的真实数据而进行使用的。 **4、防止并发。** 这条规则主要针对编码中有时间的设定。 **5、控制位数。** 这点很好理解,订单号的作用就是便于查询。 一般正常使用场景应该是订单出异状或者退货的时候,用户将订单号报给客服,由客服进行查询。 所以一般在10~15位为好。 京东10位,淘宝15位。 **推荐的几种编码规则:** **年月日时分秒+用户ID**(命名用户ID时也要注意,不要用流水号。可以采用区域ID+随机码+流水号+随机码方式) 1、唯一性:时间是单向的,确保唯一性。 2、安全性:确保用户ID安全即可。 3、随机码不参与判断,因为之前数据已确保无重复。 4、在同1秒钟,同一用户是不会产生2个订单编码的,所以可以防并发。 5、位数可能会在20位之内,位数比较多。 **年月日时分秒微秒+随机码(2)+流水号+随机码(3)** 1、唯一性:时间是单向的,确保唯一性。 2、安全性:确保流水号不会识别出即可。 3、随机码的位数和前后都是保密的,所以如果不清楚这一点的话,是很难判断出流水号的位数的。因为同时产生的订单数量很多,编码不具备线性对比功能。就算知道了流水号,可以在初始化时进行赋值。 4、在同1秒钟,同一用户是不会产生2个订单编码的,所以可以防并发。 5、位数可能会在20位之内,位数比较多。
还没有评论,来说两句吧...