本發明專利技術涉及計算機技術領域,具體提供一種訂單編號生成方法、裝置、電子設備及存儲介質,旨在解決現有的方法在交易請求數較大或者redis集群出現故障的情況下導致生成訂單編號的效率較低的技術問題。為此目的,本發明專利技術的訂單編號生成方法包括:獲取訂單編號生成請求;基于訂單編號生成請求檢測zookeeper集群和redis集群是否均健康;在zookeeper集群和redis集群均健康的情況下,基于zookeeper集群生成訂單編號。如此,提高了生成訂單編號的效率。率。率。
【技術實現步驟摘要】
訂單編號生成方法、裝置、電子設備及存儲介質
[0001]本專利技術涉及計算機
,具體提供一種訂單編號生成方法、裝置、電子設備及存儲介質。
技術介紹
[0002]目前,在交易行業中,需要生成交易流水,其中需要同時生成多種交易訂單編號,比如給銀聯上送的流水號,退貨流水號,在能同時滿足生成訂單編號,也能保證性能,保證訂單編號無序且不重復,而且保證位數也不能過長,最后可以通過生成規則進行分庫分表。
[0003]在三方支付領域,存在第三方支付公司(例如隨行付)、下游服務商(代理商)、代理商對接終端商戶以及上游銀聯。具體如圖1所示,下游服務商發起一筆交易請求到達隨行付交易服務器集群,nginx隨機分發到交易集群中的一臺服務器,交易服務器需要生成一個上游訂單編號上送到銀聯,而且必須保證訂單編號在交易集群中唯一,目前隨行付集群中用redis集群中incre自增策略生成全局唯一自增序列,然后上送銀聯機構。如果redis集群宕機,那么降級使用Mysql的自增策略進行遞增生成唯一id。
[0004]redis集群一旦掛掉,每秒2000筆左右的交易就會打到Mysql數據庫,Mysql數據量過多,讀寫性能就會下降,影響交易;如果Mysql的連接數達不到交易的TPS(每秒交易數量),那么甚至會拖垮整個交易服務。即便redis不掛掉,由于redis中同時負責讀寫交易的讀寫請求,TPS本來就高,而且如果再同時再加入幾倍的id生成器請求,redis連接數就不夠,IO傳輸速度變慢,redis處理不過來這么多請求,就會拖垮redis。
[0005]相應地,本領域需要一種新的訂單編號生成方案來解決上述問題。
技術實現思路
[0006]為了克服上述缺陷,提出了本專利技術,以提供解決或至少部分地解決上述技術問題。本專利技術提供了一種訂單編號生成方法、裝置、電子設備及存儲介質。
[0007]在第一方面,本專利技術提供一種訂單編號生成方法,所述方法包括:獲取訂單編號生成請求;基于所述訂單編號生成請求檢測zookeeper集群和redis集群是否均健康;在所述zookeeper集群和redis集群均健康的情況下,基于所述zookeeper集群生成所述訂單編號。
[0008]在一個實施方式中,所述基于所述zookeeper集群生成所述訂單編號,包括:基于所述zookeeper集群獲取持久節點對應的版本號,其中所述持久節點基于交易服務器啟動時調用的第一接口生成,并將調用第二接口生成的隨機數的第一編碼信息賦值給所述持久節點;基于所述版本號生成所述訂單編號。
[0009]在一個實施方式中,所述基于所述zookeeper集群獲取持久節點對應的版本號,包括:向所述zookeeper集群發送所述訂單編號生成請求,其中所述訂單編號生成請求中封裝第二編碼信息;基于所述訂單編號生成請求調用第三接口,以將所述第二編碼信息更新到所述持久節點;基于更新編碼信息的所述持久節點返回所述持久節點對應的版本號。
[0010]在一個實施方式中,所述基于所述版本號生成所述訂單編號,包括:調用加密函數
對所述版本號進行加密,得到加密后的版本號;基于所述加密后的版本號、訂單編號類型、是否降級和發起交易請求的時間生成所述訂單編號,其中由所述zookeeper集群生成訂單編號表示不降級,由所述redis集群生成訂單編號表示降級。
[0011]在一個實施方式中,所述基于所述加密后的版本號、訂單編號類型、是否降級和發起交易請求的時間信息生成所述訂單編號,包括:基于所述發起交易請求的時間生成距離發起交易請求的天數信息;對所述訂單編號類型、所述是否降級、所述天數信息和所述加密后的版本號進行拼接,得到所述訂單編號。
[0012]在一個實施方式中,所述方法還包括:在所述zookeeper集群不健康且所述redis集群健康的情況下,基于所述redis集群生成所述訂單編號;或
[0013]在所述zookeeper集群和所述redis集群均不健康的情況下,基于Mysql數據庫生成所述訂單編號。
[0014]在一個實施方式中,所述方法還包括:解析所述訂單編號中的天數信息;獲取分庫分表的規則表;基于所述天數信息和所述分庫分表的規則表,將與所述訂單編號相關數據進行落庫。
[0015]在第二方面,本專利技術提供一種訂單編號生成裝置,所述裝置包括:
[0016]獲取模塊,其被配置為獲取訂單編號生成請求;
[0017]檢測模塊,其被配置為基于所述訂單編號生成請求檢測zookeeper集群和redis集群是否均健康;
[0018]生成模塊,其被配置為在所述zookeeper集群和redis集群均健康的情況下,基于所述zookeeper集群生成所述訂單編號。
[0019]在第三方面,提供一種電子設備,該電子設備包括至少一個處理器和至少一個存儲裝置,所述存儲裝置適于存儲多條程序代碼,所述程序代碼適于由所述處理器加載并運行以執行前述任一項所述的訂單編號生成方法。
[0020]在第四方面,提供一種計算機可讀存儲介質,該計算機可讀存儲介質其中存儲有多條程序代碼,所述程序代碼適于由處理器加載并運行以執行前述任一項所述的訂單編號生成方法。
[0021]本專利技術上述一個或多個技術方案,至少具有如下一種或多種有益效果:
[0022]本專利技術中的訂單編號生成方法,首先獲取訂單編號生成請求,接著基于訂單編號生成請求檢測zookeeper集群和redis集群是否均健康,以及在zookeeper集群和redis集群均健康的情況下,基于zookeeper集群生成訂單編號。如此,實現了利用zookeeper集群生成訂單編號的目的,提高了訂單編號的生成效率。
附圖說明
[0023]參照附圖,本專利技術的公開內容將變得更易理解。本領域技術人員容易理解的是:這些附圖僅僅用于說明的目的,而并非意在對本專利技術的保護范圍組成限制。此外,圖中類似的數字用以表示類似的部件,其中:
[0024]圖1是現有的生成訂單編號方法的流程示意圖;
[0025]圖2是根據本專利技術的一個實施例的訂單編號生成方法的主要步驟流程示意圖;
[0026]圖3是一個實施例中訂單編號生成方法的完整步驟流程示意圖;
[0027]圖4是根據本專利技術的一個實施例的訂單編號生成裝置的主要結構框圖示意圖;
[0028]圖5是一個實施例中電子設備的結構示意圖。
具體實施方式
[0029]下面參照附圖來描述本專利技術的一些實施方式。本領域技術人員應當理解的是,這些實施方式僅僅用于解釋本專利技術的技術原理,并非旨在限制本專利技術的保護范圍。
[0030]在本專利技術的描述中,“模塊”、“處理器”可以包括硬件、軟件或者兩者的組合。一個模塊可以包括硬件電路,各種合適的感應器,通信端口,存儲器,也可以包括軟件部分,比如程序代碼,也可以是軟件和硬件的組合。處理器可以是中央處理器、微處理器、圖像處理器、數字信號處理器或者其他任何合適的處理器。處理器具有數據和/或信本文檔來自技高網...
【技術保護點】
【技術特征摘要】
1.一種訂單編號生成方法,其特征在于,所述方法包括:獲取訂單編號生成請求;基于所述訂單編號生成請求檢測zookeeper集群和redis集群是否均健康;在所述zookeeper集群和redis集群均健康的情況下,基于所述zookeeper集群生成所述訂單編號。2.根據權利要求1所述的訂單編號生成方法,其特征在于,所述基于所述zookeeper集群生成所述訂單編號,包括:基于所述zookeeper集群獲取持久節點對應的版本號,其中所述持久節點基于交易服務器啟動時調用的第一接口生成,并將調用第二接口生成的隨機數的第一編碼信息賦值給所述持久節點;基于所述版本號生成所述訂單編號。3.根據權利要求2所述的訂單編號生成方法,其特征在于,所述基于所述zookeeper集群獲取持久節點對應的版本號,包括:向所述zookeeper集群發送所述訂單編號生成請求,其中所述訂單編號生成請求中封裝有第二編碼信息;基于所述訂單編號生成請求調用第三接口,以將所述第二編碼信息更新到所述持久節點;基于更新編碼信息的所述持久節點返回所述持久節點對應的版本號。4.根據權利要求2所述的訂單編號生成方法,其特征在于,所述基于所述版本號生成所述訂單編號,包括:調用加密函數對所述版本號進行加密,得到加密后的版本號;基于所述加密后的版本號、訂單編號類型、是否降級和發起交易請求的時間生成所述訂單編號,其中由所述zookeeper集群生成訂單編號表示不降級,由所述redis集群生成訂單編號表示降級。5.根據權利要求4所述的訂單編號生成方法,其特征在于,所述基于所述加密后的版本號、訂單編號類型、是否降級...
【專利技術屬性】
技術研發人員:王鵬飛,
申請(專利權)人:北京結慧科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。