订单异步处理方法、服务器及存储介质与流程

文档序号:15831922发布日期:2018-11-07 07:24阅读:423来源:国知局
订单异步处理方法、服务器及存储介质与流程

本发明涉及电子商务领域,尤其涉及一种订单异步处理方法、服务器及计算机可读存储介质。

背景技术

随着互联网的普及,网购已成为人们生活中不可缺少的一部分。特别是在节假日有促销活动的情况下,网购订单的数量会呈爆炸性的增长。为保持大流量、高并发下订单系统的稳定性,当前主要通过两种手段进行解决:升级硬件和应用系统的扩容、读写分离、数据库的分库分表等。但硬件升级的成本过高,且应用系统的扩容、读写分离、数据库的分库分表等需要按照多个应用场景冗余多份数据,业务处理效率低下。



技术实现要素:

鉴于以上内容,本发明提供一种订单异步处理方法、服务器及计算机可读存储介质,其主要目的在于提高业务处理效率,提升系统吞吐量。

为实现上述目的,本发明提供一种订单异步处理方法,该方法包括:

接收步骤:接收用户通过服务接口发送的订单请求;

分库分表步骤:根据订单请求,利用预设的生成规则生成订单地址,根据订单地址对订单数据进行分库分表;

解析步骤:实时解析数据库操作日志,当解析到日志的状态字段发生变化时,发送变更消息;

状态变更步骤:根据变更消息,生成变更指令并发布;及

异步处理步骤:根据发布的变更指令,利用预设的异步处理方式对订单进行异步处理,并反馈结果。

优选地,所述预设的生成规则包括:

根据用户地址,提取用户地址的后m位地址编号生成中间值,m为正整数;

将生成的中间值设置为订单地址的后m位地址编号。

优选地,所述分库分表步骤包括:

根据订单地址,利用预设的分库公式将订单数据分配到对应的数据库;及

利用预设的分表公式将订单数据分配到对应的数据表。

优选地,所述预设的分库公式为:数据库编号=订单地址%(10^m)/(10^n),分表公式为:数据表编号=订单地址%(10^m);

其中,%(10^m)代表对10^m取模,m代表订单地址后m位数,/(10^n)代表对10^n取整,n代表订单地址后m位数的前n为数,且m>n。

优选地,所述预设的异步处理方式包括:

将订单处理的整个流程步骤分成主流程步骤和支流程步骤,其中,主流程步骤包括创建订单、订单存储、支付提示、支付完成、状态变更、支付成功反馈,支流程步骤包括下单后发送消息、支付成功后通知物流、扣减库存;

将主流程步骤和支流程步骤进行异步处理。

优选地,所述预设的异步处理方式还包括:若支流程的某步骤处理失败,则利用时间衰减重试机制进行重新处理。

优选地,所述时间衰减重试机制包括:设置重试次数、初始重试时间间隔及新增重试时间间隔,某步骤处理失败时,启动时间衰减重试机制,若重试失败,则重试次数减1,下一轮重试时间为当前重试时间间隔加上新增重试时间间隔,直至重试次数为0时,重试停止并反馈处理异常的提示信息。

此外,本发明还提供一种服务器,该服务器包括:存储器、处理器及显示器,所述存储器上存储订单异步处理程序,所述订单异步处理程序被所述处理器执行,可实现如下步骤:

接收步骤:接收用户通过服务接口发送的订单请求;

分库分表步骤:根据订单请求,利用预设的生成规则生成订单地址,根据订单地址对订单数据进行分库分表;

解析步骤:实时解析数据库操作日志,当解析到日志的状态字段发生变化时,发送变更消息;

状态变更步骤:根据变更消息,生成变更指令并发布;及

异步处理步骤:根据发布的变更指令,利用预设的异步处理方式对订单进行异步处理,并反馈结果。

优选地,所述预设的生成规则包括:

根据用户地址,提取用户地址的后m位地址编号生成中间值,m为正整数;

将生成的中间值设置为订单地址的后m位地址编号。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中包括订单异步处理程序,所述订单异步处理程序被处理器执行时,可实现如上所述订单异步处理方法中的任意步骤。

本发明提出的订单异步处理方法、服务器及计算机可读存储介质,通过接收用户的订单请求,并利用预设规则生成订单地址,进行分库分表。接着,实时解析数据库操作日志,根据日志变化,发送变更消息。最后,根据变更消息生成变更指令,利用预设的异步处理方式进行处理,反馈结果,从而缩短订单处理时间,提升用户体验。

附图说明

图1为本发明服务器较佳实施例的示意图;

图2为图1中订单异步处理程序较佳实施例的模块示意图;

图3为图2中程序模块的功能示意图;

图4为本发明订单异步处理方法较佳实施例的流程图;

图5为本发明订单异步处理方法中分库分表步骤的示意图;

图6为本发明订单异步处理方法中业务逻辑异步处理的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如图1所示,是本发明服务器1较佳实施例的示意图。

在本实施例中,服务器1是指产品服务平台,该服务器1可以是服务器、平板电脑、个人电脑、便携计算机以及其它具有运算功能的电子设备。

该服务器1包括:存储器11、处理器12、显示器13、网络接口14及通信总线15。其中,网络接口14可选地可以包括标准的有线接口、无线接口(如wi-fi接口)。通信总线15用于实现这些组件之间的连接通信。

存储器11至少包括一种类型的可读存储介质。所述至少一种类型的可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器等的非易失性存储介质。在一些实施例中,所述存储器11可以是所述服务器1的内部存储单元,例如该服务器1的硬盘。在另一些实施例中,所述存储器11也可以是所述服务器1的外部存储单元,例如所述服务器1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。在本实施例中,所述存储器11可以用于存储安装于所述服务器1的应用软件及各类数据,例如订单异步处理程序10、数据表等。

处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其它数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行订单异步处理程序10的计算机程序代码、解析数据库操作日志等。

显示器13可以称为显示屏或显示单元。在一些实施例中显示器13可以是led显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(organiclight-emittingdiode,oled)触摸器等。显示器13用于显示在服务器1中处理的信息以及用于显示可视化的工作界面,例如显示订单处理结果等。

图1仅示出了具有组件11-15以及订单异步处理程序10的服务器1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

可选地,该服务器1还可以包括用户接口,用户接口可以包括输入单元比如键盘(keyboard)、语音输出装置比如音响、耳机等,可选地用户接口还可以包括标准的有线接口、无线接口。

可选地,该服务器1还包括触摸传感器。所述触摸传感器所提供的供用户进行触摸操作的区域称为触控区域。此外,这里所述的触摸传感器可以为电阻式触摸传感器、电容式触摸传感器等。而且,所述触摸传感器不仅包括接触式的触摸传感器,也可包括接近式的触摸传感器等。此外,所述触摸传感器可以为单个传感器,也可以为例如阵列布置的多个传感器。用户可以通过触摸所述触控区域启动订单异步处理程序10。

此外,该电子装置1的显示器的面积可以与所述触摸传感器的面积相同,也可以不同。可选地,将显示器与所述触摸传感器层叠设置,以形成触摸显示屏。该装置基于触摸显示屏侦测用户触发的触控操作。

该服务器1还可以包括射频(radiofrequency,rf)电路、传感器和音频电路等等,在此不再赘述。

在图1所示的服务器1实施例中,作为一种计算机存储介质的存储器11中存储订单异步处理程序10的程序代码,处理器12执行订单异步处理程序10的程序代码时,实现如下步骤:

接收步骤:接收用户通过服务接口发送的订单请求;

分库分表步骤:根据订单请求,利用预设的生成规则生成订单地址,根据订单地址对订单数据进行分库分表;

解析步骤:实时解析数据库操作日志,当解析到日志的状态字段发生变化时,发送变更消息;

状态变更步骤:根据变更消息,生成变更指令并发布;及

异步处理步骤:根据发布的变更指令,利用预设的异步处理方式对订单进行异步处理,并反馈结果。

具体原理请参照下述图2关于订单异步处理程序10较佳实施例的模块示意图及图4关于订单异步处理方法较佳实施例的流程图的介绍。

如图2所示,是图1中订单异步处理程序10较佳实施例的模块示意图。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。

在本实施例中,订单异步处理程序10包括:接收模块110、分库分表模块120、解析模块130、状态变更模块140及异步处理模块150,结合图3中程序模块的功能示意图,所述模块110-150所实现的功能或操作步骤如下:

接收模块110,用于接收用户通过服务接口发送的订单请求。其中,所述订单请求包括但不限于用户编号、配送地址、物品名称。所述服务接口用于接收所有用户发送的订单请求信息。

分库分表模块120,用于根据订单请求,利用预设的生成规则生成订单地址,并根据订单地址对订单数据进行分库分表。所述预设的生成规则包括:根据用户地址,提取用户地址的后m位地址编号,生成中间值,并将生成的中间值设置为订单地址的后m位地址编号。即在订单生成时,将订单地址的后m位地址编号与用户地址的后m位地址编号保持一致,如将订单地址的后4位地址编号与用户地址的后4位地址编号保持一致。接着,根据分区地址对订单进行分库分表。分区地址包括用户地址和订单地址。如图5所示,是订单异步处理方法中分库分表步骤的示意图。所述分库分表的具体步骤包括:根据生成的订单地址,先利用预设的分库公式将订单数据分配到对应的数据库,再利用预设的分表公式将订单数据分配到对应的数据表中。其中,所述预设的分库公式:数据库编号=订单地址%(10^m)/(10^n),所述预设的分表公式:数据表编号=订单地址%(10^m),%(10^m)代表对10^m取模,m代表订单地址后m位数,/(10^n)代表对10^n取整,n代表订单地址后m位数的前n位数,m为正整数且m>n。所述分库公式和分表公式中的订单地址还可以替换成用户地址。假设m为4,n为2,分区地址为******0201,利用分库公式,得到数据库编号=******0201%10000/100=2,表示该订单的数据存储在第二个数据库;利用分表公式,得到数据表编号=******0201%10000=201,最左补0得到0201,表示该订单的数据存储在0201表。因此,根据分区地址******0201就确定对应的订单数据在2库0201表。

解析模块130,用于实时解析数据库操作日志,当解析到日志中记录状态的字段发生变化时,发送变更消息。所述变更消息包括但不限于用户地址、订单地址及变更内容。例如,中间件,如canel,实时解析数据库操作日志,当解析到某个字段发生变化时,通过消息系统发送roma消息。

状态变更模块140,用于根据变更消息,生成变更指令并发布。接收到变更消息后,产生一个变更指令,该指令包含关键字key,如“1->2”,表示订单状态由1变为2。应理解的是,此处的1变为2可以是指由未支付到支付完成,可以是指物流消息变更等。

异步处理模块150,用于根据发布的变更指令内的关键字key,利用预设的异步处理方式对订单进行异步处理,并反馈结果。所述订单处理流程:创建订单->订单存储->发送下单消息->支付提醒->支付完成->状态变更->通知物流->扣减库存->支付成功。但应理解,此处的订单处理流程并不仅限于上述的流程,上述流程仅作为下面的操作实施而举例,因此,还可以包括其他的业务流程。若按照订单处理流程进行一一处理,会增加耗时,因此需要采用异步驱动的方式进行异步处理。如图6所示,是业务逻辑异步处理的流程示意图。所述预设的异步处理方式包括:将订单处理的整个流程步骤分成主流程及支流程,主流程包括创建订单、订单存储、支付提示、支付完成、状态变更、支付成功反馈,支流程包括下单后发送消息、支付成功后的通知物流、扣减库存,发送支付成功消息等操作。主流程在变更订单状态成功后直接向用户返回支付成功消息,而调用发货接口进行通知物流,扣减库存等支流程继续执行,缩短订单流程继续执行,缩短订单流程处理时间,使得用户感受到响应速度非常快,提升用户体验度。

进一步地,在支流程的异步处理过程中,若某步骤处理失败,则利用时间衰减重试机制进行重新处理。所述时间衰减重试机制包括:设置重试次数、初始重试时间间隔及新增重试时间间隔,某步骤处理失败时,启动时间衰减重试机制,若重试失败,则重试次数减1,下一轮重试时间为当前重试时间间隔加上新增重试时间间隔,直至重试次数为0时,重试停止并反馈处理异常的提示信息。例如,重试次数为10,初始重试时间间隔为60s及新增重试时间间隔为15s,发货系统异常导致通知物流失败,则产生变更指令利用时间衰减重试机制进行重新处理。第1次重试失败,则重试次数减1,60s后继续重试;第2次重试失败,则重试次数减1,75s后继续重试;……;第10次重试失败,则重试次数为0,停止该订单的异步事件的处理,并向系统管理人员进行反馈,解决系统异常。所述反馈的方式包括小窗口、短信、邮箱等方式,例如,向系统管理员弹出小窗口“***步骤处理重试失败,请及时处理,谢谢!”

如图4所示,是本发明订单异步处理方法较佳实施例的流程图。

在本实施例中,处理器12执行存储器11中存储的订单异步处理程序10的计算机程序时实现订单异步处理方法包括:步骤s10-步骤s50:

步骤s10,接收模块110接收用户通过服务接口发送的订单请求。其中,所述订单请求包括用户编号、配送地址、物品名称等。所述服务接口用于接收用户发送的订单请求信息。

步骤s20,根据订单请求,分库分表模块120利用预设的生成规则生成订单地址,并根据订单地址对订单进行分库分表。所述预设规则包括:根据用户地址,提取用户地址的后m位地址编号,生成中间值,并将生成的中间值设置为订单地址的后m位地址编号。即在订单生成时,将订单地址的后m位地址编号与用户地址的后m位地址编号保持一致,如将订单地址的后4位地址编号与用户地址的后4位地址编号保持一致。接着,根据分区地址对订单进行分库分表。分区地址包括用户地址和订单地址。如图5所示,是订单异步处理方法中分库分表步骤的示意图。所述分库分表的具体步骤包括:根据生成的订单地址,先利用预设的分库公式将订单数据分配到对应的数据库,再利用预设的分表公式将订单数据分配到对应的数据表中。其中,所述预设的分库公式:数据库编号=订单地址%(10^m)/(10^n),所述预设的分表公式:数据表编号=订单地址%(10^m),%(10^m)代表对10^m取模,m代表订单地址后m位数,/(10^n)代表对10^n取整,n代表订单地址后m位数的前n位数,m为正整数且m>n。所述分库公式和分表公式中的订单地址还可以替换成用户地址。假设m为4,n为2,分区地址为******0201,利用分库公式,得到数据库编号=******0201%10000/100=2,表示该订单的数据存储在第二个数据库;利用分表公式,得到数据表编号=******0201%10000=201,最左补0得到0201,表示该订单的数据存储在0201表。因此,根据分区地址******0201就确定对应的订单数据在2库0201表。

步骤s30,解析模块130实时解析数据库操作日志,当解析到日志中记录状态的字段发生变化时,发送变更消息。所述变更消息包括但不限于用户地址、订单地址及变更内容。例如,中间件,如canel,实时解析数据库操作日志,当解析到某个字段发生变化时,通过消息系统发送roma消息。

步骤s40,状态变更模块140根据变更消息,生成变更指令并发布。接收到变更消息后,产生一个变更指令,该指令包含关键字key,如“1->2”,表示订单状态由1变为2。应理解的是,此处的1变为2可以是指由未支付到支付完成,可以是指物流消息变更等。

步骤s50,异步处理模块150根据发布的变更指令中的关键字key,利用预设的异步处理方式对订单进行异步处理,并反馈结果。所述订单处理流程:创建订单->订单存储->发送下单消息->支付提醒->支付完成->状态变更->通知物流->扣减库存->支付成功。但应理解,此处的订单处理流程并不仅限于上述的流程,上述流程仅作为下面的操作实施而举例,因此,还可以包括其他的业务流程。若按照订单处理流程进行一一处理,会增加耗时,因此需要采用异步驱动的方式进行异步处理。如图6所示,是业务逻辑异步处理的流程示意图。所述预设的异步处理方式包括:将订单处理的整个流程步骤分成主流程及支流程,主流程包括创建订单、订单存储、支付提示、支付完成、状态变更、支付成功反馈,支流程包括下单后发送消息、支付成功后的通知物流、扣减库存,发送支付成功消息等操作。主流程在变更订单状态成功后直接向用户返回支付成功消息,而调用发货接口进行通知物流,扣减库存等支流程继续执行,缩短订单流程继续执行,缩短订单流程处理时间,使得用户感受到响应速度非常快,提升用户体验度。

进一步地,在支流程的异步处理过程中,若某步骤处理失败,则利用时间衰减重试机制进行重新处理。所述时间衰减重试机制包括:设置重试次数、初始重试时间间隔及新增重试时间间隔,某步骤处理失败时,启动时间衰减重试机制,若重试失败,则重试次数减1,下一轮重试时间为当前重试时间间隔加上新增重试时间间隔,直至重试次数为0时,重试停止并反馈处理异常的提示信息。例如,重试次数为10,初始重试时间间隔为60s及新增重试时间间隔为15s,发货系统异常导致通知物流失败,则产生变更指令利用时间衰减重试机制进行重新处理。第1次重试失败,则重试次数减1,60s后继续重试;第2次重试失败,则重试次数减1,75s后继续重试;……;第10次重试失败,则重试次数为0,停止该订单的异步事件的处理,并向系统管理人员进行反馈,解决系统异常。所述反馈的方式包括小窗口、短信、邮箱等方式,例如,向系统管理员弹出小窗口“***步骤处理重试失败,请及时处理,谢谢!”

上述实施例提出的订单异步处理方法,根据用户的订单请求,利用预设规则生成订单地址,并进行分库分表。之后,解析数据库操作日志,生成变更消息,并根据变更消息生成变更指令。最后,根据变更指令,利用预设的异步处理方式对订单进行异步处理,并反馈结果,从而在分库分表中减少数据备份,提升系统的吞吐量,提升用户的体验度。

此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质中包括订单异步处理程序10,所述订单异步处理程序10被处理器执行时实现如下操作:

接收步骤:接收用户通过服务接口发送的订单请求;

分库分表步骤:根据订单请求,利用预设的生成规则生成订单地址,根据订单地址对订单数据进行分库分表;

解析步骤:实时解析数据库操作日志,当解析到日志的状态字段发生变化时,发送变更消息;

状态变更步骤:根据变更消息,生成变更指令并发布;及

异步处理步骤:根据发布的变更指令,利用预设的异步处理方式对订单进行异步处理,并反馈结果。

优选地,所述预设的生成规则包括:

根据用户地址,提取用户地址的后m位地址编号生成中间值,m为正整数;

将生成的中间值设置为订单地址的后m位地址编号。

优选地,所述分库分表步骤包括:

根据订单地址,利用预设的分库公式将订单数据分配到对应的数据库;及

利用预设的分表公式将订单数据分配到对应的数据表。

优选地,所述预设的分库公式为:数据库编号=订单地址%(10^m)/(10^n),分表公式为:数据表编号=订单地址%(10^m);

其中,%(10^m)代表对10^m取模,m代表订单地址后m位数,/(10^n)代表对10^n取整,n代表订单地址后m位数的前n为数,且m>n。

优选地,所述预设的异步处理方式包括:

将订单处理的整个流程步骤分成主流程步骤和支流程步骤,其中,主流程步骤包括创建订单、订单存储、支付提示、支付完成、状态变更、支付成功反馈,支流程步骤包括下单后发送消息、支付成功后通知物流、扣减库存;

将主流程步骤和支流程步骤进行异步处理。

优选地,所述预设的异步处理方式还包括:若支流程的某步骤处理失败,则利用时间衰减重试机制进行重新处理。

优选地,所述时间衰减重试机制包括:设置重试次数、初始重试时间间隔及新增重试时间间隔,某步骤处理失败时,启动时间衰减重试机制,若重试失败,则重试次数减1,下一轮重试时间为当前重试时间间隔加上新增重试时间间隔,直至重试次数为0时,重试停止并反馈处理异常的提示信息。

本发明之计算机可读存储介质的具体实施方式与上述订单异步处理方法的具体实施方式大致相同,在此不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1