1 最近在做个电商系统,考虑到大并发时候,id打算采用雪花算法生成,可是看了京东订单号发现京东订单号码为12位的。
京东的订单号生成可能会采用一种组合策略,这种策略可能包括日期、业务编码和流水号1。以下是一个可能的生成方式:
日期:使用当前的日期作为订单号的一部分。例如,可以使用年月日的形式,如202103221。
业务编码:根据不同的业务类型分配不同的编码。例如,Web订单的编码可能是1,CallCenter的订单编码可能是2,Wap的订单编码可能是3。
流水号:每天的订单量从000001开始,每生成一个订单,流水号就加1。
这样,一个可能的订单号就是日期+业务编码+流水号,例如:20210322100000011。这只是一个可能的生成方式,具体的实现可能会根据京东的业务需求和数据库的实际情况进行定制。
需要注意的是,这种生成方式需要在数据库中新建一张订单量记录表来维护每天的订单量。在生成订单时,根据当天的日期查询这张表的订单数量,然后加1,生成新的流水号。生成订单成功后,需要回写数据库,更新订单量。
这种方法的优点是订单号具有一定的可读性,可以从订单号中获取到一些有用的信息,如下单日期和业务类型1。但是,这种方法可能需要更复杂的数据库操作,以保证订单号的唯一性和连续性