本发明专利技术涉及计算机技术领域,具体提供一种订单编号生成方法、装置、电子设备及存储介质,旨在解决现有的方法在交易请求数较大或者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所述的订单编号生成方法,其特征在于,所述基于所述加密后的版本号、订单编号类型、是否降级...
【专利技术属性】
技术研发人员:王鹏飞,
申请(专利权)人:北京结慧科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。