分布式系统中物流订单状态的控制方法及其系统的制作方法

文档序号:9866344阅读:1062来源:国知局
分布式系统中物流订单状态的控制方法及其系统的制作方法
【技术领域】
[0001]本发明涉及分布式系统应用技术领域,特别涉及物流订单状态的控制技术。
【背景技术】
[0002]背景一、物流订单本身从被创建之后到完结,中间会经历若干种状态,这些状态可以是物流订单被下发到仓库,仓库处理打包,分发出仓,正式打包发货,以及订单被取消等等。但是对于已经分发出仓的订单,其状态只能是被拒单或者被签收,而不能取消;而流转到仓库且未出仓的订单可以被取消。总之对于这些订单状态流转可以看作是订单的生命周期,只能往前进,不能往后退。
[0003]背景二、大型电子商务系统普遍建立在分布式系统基础之上,每个业务都会有自己的独立的业务系统。每个业务系统一般通过消息中间件来实现业务数据最终一致性,而使用消息中间件就难免产生消息延迟,消息乱序问题。
[0004]例如,当物流公司先向物流中心系统发出仓库打包处理的消息,再发出分发出仓的消息,但是因为各种网络原因或系统原因,导致分发出仓的消息先于打包处理的消息到达物流中心系统。若物流中心系统无法判断分发出仓之前必须有仓内处理打包的过程,而先处理了分发出仓消息,再处理仓库打包处理,则会导致物流订单状态乱序。
[0005]背景三、大型电子商务系统中物流系统和商品交易系统是非常独立的业务系统。不同的物流运送方式,线上和线下的运送方式各不相同,但对于商品交易系统只需了解物流订单是否已经创建、是否已经发货,是否已经签收等,不需关心具体仓内作业的过程,但必须要有一个明确统一的状态来告知。

【发明内容】

[0006]本发明的目的在于提供一种分布式系统中物流订单状态的控制方法及其系统,使得在分布式系统架构下保证物流订单状态有序流转,防止消息接收顺序错乱而导致的业务错误问题。
[0007]为解决上述技术问题,本发明的实施方式公开了一种分布式系统中物流订单状态的控制方法,分布式系统的服务器中预先配置有物流订单状态流转表,该方法包括以下步骤:
[0008]当接收到需要修改物流订单状态的消息时,根据该物流订单的当前状态查询物流订单状态流转表,判断接收到的消息是否满足使物流订单从当前状态跳转到下一状态的条件;
[0009]如果满足条件,则将该物流订单从当前状态跳转到对应的下一状态;
[0010]如果不满足条件,则对消息进行消息重试,使得该消息能够多次被接收,直到再次接收到该消息时,物流订单的当前状态已经能够使该消息满足使该物流订单从当前状态跳转到下一状态的条件。
[0011 ] 本发明的实施方式还公开了一种分布式系统中物流订单状态的控制系统,分布式系统的服务器中预先配置有物流订单状态流转表,该系统包括状态控制器,消息接收模块和消息重试t吴块:
[0012]状态控制器,用于当消息接收模块接收到需要修改物流订单状态的消息时,根据该物流订单的当前状态查询物流订单状态流转表,判断接收到的消息是否满足使物流订单从当前状态跳转到下一状态的条件;
[0013]如果满足条件,则将该物流订单从当前状态跳转到对应的下一状态;
[0014]如果不满足条件,则消息重试模块对消息进行消息重试,使得该消息能够多次被接收,直到消息接收模块再次接收到该消息时,物流订单的当前状态已经能够使该消息满足使该物流订单从当前状态跳转到下一状态的条件。
[0015]本发明实施方式与现有技术相比,主要区别及其效果在于:
[0016]本发明中对物流订单的状态流转顺序进行有效控制,在分布式系统的多个业务系统实现业务数据最终一致性时,能够防止消息接收顺序错乱而导致的业务错误问题。
[0017]进一步地,双物流状态的订单控制使得对物流中心系统以外的系统可以统一地表达物流状态。
[0018]进一步地,消息中间件将不能够推动物流订单进行状态跳转的消息进行缓存,并对缓存的消息进行重试,减轻了服务器的运行压力,避免了服务器资源浪费。
[0019]进一步地,通过外部辅助服务器来实现消息重试,即使没有可以利用的消息中间件,也可以实现消息存储和重试的功能,且避免了物流中心服务器实现消息重试所带来的系统耦合性太高,高系统复杂度的问题。
[0020]进一步地,物流订单状态流转表位于服务器缓存中,能够减轻数据库的压力,也可提高响应速度。
【附图说明】
[0021]图1是本发明第一实施方式中一种分布式系统中物流订单状态的控制方法的流程不意图;
[0022]图2是本发明第二实施方式中一种分布式系统中物流订单状态的控制方法的流程不意图;
[0023]图3是本发明第二实施方式中标准订单状态的生命周期图;
[0024]图4是本发明第二实施方式中业务订单状态,标准订单状态以及商品交易发货状态二者的关系图;
[0025]图5是本发明第二实施方式中双物流状态驱动的方案流程图;
[0026]图6是本发明第二实施方式中双物流状态驱动控制架构图;
[0027]图7是本发明第五实施方式中一种分布式系统中物流订单状态的控制系统的结构示意图。
【具体实施方式】
[0028]在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
[0029]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
[0030]本发明第一实施方式涉及一种分布式系统中物流订单状态的控制方法,图1是该分布式系统中物流订单状态的控制方法的流程示意图。
[0031]具体地说,该分布式系统的服务器中预先配置有物流订单状态流转表,如图1所示,该方法包括以下步骤:
[0032]在步骤101中,当接收到需要修改物流订单状态的消息时,根据该物流订单的当前状态查询物流订单状态流转表,判断接收到的消息是否满足使物流订单从当前状态跳转到下一状态的条件。其中,物流订单状态流转表用于描述物流订单从不同的当前状态跳转到对应的下一状态需要满足的条件。
[0033]如果满足条件,则进入步骤102,将该物流订单从当前状态跳转到对应的下一状
??τ O
[0034]如果不满足条件,则进入步骤103,对消息进行消息重试,使得该消息能够多次被接收,直到再次接收到该消息时,物流订单的当前状态已经能够使该消息满足使该物流订单从当前状态跳转到下一状态的条件。
[0035]此外,对消息进行消息重试,使得该消息能够多次被接收,需要注意的是,当该消息被再次接收时,物流订单的当前状态可能已经由于接收到其它消息而改变过了,使得最新的当前状态已经能够使该重试的消息满足使该物流订单从当前状态跳转到下一状态的条件。
[0036]大型电子商务系统普遍建立在分布式系统的基础之上,每个业务都会有自己的独立的业务系统。比如物流中心系统,商品交易系统,发货系统和仓库流转系统,每个业务系统一般通过一定方式来实现业务数据最终一致性,而在这其中就难免产生消息延迟,消息乱序问题。
[0037]本实施方式则通过对物流订单的状态流转顺序进行有效控制,在分布式系统的多个业务系统实现业务数据最终一致性时,能够防止消息接收顺序错乱而导致的业务错误问题。
[0038]本发明第二实施方式涉及一种分布式系统中物流订单状态的控制方法,图2是该分布式系统中物流订单状态的控制方法的流程示意图。
[0039]第二实施方式在第一实施方式的基础上进行了改进,主要改进之处在于:双物流状态的订单控制使得对物流中心系统以外的系统可以统一地表达物流状态;物流订单状态流转表位于服务器缓存中,能够减轻数据库的压力,也可提高响应速度。
[0040]具体地说,在一个优选例中,物流订单状态包括业务订单状态和标准订单状态,且预先配置的物流订单状态流转表还包括业务订单状态与标准订单状态之间的对应驱动关系O
[0041]在步骤102之后或者步骤103经过消息重试使得物流订单从当前状态跳转到对应的下一状态之后,还包括步骤104:根据业务订单状态与标准订单状态的对应驱动关系,驱动标准订单状态的更新。
[0042]可以理解,业务订单状态和标准订单状态构成了双物流状态。
[0043]其中,本发明所称的“业务订单状态”是指各种垂直业务自己的订单状态,每种不同的业务线都有不同的订单业务状态,如国内一般的快递发货只有一般的国内揽收和签收等状态,而海外物流则
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1