如何生成订单号比较好 淘宝的订单号是怎么生成和设计的呢?知道的来讨论下

\u5982\u4f55\u751f\u6210\u552f\u4e00\u8ba2\u5355\u53f7

\u9996\u5148\uff0c\u8ba2\u5355\u53f7\u67093\u4e2a\u6027\u8d28\uff1a1.\u552f\u4e00\u6027 2.\u4e0d\u53ef\u63a8\u6d4b\u6027 3.\u6548\u7387\u6027

\u552f\u4e00\u6027\u548c\u4e0d\u53ef\u63a8\u6d4b\u6027\u4e0d\u7528\u8bf4\u4e86\uff0c\u6548\u7387\u6027\u662f\u6307\u4e0d\u80fd\u9891\u7e41\u7684\u53bb\u6570\u636e\u5e93\u67e5\u8be2\u4ee5\u907f\u514d\u91cd\u590d\u3002
\u51b5\u4e14\u6ee1\u8db3\u8fd9\u4e9b\u6761\u4ef6\u7684\u540c\u65f6\u8ba2\u5355\u53f7\u8fd8\u8981\u8db3\u591f\u7684\u77ed\u3002
\u6211\u5728java\u4e0b\u5b9a\u5236\u7684\u8ba2\u5355\u53f7\u751f\u6210\u65b9\u5f0f\u5982\u4e0b\uff1a
int r1=(int)(Math.random()*(10));//\u4ea7\u751f2\u4e2a0-9\u7684\u968f\u673a\u6570
int r2=(int)(Math.random()*(10));
long now = System.currentTimeMillis();//\u4e00\u4e2a13\u4f4d\u7684\u65f6\u95f4\u6233
String paymentID =String.valueOf(r1)+String.valueOf(r2)+String.valueOf(now);// \u8ba2\u5355ID

\u76ee\u524d\u89c4\u5219\u6765\u770b\uff0c\u4e24\u4e2a\u4eba\u5728\u540c\u4e00\u5fae\u79d2\u63d0\u4ea4\u8ba2\u5355\u91cd\u590d\u7684\u6982\u7387\u4e3a1%
\u8ba2\u5355\u6548\u679c\uff1a251393292999921

\u671b\u91c7\u7eb3\uff01

\u6dd8\u5b9d\u7684\u8ba2\u5355\u53f7\u662f\u81ea\u7136\u751f\u6210\u7684\u3002\u53ea\u8981\u6709\u5ba2\u6237\u4e0b\u5355\u540e\u5c31\u4f1a\u81ea\u52a8\u751f\u6210\u4e00\u4e2a\u8ba2\u5355\u53f7\u3002
\u67e5\u770b\u8ba2\u5355\u53f7\u7684\u65b9\u6cd5\uff1a
1\u3001\u9996\u5148\u5148\u6253\u5f00\u4e00\u4e2a\u6d4f\u89c8\u5668\uff0c\u7136\u540e\u5728\u767e\u5ea6\u4e2d\u8f93\u5165\u201c\u6dd8\u5b9d\u7f51\u201d\uff0c\u7136\u540e\u70b9\u51fb\u201c\u767e\u5ea6\u4e00\u4e0b\u201d\u6309\u94ae\u3002

2\u3001\u7136\u540e\u70b9\u51fb\u201c\u6dd8\u5b9d\u7f51\u201d\u5b98\u65b9\u7f51\u7ad9\u3002

3\u3001\u7136\u540e\u5728\u51fa\u73b0\u7684\u754c\u9762\u4e2d\uff0c\u7136\u540e\u8f93\u5165\u8d26\u6237\u548c\u5bc6\u7801\uff0c\u7136\u540e\u70b9\u51fb\u201c\u767b\u5f55\u201d\u6309\u94ae\u767b\u5f55\u5373\u53ef\u3002

4\u3001\u767b\u5f55\u540e\uff0c\u7136\u540e\u70b9\u51fb\u53f3\u4e0a\u89d2\u7684\u201c\u5343\u725b\u5356\u5bb6\u4e2d\u5fc3\u201d\u9009\u9879\u3002

5\u3001\u6b64\u65f6\u8fdb\u5165\u5343\u725b\u5356\u5bb6\u5de5\u4f5c\u53f0\uff0c\u7136\u540e\u70b9\u51fb\u201c\u5df2\u5356\u51fa\u7684\u5b9d\u8d1d\u201d\u9009\u9879\u3002

6\u3001\u7136\u540e\u5728\u6253\u5f00\u7684\u754c\u9762\u4e2d\uff0c\u7136\u540e\u5728\u53f3\u4fa7\u7684\u5c31\u53ef\u4ee5\u770b\u5230\u8ba2\u5355\u53f7\u4e86\u3002


由于我在工作中遇到这个问题,借此与大家分享一下各大电子商务网站订单号的生成方式。



订单号概念

它是您在购物网站购物后获得的订单号,记录的是购物订单信息。


作用

在您需要与购物网站进行订单查询等操作时,需要给购物网站提供商家订单号。


几种下单途径?

  1. web网站下单
  2. 打电话到呼叫中心(CallCenter)下单
  3. 手机wap下单

如果采用单数据库来存储的话,随着订单量的增加,单库的写压力增大,造成数据库服务器性能下降。一般会采用分库来缓解数据库服务器的压力。



那么怎么来进行分库呢?



web来源订单,存入web订单库。
CallCenter来源订单,存入CallCenter订单库。
wap来源订单,存入wap订单库。
最终,将这三种类型的数据库同步到订单主库中。



问题来了,怎么把不同的订单同步到订单主库呢?



电商网站一般利用订单号来作为订单表的主键。因此,我们必须保证订单号不重复,才能将订单安全的同步到订单主库中。


订单命名规定唯一性

这个大家都明白,主要保证订单号不重复。


安全性

订单编号不能透露你公司的真实运营信息,比如你的订单就是流水号的话,那么别人就可以从订单号推测出你公司的整体运营概括了。所以订单编码必须是除了你们公司少部分人外,其他人基本看不懂的。可以参考京东和淘宝的编码规则。


不能使用大规模随机码

因为大规模的随机码随机生成,因为本身就没有意义所以无所谓泄密了。但是事实上这种编码规则在实现上会有很大问题的。随机码满足第二点安全性要求,为了满足唯一性,那就得在生成随机码的时候对比历史数据是否有重复,如果你的订单数量到达了十万次,你每次生成订单编码时就得对比十万条历史数据。


随机码就不能在编码中使用了吗?小规模的随机码是可以使用的,比如2~3位,这种随机码一般都是和流水号等结合使用,主要作用是为了隐藏流水号的真实数据而进行使用的。


防止并发

主要针对编码中有时间的设定。


控制位数

订单号的作用就是便于查询。一般正常使用场景应该是订单出异状或者退货的时候,用户将订单号报给客服,由客服进行查询。所以一般在10~15位为好。目前京东11位,淘宝16位。


怎么保证订单号的唯一性订单号命名规则来生成

比如“业务编码 + 时间戳 + 机器编号[前4位] + 随机4位数 + 毫秒数”。



说明:业务编码(OrderType: Web=1 CallCenter=2 Wap=3) 机器编号(用来表示由那台服务器生成的订单)



伪代码如下:



缺点:这种方式在高并发下会频繁更新订单量记录表,很容易产生锁表。但是锁表问题也是可以解决的,加一层缓存。



全局订单号数据池来生成

数据库创建一个订单号数据库表(order_id_generator);利用python脚本生成一批订单号,将这批订单号存入到order_id_generator表中。生成订单时,会首先调用事务GET_ORDER_ID_FOR_REGISTER,获得当前订单号,再生成订单。这样就保证了子库订单号不会重复。


数据库代码如下:


伪代码如下:


总结

订单号的生成方案,需要根据目前的订单量而定;因为各种方案都有各自的使用场景。



规则,时间精确到秒,加4位随机数。然后在数据库中订单号加唯一性约束,出现异常重新创建。。

试试:
时间精确到秒 + 4位随机数字

  • Excel琛ㄦ牸鍗曞厓鏍兼牸寮濡備綍鐢熸垚璁㈠崟鍙濡100917E-1
    绛旓細1銆佸鏋滄槸杩炵画鐨璁㈠崟鍙锛屽彲鐢ㄨ嚜鍔ㄥ~鍏呮硶鏉ュ仛銆傛搷浣滐細鍏堣緭鍏ュ墠涓や釜锛岀劧鍚庨変腑杈撳叆鐨勶紝鎶婇紶鏍囨斁缃埌閫変腑鍗曞厓鏍煎尯鍩熷彸涓嬭鍚戜笅鎷栧姩榧犳爣鍗冲彲銆2銆佸鏋滄槸涓嶈繛缁殑璁㈠崟鍙凤紝鍙兘渚濇杈撳叆浜嗐備笉杩囷紝娆℃暟澶氫簡锛岀浉鍚岀殑閮ㄩ棬浼氳嚜鍔ㄦ樉绀猴紝鍙鏀逛笉鍚岄儴鍒嗗氨鍙互浜嗐
  • excel鍒朵綔浜嗕竴涓嚜鍔鐢熸垚璁㈠崟鍙鐨勮〃鏍,浣嗘槸娌℃湁鑰冭檻鍒板悓涓澶╂墍鏈夊洜绱犻兘...
    绛旓細濡傛灉鏄啓鍏ワ紝鐢ㄥ叕寮忓彲鑳戒笉澶ソ 鍙互鐢ㄤ唬鐮 灏嗗簵閾恒佹棩鏈熸斁鍏ュ敮涓缁熻鍒楋紝灏卞彲浠ヨ嚜鍔ㄨ缃祦姘村彿浜
  • 鎬庢牱灏嗗綋鍓嶆棩鏈+璁㈠崟鍙风敓鎴涓涓鍗曞彿
    绛旓細1銆侀鍏堟壘涓涓崟鍏冩牸锛屾渶濂芥槸鍦ㄨ〃鏍煎紑濮嬬殑鍦版柟鍏堣緭鍏ヤ竴涓嚱鏁=today锛堬級锛屽垽鏂嚭褰撳墠鏃ユ湡銆傛寜鐓ц姹傦紝鏈変竴鍒楀簲璇ュ彨璁㈠崟缂栧彿锛屾绘湁涓鍒楄杈撳叆鏁伴噺鐨勫垪锛屽湪璁㈠崟缂栧彿鍒楃殑鍓嶉潰鎻掑叆涓鍒楀彲浠ュ彨鍋氳鍗曞簭鍙枫2銆佸彲浠ョ湅鍒颁笂鍥炬槸宸茬粡瀹屾垚鐨勮〃鏍硷紝绾㈣壊鐨勬槸鑷姩鍒ゆ柇鐨勬棩鏈燂紝榛勮壊鐨勬槸鑷姩鐢熸垚鐨勮鍗曠紪鍙凤紝钃濊壊鐨勬槸...
  • 鍏充簬excel涓濡備綍鍔ㄦ鐢熸垚璁㈠崟鍙鐨勯棶棰
    绛旓細1銆侀鍏堢敤TODAY()鍑芥暟鐢熸垚鐨勮鍗曞彿浼氶殢鐫绯荤粺鏃堕棿鐨勫彉鍖栬屽彉鍖,涓嶉傚悎鐢熸垚鍥哄畾鐨勮鍗曞彿;2銆佽琛0寰堢畝鍗曪紝鍙敤鍏紡:=RIGHT(0&MONTH(TODAY()),2)鏉ュ疄鐜帮紱3銆佸鏋滈潪瑕佺敤TODAY()鏉鐢熸垚璁㈠崟鍙锛屾瘡澶╀笅鐝墠鎶婅鍗曞彿鍏ㄩ儴鏁板肩矘璐村疄鐜般傚畬鏁寸殑鍏紡涓猴細="S"&YEAR(TODAY())&RIGHT(0&MONTH(TODAY()),2)...
  • 娣樺疂鐨璁㈠崟缂栧彿鏄鎬庝箞鐢熸垚鐨?
    绛旓細娣樺疂鐨璁㈠崟缂栧彿涓轰簡鍖哄垎涓嶅悓鐨勮鍗曞拰蹇熺殑鏌ラ槄璁㈠崟璧勬枡锛岀紪鍙烽氬父鏄鍗曚腑鍞竴鐨勶紝涓嶄細鏈夐噸澶嶇殑鐜拌薄銆傝鍗曠紪鍙风殑褰㈡垚鏂规硶鏄笉鍚岀殑锛屾湁鐨勬槸绯荤粺鑷姩鐢熸垚鐨勶紝鏈夌殑鍙互鎸夌収涔犳儻閬靛惊涓瀹氱殑瑙勫垯缂栧埗銆傛窐瀹濈綉绠浠嬶細娣樺疂缃戞槸浜氬お鍦板尯杈冨ぇ鐨勭綉缁滈浂鍞佸晢鍦堬紝鐢遍樋閲屽反宸撮泦鍥㈠湪2003骞5鏈堝垱绔嬨傛窐瀹濈綉鏄腑鍥芥繁鍙楁杩庣殑...
  • excel琛ㄦ牸涓璁㈠崟鍙鑷姩鐢熸垚?
    绛旓細鍋囪浣犲湪SHEET1鐨凙1涓樉绀璁㈠崟缂栧彿 鎸変笅ALT+F11,鍙屽嚮宸﹁竟鐨"THISWORKBOOK",澶嶅埗涓嬪垪浠g爜閫鍑.鍙:鍦ㄦ墦鍗伴瑙堟椂,缂栧彿鎵嶄細鏇存柊.Private Sub Workbook_beforePrint(Cancel As Boolean)Sheets("Sheet1").Cells(1, 1).Select a = Selection.Value If a = "" Or Left(a, 8) <> Format(Date, "...
  • 娣樺疂璁㈠崟缂栧彿19浣鐢熸垚瑙勫垯
    绛旓細璁㈠崟鍙鐨鐢熸垚瑙勫垯濡備笅锛2銆佹窐瀹濊鍗曞彿鐨勫墠14浣嶄负搴忓彿銆3銆佹窐瀹濊鍗曞彿鐨勭15-16浣嶆槸涔板ID鐨勫掓暟1-2浣嶃4銆佹窐瀹濊鍗曞彿鐨17-18浣嶄拱瀹禝D鐨勫掓暟3-4浣嶃傛窐瀹濇槸鍥藉唴浣跨敤浜烘暟鏈澶氱殑鐢靛晢璐墿骞冲彴锛屽勾杞讳汉鍑犱箮閮芥湁涓涓窐瀹濊处鍙凤紝姣忓ぉ涔熸湁鍑犲崄涓婄櫨涓囩殑璁㈠崟鍦ㄦ垚浜ゃ傛窐瀹濅负浜嗗尯鍒嗕笉鍚岀敤鎴峰拰鍟嗗鐨勮鍗曪紝涓烘瘡涓...
  • 鐢熸垚璁㈠崟鍙,瑕佹眰鏄敮涓鐨,濡備綍瀹炵幇?
    绛旓細guid Globally Unique Identifier锛堝叏鐞冨敮涓鏍囪瘑绗︼級 涔熺О浣 UUID(Universally Unique IDentifier)GUID/UUID鏄氳繃鐗瑰畾绠楁硶浜х敓鐨勪竴涓簩杩涘埗闀垮害涓128浣嶇殑鏁板瓧锛屽湪绌洪棿涓婂拰鏃堕棿涓婂叿鏈夊敮涓鎬э紝淇濊瘉鍚屼竴鏃堕棿涓嶅悓鍦版柟浜х敓鐨勬暟瀛椾笉鍚岋紝鍦ㄥ叕鍏3400骞翠互鍓嶄骇鐢熺殑UUID/GUID涓庝换浣曞叾浠栦骇鐢熻繃鐨刄UIDs/GUIDs閮戒笉鐩稿悓銆傚湪...
  • 娣樺疂鐨璁㈠崟鍙鏄鎬庝箞鐢熸垚鍜岃璁$殑鍛?鐭ラ亾鐨勬潵璁ㄨ涓
    绛旓細orderCodeNo);} else { 鐩墠鍙湁鍗栧鍙互閫氳繃璁㈠崟鍙鏌ヨ璁㈠崟銆傚叿浣撳仛娉曞涓嬶細1銆佺涓姝ョ櫥褰曡处鍙凤紝杈撳叆璐﹀彿鍜屽瘑鐮侊紝鐐瑰嚮鈥滅櫥褰曗濄2銆佺劧鍚庣偣鍑烩滃崈鐗涘崠瀹朵腑蹇冣濄3銆佺偣鍑烩滃凡鍗栧嚭鐨勫疂璐濃濄4銆佽緭鍏ラ渶瑕佹煡璇㈢殑鈥璁㈠崟缂栧彿鈥濓紝鐐瑰嚮鈥滄悳绱㈣鍗曗濓紝濡備笅鍥炬墍绀恒5銆佽繖鏍峰氨宸茬粡鏌ヨ鍒颁簡銆
  • asp璁㈠崟鍙鐨勪唬鐮,濡備綍璁╄鍗曞彿鑷姩鐢熸垚?
    绛旓細杩欎釜璁㈠崟鍙鍙互浣跨敤鏁版嵁搴撲腑鐨勮嚜澧炲瓧娈电殑鍊,濡傛灉浣犵殑璁㈠崟琛ㄤ腑鏈夎嚜澧炲瓧娈,閭d箞鍦ㄦ彃鍏ユ柊璁板綍涔嬪悗灏卞彲浠ユ煡璇㈠埌璇ュ间簡,鍙互涓嶇敤鍦ㄥ~鍗曟椂鏄剧ず.鎴栬,浣跨敤褰撳墠鏃堕棿鏉ヤ綔璁㈠崟鍙,姣斿:璁 鍗 鍙锛<input Type="text" Name="MOrderID" value="<%=Replace(Replace(Replace(Now(), "-", ""), " ", "...
  • 扩展阅读:订单生成器在线制作 ... 打开我的订单查询 ... 虚拟订单生成器 ... 怎么通过订单号找商家 ... 假单号生成器 ... 我买过的全部订单查询 ... 免费一键生成转账截图 ... 买手机订单生成器 ... 查我的订单号 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网