一种数据通信的系统和方法与流程

文档序号:13730436阅读:124来源:国知局
技术领域本发明涉及计算机及其软件技术领域,特别地涉及一种数据通信的系统和方法。

背景技术:
随着计算机网络的快速发展,物流已经是人们日常生活中不可或缺的一部分。一个现代的大型物流公司,会拥有多种不同的库房,库房之间的通信目前多数采用WebService进行,且不同库房之间要实现通信,需要研发人员研发对应的接口,因此浪费了大量的人力物力。对于大的、跨地域的物流公司的多个库房的情况,库房之间的通信系统就会存在不易维护和扩展的问题。图1、图2是现有的大型物流系统的库房之间的通信逻辑模块图。图1中显示,相同地域的库房之间的通信可直接依赖内网(城域网)互联进行通讯;图2中显示不同地域的库房之间还需要依赖互联网Internet或专线进行通信,该种模式强依赖于Internet或专线,同时相互通信的2个库房之间要求具备高可用性。图1和图2中只展示了4个库房之间的通信情况,当一个大型物流公司包含的N个库房之间需要进行通信时,如图所示的通信逻辑的复杂度将会按照2的N次方的数量级上升,亦即不同库房之间的通信系统的复杂度直接提升了2的N次方个数量级。由此,可以看出,现有的库房之间数据通信的系统具有以下的缺点:1、不易扩展:当库房增加时,需要开发新的支持多个库房之间通信的接口;2、系统开发、维护费用高:库房越多,系统的维护成本就越高,复杂度也越大,且当出现问题时,问题排查也更加困难,会直接导致系统的可用性降低;3、库房之间强依赖:待通信的2个库房,当其中一个因为某种原因不可用时,另一个系统只能等待其恢复。同时,2个库房之间还强依赖于双方的网络环境,导致整个系统的整体可用率下降,系统的抗风险能力降低。

技术实现要素:
有鉴于此,本发明提供一种数据通信的系统和方法,能够降低需要通信的各个消息系统之间的依赖性,提高消息系统的灵活性、扩展性和可配置性。为实现上述目的,根据本发明的一个方面,提供了一种数据通信的系统。一种数据通信的系统,包括:至少两个消息端结点和消息中间结点;其中,每个所述消息端结点用于发送消息给所述消息中间结点,以及接收所述消息中间结点转发的消息;所述消息中间结点用于接收作为源消息端结点的一个消息端结点发来的消息并转发给其他消息端结点,其中,所述消息中间结点在将从一个消息端结点接收的消息转发给其他消息端结点时,如果未发送成功,则利用所述消息中间结点的异常重试机制重新发送所述消息。可选地,所述消息中间结点在把消息转发给一个消息端结点后,在预定的时间内没有收到成功接收响应,则判定出现异常并且按照设定的时间间隔重发该消息直到收到成功接收响应。可选地,所述消息中间结点在把消息转发给一个消息端结点后,在预定的时间内没有收到成功接收响应,则判定出现异常并且报警以便人工干预重新转发消息。可选地,所述消息端结点根据接收到的消息中包含的目标消息端结点的标识信息进行校验,如果校验通过,则消费该消息,否则,丢弃该消息。可选地,每个消息端结点在接收到消息时,当该消息中包含的目标消息端结点的标识与本结点的标识相同,则校验通过。根据本发明的另一方面,提供了一种在包括多个消息端结点的系统中数据通信的方法。一种在包括多个消息端结点的系统中数据通信的方法,包括:接收一个消息端结点发来的消息,其中,所述消息包括该消息针对的目标消息端结点的标识信息;将接收到的所述消息转发给系统中所有其他消息端结点;如果所述其他消息端结点中存在消息端结点未成功接收该消息,则利用异常重试机制重新发送所述消息。可选地,当在预定的时间内没有收到成功接收响应,则判定出现异常并且按照设定的时间间隔重发该消息直到收到成功接收响应。可选地,当在预定的时间内没有收到成功接收响应,则判定出现异常并且报警以便人工干预重新转发消息。可选地,所述消息端结点根据接收到的消息中包含的目标消息端结点的标识信息进行校验,如果校验通过,则消费该消息,否则,丢弃该消息。可选地,每个消息端结点在接收到消息时,当该消息中包含的目标消息端结点的标识与本结点的标识相同,则校验通过。根据本发明的技术方案,通过引入消息中间件进行消息的转发,多消息系统之间通信时,可以使各个消息系统之间相互独立,互不依赖,便于各个消息系统自身的维护,从而降低了消息系统的复杂度,提高了消息系统的灵活性。当有消息系统加入或者删除时,无需增加或删除接口,仅需系统配置即可,从而提高了数据通信系统的可扩展性和可配置性。附图说明附图用于更好地理解本发明,不构成对本发明的不当限定。其中:图1是现有的大型物流系统相同地域的库房之间的通信逻辑模块图;图2是现有的大型物流系统不同地域的库房之间的通信逻辑模块图;图3是根据本发明实施例的数据通信系统的原理示意图;图4是根据本发明实施例的数据通信的原理流程图;图5是根据本发明实施例的数据通信的方法的主要步骤示意图;图6是根据本发明实施例的消息发送过程的流程图;图7是根据本发明实施例的消息接收过程的流程图。具体实施方式以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。图3是根据本发明实施例的数据通信系统的原理示意图。该系统包括多个实现为库房系统的消息系统和消息中间件。由图3与图1和图2相比较可以看出,本发明的数据通信系统与现有技术中的数据通信系统相比,增加了消息中间件作为各个消息系统之间进行数据通信的中间系统。根据本发明,每个消息系统包括两个接口,即用于发送消息给消息中间件的接口和用于接收消息中间件推送的消息的接口。另外,消息系统还可以对消息进行解析并执行相应的处理。另外,消息系统还可以根据自己的具体业务判断是否需要将丢弃的消息记录在日志中,以便后续查询使用等。本发明中使用的消息中间件,可以是开源的消息中间件,比如:ActiveMQ、Kafka、mom4j等;也可以是需要付费的消息中间件,比如:IBM的WebSphereMQ、方正飞鸿的消息中间件FounderMQ、金蝶Apusic消息中间件等。具体可根据项目实际需求的安全级别进行选择。本发明中,消息中间件负责接收从一源消息系统发送来的消息,并且推送消息到各个订阅了该消息的目标消息系统上。每一个消息系统在接收到消息中间件推送过来的消息后,会根据消息中包含的目标消息系统的标识信息来判断该消息是否属于本消息系统,一旦该消息属于本消息系统,则把该消息转成对应的通信数据并记录保存下来;反之,则将该消息丢弃。根据本发明,如图3所示的数据通信系统,各个消息系统之间的依赖已经弱化。在消息系统之间进行数据通信时,如果出现目标消息系统不可用,或是目标消息系统出现网络故障,将不会影响源消息系统向其发送数据通信请求。比如:A消息系统需要和C消息系统进行通信,但是此时,C消息系统由于网络故障,暂时无法连接网络,但是这并不影响A消息系统向C消息系统发送消息,根据本发明的技术方案,A消息系统可以把消息先发送并保存到消息中间件,待C消息系统的网络恢复后,再由消息中间件将A消息系统发送的消息发送到C消息系统即可。由于消息中间件具有异常重试的机制,因此,当目标消息系统未能成功接收消息中间件推送的消息时,消息中间件会自动重试发送该消息,直到该消息发送成功或者有人工干预处理等。其中,当消息中间件向消息系统发送了消息后,如果在预定的时间内没有收到成功接收的响应,则可认为是消息系统等出现了故障。此时,根据消息中间件的异常重试机制,可以在设定的时间段内按照一定的时间间隔重发该消息,如果消息发送后在预定时间内收到成功接收的响应,则认为该消息已发送完成;否则,说明故障仍未恢复,可以继续重发该消息直至接收成功,也可以发邮件报警以便人工处理等。在上述示例中,消息中间件在将A消息系统发送的消息推送给C消息系统的同时,也将该消息推送给了其他所有的消息系统,即除了A消息系统和C消息系统外,参与数据通信的其他消息系统。其他消息系统在接收到消息中间件推送的消息后,根据该消息中携带的目标消息系统的标识信息,来判断该消息是否是本消息系统的消息,如果是,则进行解析并处理,反之,则把该消息丢弃。图4是根据本发明实施例的数据通信的原理流程图。如图4所示,消息系统将业务数据和目标消息系统的标识信息一起封装成消息后,发送给消息中间件;消息中间件将接收到的消息推送给除源消息系统之外其他参与数据通信的消息系统;之后各消息系统根据该消息中包含的目标消息系统的标识信息,判断该消息是否是本消息系统的消息,如果是,则解析该消息并执行相应的处理,否则,丢弃该消息。由图3及图4的介绍,可以看出,本发明提出的一种数据通信的系统,包括:至少两个消息端结点和消息中间结点;其中,每个所述消息端结点用于发送消息给所述消息中间结点,以及接收所述消息中间结点转发的消息;所述消息中间结点用于接收作为源消息端结点的一个消息端结点发来的消息并转发给其他消息端结点,其中,所述消息中间结点在将从一个消息端结点接收的消息转发给其他消息端结点时,如果未发送成功,则利用所述消息中间结点的异常重试机制重新发送所述消息。其中,消息中间结点在把消息转发给一个消息端结点后,在预定的时间内没有收到成功接收响应,则判定出现异常并且按照设定的时间间隔重发该消息直到收到成功接收响应。或者,消息中间结点在把消息转发给一个消息端结点后,在预定的时间内没有收到成功接收响应,则判定出现异常并且报警以便人工干预重新转发消息。消息端结点根据接收到的消息中包含的目标消息端结点的标识信息进行校验,如果校验通过,则消费该消息,否则,丢弃该消息。并且,每个消息端结点在接收到消息时,当该消息中包含的目标消息端结点的标识与本结点的标识相同,则校验通过。图5是根据本发明实施例的数据通信的方法的主要步骤示意图。本发明实施例的在包括多个消息端结点的系统中数据通信的方法,主要包括如下的步骤S51至步骤S53。步骤S51:接收一个消息端结点发来的消息,其中,所述消息包括该消息针对的目标消息端结点的标识信息;步骤S52:将接收到的消息转发给系统中所有其他消息端结点;步骤S53:如果其他消息端结点中存在消息端结点未成功接收该消息,则利用异常重试机制重新发送所述消息。其中,当在预定的时间内没有收到成功接收响应,则判定出现异常并且按照设定的时间间隔重发该消息直到收到成功接收响应。或者,当在预定的时间内没有收到成功接收响应,则判定出现异常并且报警以便人工干预重新转发消息。消息端结点根据接收到的消息中包含的目标消息端结点的标识信息进行校验,如果校验通过,则消费该消息,否则,丢弃该消息。并且,每个消息端结点在接收到消息时,当该消息中包含的目标消息端结点的标识与本结点的标识相同,则校验通过。下面将结合图6和图7介绍本发明实施例的数据通信过程。本发明中以库房系统作为消息系统进行介绍。图6是根据本发明实施例的消息发送过程的流程图。当库房之间需要进行数据通信时,会先将生成的待发送的数据和目标库房的标识信息封装成消息,然后再将消息发送个消息中间件。在生成待发送的数据时,可以通过预先对所有的库房系统进行分析,得到库房之间进行数据通信所需要的共用属性信息(比如:商品编号、商品名称、商品数量、供货商编号、操作人员信息、操作时间等),然后,组装共用属性信息,即可得到待发送的业务数据(步骤S61)。之后,将目标库房的标识信息,例如:目标库房所在的地域编号以及库房编号等补充完整,并与待发送的业务数据封装成一条消息(步骤S62)。再把消息发送到消息中间件(步骤S63),收到消息中间件返回的发送成功的提示时,表明消息发送成功,只需等待目标库房消费消息即可。图7是根据本发明实施例的消息接收过程的流程图。库房接收消息时,首先接收消息中间件推送的消息(步骤S71),待接收成功后,向消息中间件返回接收消息成功的标识。然后,获取接收到的消息中所携带的目标库房标识(步骤S72),即:目标库房的地域编号和库房编号,并判断目标库房是否为本库房(步骤S73);如果是,则消息校验通过,将消息解析成本库房对应的业务数据,进行库房正常业务处理(步骤S74);否则,信息校验不通过,把本条消息丢弃(步骤S75)。结合图6和图7可知,库房之间进行数据通信时,可以通过抽取出库房之间通信的共用属性,作为每一个库房都需要遵守的标准,来方便地生成待发送数据;同时,按照地域,区域及库房进行编号,系统之间通信的时候,根据预先的编号规则查找相应的区域,库房信息,用一套共用接口解决不同地域,不同库房之间通信复杂度的问题。同时,引入一个消息中间件,库房之间有通信需求时,发送消息的库房只需要按预先定义好的地域编号、库房编号把对应的共用属性生成的数据发送到消息中间件即可;收取消息的库房只需要去消息中间件获取消息,当获取到消息后,根据消息携带的地域编号,库房编号核实是否是自己库房需要的消息,如果是本库房需要的消息则进行消费处理,否则将消息丢弃,不做处理即可。根据本发明的技术方案,当后续有多个库房之间需要通信时,按照预先定义好的规则进行系统配置即可,不需要再花费更多的人力财力进行研发。同时,如果库房撤库,只需要由相应的业务人员从系统上操作即可,无需研发人员将与本库房相关的库房接口进行下线,以及调整其他与本库房有通信的库房接口信息等操作,操作简单方便。根据本发明实施例的技术方案,通过引入消息中间件进行消息的转发,多消息系统之间通信时,可以使各个消息系统之间相互独立,互不依赖,便于各个消息系统自身的维护,从而降低了消息系统的复杂度,提高了消息系统的灵活性。当有消息系统加入或者删除时,无需增加或删除接口,仅需系统配置即可,从而提高了数据通信系统的可扩展性和可配置性。上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1