支持微服务架构事务最终一致性的方法、装置及系统与流程

文档序号:12465511阅读:242来源:国知局
支持微服务架构事务最终一致性的方法、装置及系统与流程

本发明涉及微服务领域,具体而言,涉及一种支持微服务架构事务最终一致性的方法、装置及系统。



背景技术:

目前,在互联网开发的环境下,统一的大应用系统已经不能满足日益增长的扩展性需求。为了提高系统的运行速度,以及支持灵活的动态扩展,业务系统一般会被拆分为多个微服务,即每个服务仅提供相对独立的部分功能,实现通过部署新的服务方式进行系统的功能扩展,同时在系统的压力过大时,可以更精确地扩展需要增加的服务,避免其它服务占用不必要的系统资源。

一次业务服务的调用过程,可能会经过多个应用系统,而原有单个应用系统在运行时,不同应用模块间是通过数据库保证事务的一致性,即同时修改成功,一旦失败后会回滚全部应用操作的数据。然而,采用微服务的架构方式,无法再依赖数据库实现事务的一致性,存在各个应用系统间的调用问题。

在微服务架构下,应用系统通过服务接口调用的方式访问其他应用。具体地说,在服务调用的方式下,从A应用发起一次业务请求,可能需要调用B应用、C应用等多个应用的服务,为了保证事务的一致性,如果调用C应用失败,B应用系统的数据无法回滚而产生错误,这时可以通过A应用的业务逻辑在此调用B应用的方向服务,但是,会带来两个问题:一方面,导致业务逻辑的复杂度高,容易出现错误;另一方面,如果A应用、B应用或者C应用出现宕机时,可能导致数据无法回滚,最终无法保证数据的一致性。

在微服务架构下,各应用系统间的业务相对独立,即业务的数据也相 对独立,因此,不需要保证数据的实时一致性,只要保证数据的最终一致性即可,具体地说,当A系统调用B系统服务时,可以先完成A系统的数据持久化,B系统可以异步修改自己的数据,如果出现错误时,根据错误产生的原因重新执行B系统业务动作,或者调用A系统的反向操作,回退A系统的数据,实现A系统、B系统间的数据的最终一致性,同时不会影响A系统的执行速度。



技术实现要素:

本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。

为此,本发明的一个目的在于提出了一种用于发送端的支持微服务架构事务最终一致性的方法。

本发明的另一个目的在于提出了一种用于消息队列服务的支持微服务架构事务最终一致性的方法。

本发明的又一个目的在于提出了一种用于接收端的支持微服务架构事务最终一致性的方法。

本发明的又一个目的在于提出了一种用于发送端的支持微服务架构事务最终一致性的装置。

本发明的又一个目的在于提出了一种用于消息队列服务的支持微服务架构事务最终一致性的装置。

本发明的又一个目的在于提出了一种用于接收端的支持微服务架构事务最终一致性的装置。

本发明的再一个目的在于提出了一种支持微服务架构事务最终一致性的系统。

有鉴于此,本发明提出了一种支持微服务架构事务最终一致性的方法,用于发送端,发送端通过消息队列服务与接收端进行交互,包括:步骤102,发起服务调用,记录日志,并实时存储日志数据至日志数据库;步骤104,当日志写入动作时,定时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,发送调用请求,判断调用请求是否成功发送;在调用请求成功发送时,进行步骤106,以调用消息队列服务;步骤106,接 收回执消息,根据回执消息查询日志记录,根据日志状态判断调用处理是否完成,若调用处理完成,进行步骤108;以及若调用为处理中,进行步骤110;步骤108,不作处理;步骤110,调用返回结果,并将返回结果记录到日志中,实时存储日志数据至日志数据库,根据返回结果的状态调用相应业务的接口,返回步骤102。

本发明提供的用于发送端的支持微服务架构事务最终一致性的方法,通过发起服务调用,记录日志,并实时存储日志数据至日志数据库,当日志写入动作时,定时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,发送调用请求,判断调用请求是否成功发送,在调用请求成功发送时,以调用消息队列服务,通过日志以及消息队列对服务进行异步数据调用,保证服务调用的可靠性。

进一步地,通过接收回执消息,根据回执消息查询日志记录,进而根据日志状态确定当前调用处理的情况,保证调用服务失败后,发起方业务数据的回滚,保证了调用结果处理的可靠性。若日志状态表明调用处理完成,不作处理,若日志状态表明调用仍在处理中,调用返回结果,并将返回结果记录到日志中,实时存储日志数据至日志数据库,根据返回结果的状态调用相应业务的接口,进行后续处理,继续发起服务调用。

根据本发明上述的支持微服务架构事务最终一致性的方法,还可以具有如下附加的技术特征:

在上述技术方案中,优选地,还包括:步骤112,在调用请求未成功发送时,返回步骤102。

在该技术方案中,在调用请求未成功发送时,通过重新发起服务调用,以支持发生错误时的重新处理,再通过记录日志,并实时存储日志数据至日志数据库,并等待重新发送调用请求,以调用消息队列服务,使得服务调用更加及时、有效,完善了服务调用机制,保证业务调用一定被执行,进一步地保证服务调用的可靠性。

在上述技术方案中,优选地,步骤102,具体包括:业务系统服务的业务代码调用远程服务接口时,拦截调用远程服务接口;生成全局唯一的事务ID,并记录事务ID;实时存储日志数据至日志数据库,并记录日志的调用 状态为未调用。

在该技术方案中,业务系统服务的业务代码调用远程服务接口时,通过拦截调用远程服务接口,生成全局唯一的事务ID,并记录事务ID,保证不同的应用系统生成不同的ID,以及相同的应用系统在每次服务调用时生成的ID不重复。进一步地,通过实时存储日志数据至日志数据库,并记录日志的调用状态为未调用,实现通过事务ID查询日志记录,就可以查询到调用状态为未调用的日志,查询速度快,进而可以快速判断日志状态,使得回执处理更加及时、有效,完善了服务调用机制,进一步地保证服务调用的可靠性。

在上述技术方案中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态。

在该技术方案中,日志数据包括但并不局限于以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态,通过各种不同的日志数据,实现通过不同的日志数据查询日志记录,查询速度快,进而可以快速根据日志状态判断调用处理是否完成,使得回执处理更加及时、有效,完善了服务调用机制,保证调用服务失败后,发起方业务数据的回滚,进一步地保证服务调用的可靠性。进一步地,可以通过事务ID直接查询日志的调用状态,当然也可以通过调用参数、环境参数、调用时间、调用状态,详细了解日志的相关调用信息,实现及时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,进而调用消息队列服务。进一步地,方便查询日志记录,使得回执处理更加及时、有效,完善了服务调用机制,同时进一步地保证服务调用的可靠性。

本发明还提出一种支持微服务架构事务最终一致性的方法,用于消息队列服务,发送端通过消息队列服务与接收端进行交互,包括:步骤202,接收发送端传递的消息,调用消息队列,将消息放入执行队列中的实时队列;步骤204,管理消息队列,以及监听到执行队列收到消息后,发送所述消息;步骤206,接收所述消息,根据消息查询日志记录,判断消息日志状态;若消息日志状态为处理中或日志不存在,进行步骤208;若消息日志状态为成功或者失败,进行步骤210;步骤208,根据消息调用业务系统服务,判断业务系统服 务是否调用成功及调用失败原因类型;若业务系统服务调用成功或者业务原因调用失败,进行步骤210;若业务系统服务非业务原因调用失败,进行步骤226;步骤210,通知回执队列,并将返回结果放入回执队列的实时队列中;

步骤212,监听到回执队列收到包含返回结果的消息后,发送回执消息;步骤214,接收回执消息,发送给发送端,并返回处理结果;步骤216,根据处理结果,判断回执队列中的消息是否发送成功;若发送失败,进行步骤218;若发送成功,进行步骤224;步骤218,计算下级延时队列,并判断回执队列是否存在下级延时队列;若回执队列存在下级延时队列,进行步骤220;若回执队列不存在下级延时队列,进行步骤222;步骤220,将消息放入下级延时队列,并记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库;步骤222,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库;步骤224,记录消息日志状态为结果发送成功,并实时存储日志数据至日志数据库;

步骤226,根据当前队列计算下级延时队列,判断执行队列是否存在下级延时队列,若执行队列存在下级延时队列,进行步骤228;若执行队列不存在下级延时队列,返回步骤210;步骤228,将消息放入下级执行队列中的延时队列,返回步骤206,同时进行步骤230;步骤230,记录消息日志状态为处理中,并实时存储日志数据至日志数据库。

本发明提供的用于消息队列服务的支持微服务架构事务最终一致性的方法,通过接收发送端传递的消息,调用消息队列,将消息放入执行队列中的实时队列中,在监听到执行队列收到消息后发送消息,接收消息,根据消息查询日志记录,判断消息日志状态,根据不同的消息日志状态,进行不同的处理,避免因为消息重复发送导致业务系统处理错误,实现有效地管理各应用系统之间的消息,通过记录调用结果,以及调用服务失败重试,将处理结果及时通知发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效。进一步地,根据处理结果记录日志,并实时存储日志数据至日志数据库,尤其地,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续收到重复消息时,判断业务调用是否已产生结果,避免重复调用。

具体地说,若消息日志状态为处理中或日志不存在,根据消息调用业 务系统服务,判断业务系统服务是否调用成功及调用失败原因类型,若业务系统服务调用成功或者业务原因调用失败,通知回执队列,并将返回结果放入回执队列的实时队列中,监听到回执队列收到包含返回结果的消息后,发送回执消息,接收回执消息,发送给发送端,并返回处理结果,通过将回执消息及时发送给发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效。

进一步地,若业务系统服务非业务原因调用失败,根据当前队列计算下级延时队列,判断执行队列是否存在下级延时队列,若执行队列存在下级延时队列,将消息放入下级执行队列中的延时队列,等待进行继续处理,同时记录消息日志状态为处理中,并实时存储日志数据至日志数据库,保证消息队列服务调用的可靠性。

进一步地,根据处理结果,判断回执队列中的消息是否发送成功;若发送失败,计算下级延时队列,并判断回执队列是否存在下级延时队列,若回执队列存在下级延时队列,将消息放入下级延时队列,等待进行继续处理,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,通过调用服务失败重试,将处理结果及时通知发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效,保证消息队列服务调用的可靠性。

进一步地,若回执队列不存在下级延时队列,直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续运维人员检查日志进行处理。

进一步地,若发送成功,记录消息日志状态为结果发送成功,并实时存储日志数据至日志数据库,保证消息队列服务调用的可靠性。

进一步地,若执行队列不存在下级延时队列,重新通知回执队列,并将返回结果放入回执队列的实时队列中,继续处理,以及直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续运维人员检查日志进行处理。

在上述技术方案中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态。

在该技术方案中,日志数据包括但并不局限于以下至少之一或其组 合:事务ID、调用参数、环境参数、调用时间、调用状态,通过记录的各种不同的日志数据,可以确定消息日志状态,实现避免因为消息重复发送导致业务系统处理错误,完善了消息队列服务调用机制,进一步地保证消息队列服务调用的可靠性。进一步地,可以通过事务ID直接查询日志记录,判断消息日志状态,当然也可以通过调用参数、环境参数、调用时间、调用状态,详细了解消息日志的相关调用信息,以调用消息队列服务,保证消息队列服务调用的可靠性。

本发明还提出一种支持微服务架构事务最终一致性的方法,用于接收端,发送端通过消息队列服务与接收端进行交互,包括:步骤302,拦截服务调用,查询日志记录;步骤304,判断是否存在日志记录;若不存在日志记录,进行步骤306;若存在日志记录,进行步骤308;步骤306,调用业务系统服务,记录日志,返回调用结果,并实时存储日志数据至日志数据库;以及步骤308,根据日志记录,返回调用结果。

本发明提供的用于接收端的支持微服务架构事务最终一致性的方法,通过拦截服务调用,查询日志记录,根据是否存在日志记录,进行不同的处理,若存在日志记录,根据日志记录,直接返回调用结果。进一步地,若不存在日志记录,通过调用业务系统服务,记录日志,返回调用结果,并实时存储日志数据至日志数据库,最后根据日志记录,返回调用结果,保证调用服务不会被重复调用。

在上述技术方案中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用结果。

在该技术方案中,日志数据包括但并不局限于以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用结果,实现通过不同的日志数据查询日志记录,查询速度快,进而可以快速判断是否存在日志记录,在不存在日志记录时,通过调用业务系统服务,记录日志,并实时存储日志数据至日志数据库,保证调用服务不会被重复调用。进一步地,可以通过事务ID直接查询日志的调用状态,当然也可以通过调用参数、环境参数、调用时间、调用结果,详细了解日志的相关调用信息。

本发明还提出了一种支持微服务架构事务最终一致性的装置,用于发 送端,发送端通过消息队列服务与接收端进行交互,包括:日志记录装置,用于发起服务调用,记录日志,并实时存储日志数据至日志数据库;定时发送装置,用于当日志写入动作时,定时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,发送调用请求,判断调用请求是否成功发送;在调用请求成功发送时,以调用消息队列服务;回执处理装置,用于接收回执消息,根据回执消息查询日志记录,根据日志状态判断调用处理是否完成,若调用为处理完成,不作处理;以及还用于若调用为处理中,调用返回结果,并将返回结果记录到日志中,实时存储日志数据至日志数据库,根据返回结果的状态调用相应业务的接口,继续发起服务调用。

本发明提供的用于发送端的支持微服务架构事务最终一致性的装置,通过日志记录装置,发起服务调用,记录日志,并实时存储日志数据至日志数据库,通过定时发送装置,当日志写入动作时,定时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,发送调用请求,以调用消息队列服务,通过日志以及消息队列对服务进行异步数据调用,保证服务调用的可靠性。

进一步地,通过回执处理装置,接收回执消息,根据回执消息查询日志记录,进而根据日志状态确定当前调用处理的情况,保证调用服务失败后,发起方业务数据的回滚,保证了调用结果处理的可靠性。若日志状态表明调用处理完成,不作处理,若日志状态表明调用仍在处理中,调用返回结果,并将返回结果记录到日志中,实时存储日志数据至日志数据库,根据返回结果的状态调用相应业务的接口,进行后续处理,继续发起服务调用。

根据本发明上述的支持微服务架构事务最终一致性的装置,还可以具有如下附加的技术特征:

在上述技术方案中,优选地,日志记录装置,还用于在调用请求未成功发送时,重新发起服务调用。

在该技术方案中,在调用请求未成功发送时,通过日志记录装置,重新发起服务调用,以支持发生错误时的重新处理,再通过记录日志,并实时存储日志数据至日志数据库,并等待重新发送调用请求,以调用消息队 列服务,使得服务调用更加及时、有效,完善了服务调用机制,保证业务调用一定被执行,进一步地保证服务调用的可靠性。

在上述技术方案中,优选地,日志记录装置,具体用于:业务系统服务的业务代码调用远程服务接口时,拦截调用远程服务接口;生成全局唯一的事务ID,并记录所述事务ID;实时存储日志数据,并记录日志的调用状态为未调用。

在该技术方案中,业务系统服务的业务代码调用远程服务接口时,通过日志记录装置,拦截调用远程服务接口,生成全局唯一的事务ID,并记录事务ID,保证不同的应用系统生成不同的ID,以及相同的应用系统在每次服务调用时生成的ID不重复。进一步地,通过实时存储日志数据至日志数据库,并记录日志的调用状态为未调用,实现通过事务ID查询日志记录,就可以查询到调用状态为未调用的日志,查询速度快,进而可以快速判断日志状态,使得回执处理更加及时、有效,完善了服务调用机制,进一步地保证服务调用的可靠性。

在上述技术方案中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态。

在该技术方案中,日志数据包括但并不局限于以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态,通过各种不同的日志数据,实现通过不同的日志数据查询日志记录,查询速度快,进而可以快速根据日志状态判断调用处理是否完成,使得回执处理更加及时、有效,完善了服务调用机制,保证调用服务失败后,发起方业务数据的回滚进一步地保证服务调用的可靠性。进一步地,可以通过事务ID直接查询日志的调用状态,当然也可以通过调用参数、环境参数、调用时间、调用状态,详细了解日志的相关调用信息,实现及时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,进而调用消息队列服务,保证服务调用的可靠性。进一步地,方便查询日志记录,使得回执处理更加及时、有效,完善了服务调用机制,保证调用服务失败后,发起方业务数据的回滚,同时进一步地保证服务调用的可靠性。

本发明还提出一种支持微服务架构事务最终一致性的装置,用于消息队 列服务,发送端通过消息队列服务与接收端进行交互,包括:消息接收装置,用于接收发送端传递的消息,调用消息队列,将所述消息放入执行队列中的实时队列;消息队列管理装置,用于管理消息队列,以及监听到执行队列收到所述消息后,发送所述消息;服务调用装置,用于接收所述消息,根据所述消息查询日志记录;重复检测装置,用于在调用业务系统服务前,判断日志状态;服务调用装置,还用于若日志状态为处理中或日志不存在,根据所述消息调用业务系统服务,判断业务系统服务是否调用成功及调用失败原因类型;若日志状态为成功或者失败,或者业务系统服务调用成功或者业务原因调用失败,通知回执队列,并将返回结果放入回执队列的实时队列中;

消息队列管理装置,还用于监听到回执队列收到包含返回结果的消息后,发送所述消息;回执发送装置,接收所述消息,发送给发送端,并返回处理结果;

服务调用装置,还用于根据处理结果,判断回执队列中的消息是否发送成功;若发送失败,计算下级延时队列,并判断回执队列是否存在下级延时队列;若回执队列存在下级延时队列,将消息放入下级延时队列,同时消息日志记录装置,用于记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库;若回执队列不存在下级延时队列,所述消息日志记录装置,用于直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库;

还用于若回执队列中的消息发送成功,记录消息日志状态为结果发送成功,并实时存储日志数据至日志数据库;

服务调用装置,还用于若业务系统服务非业务原因调用失败,根据当前队列计算下级延时队列,判断执行队列是否存在下级延时队列,存在下级延时队列,将消息放入下级执行队列中的延时队列,回执发送装置,重新接收消息;以及若执行队列不存在下级延时队列时,重新通知回执队列,并将返回结果放入回执队列的实时队列中,以及消息日志记录装置,还用于记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库。

本发明提供的用于消息队列服务的支持微服务架构事务最终一致性的装置,通过消息接收装置,接收发送端传递的消息,调用消息队列,将消息放入执行队列中的实时队列中,通过消息队列管理装置,在监听到执行队列收到消 息后发送消息,通过服务调用装置,接收消息,根据消息查询日志记录,通过重复检测装置,判断消息日志状态,根据不同的消息日志状态,进行不同的处理,避免因为消息重复发送导致业务系统处理错误,实现有效地管理各应用系统之间的消息,通过记录调用结果,以及调用服务失败重试,将处理结果及时通知发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效。进一步地,根据处理结果记录日志,并实时存储日志数据至日志数据库,尤其地,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续收到重复消息时,判断业务调用是否已产生结果,避免重复调用。

具体地说,若消息日志状态为处理中或日志不存在,通过服务调用装置,根据消息调用业务系统服务,判断业务系统服务是否调用成功及调用失败原因类型,若业务系统服务调用成功或者业务原因调用失败,通知回执队列,并将返回结果放入回执队列的实时队列中,通过消息队列管理装置,监听到回执队列收到包含返回结果的消息后,发送回执消息,通过回执发送装置,接收回执消息,发送给发送端,并返回处理结果,通过将回执消息及时发送给发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效。

进一步地,若业务系统服务非业务原因调用失败,通过服务调用装置,根据当前队列计算下级延时队列,判断执行队列是否存在下级延时队列,若存在下级延时队列,将消息放入下级执行队列中的延时队列,通过回执发送装置,重新接收消息等待进行继续处理,同时通过消息日志记录装置,记录消息日志状态为处理中,并实时存储日志数据至日志数据库,保证消息队列服务调用的可靠性。

进一步地,通过服务调用装置,根据处理结果,判断回执队列中的消息是否发送成功;若发送失败,计算下级延时队列,并判断回执队列是否存在下级延时队列,若回执队列存在下级延时队列,将消息放入下级延时队列,等待进行继续处理,通过消息日志记录装置,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,通过调用服务失败重试,将处理结果及时通知发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效,保证消息队列服务调用的可靠性。

进一步地,若回执队列不存在下级延时队列,通过消息日志记录装置, 直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续运维人员检查日志进行处理。

进一步地,若发送成功,通过消息日志记录装置,记录消息日志状态为结果发送成功,并实时存储日志数据至日志数据库,保证消息队列服务调用的可靠性。

进一步地,若执行队列不存在下级延时队列,再通过服务调用装置,重新通知回执队列,并将返回结果放入回执队列的实时队列中,继续处理,以及通过消息日志记录装置,直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续运维人员检查日志进行处理。

在上述技术方案中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态。

在该技术方案中,日志数据包括但并不局限于以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态,通过记录的各种不同的日志数据,可以确定消息日志状态,实现避免因为消息重复发送导致业务系统处理错误,完善了消息队列服务调用机制,进一步地保证消息队列服务调用的可靠性。进一步地,可以通过事务ID直接查询日志记录,判断消息日志状态,当然也可以通过调用参数、环境参数、调用时间、调用状态,详细了解消息日志的相关调用信息,以调用消息队列服务,保证消息队列服务调用的可靠性。

本发明还提出一种支持微服务架构事务最终一致性的装置,用于接收端,发送端通过消息队列服务与接收端进行交互,包括:调用处理装置,用于拦截服务调用,查询日志记录,并判断是否存在日志记录;调用日志记录装置,用于若不存在日志记录,调用业务系统服务,记录日志,返回调用结果,并实时存储日志数据至日志数据库;还用于若存在日志记录,根据日志记录,返回调用结果。

本发明提供的用于接收端的支持微服务架构事务最终一致性的装置,通过调用处理装置,拦截服务调用,查询日志记录,根据是否存在日志记录,进行不同的处理,若存在日志记录,通过调用日志记录装置,根据日志记录,直接返回调用结果。进一步地,若不存在日志记录,通过调用日志记录装置,调用 业务系统服务,记录日志,返回调用结果,并实时存储日志数据至日志数据库,最后根据日志记录,返回调用结果,保证调用服务不会被重复调用。

在上述技术方案中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用结果。

在该技术方案中,日志数据包括但并不局限于以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用结果,实现通过不同的日志数据查询日志记录,查询速度快,进而可以快速判断是否存在日志记录,在不存在日志记录时,通过调用业务系统服务,记录日志,并实时存储日志数据至日志数据库,保证调用服务不会被重复调用。进一步地,可以通过事务ID直接查询日志的调用状态,当然也可以通过调用参数、环境参数、调用时间、调用结果,详细了解日志的相关调用信息。

本发明还提出一种支持微服务架构事务最终一致性的系统,包括上述任一技术方案所述的用于发送端的支持微服务架构事务最终一致性的装置;上述任一技术方案所述的用于消息队列服务的支持微服务架构事务最终一致性的装置;以及上述任一技术方案所述的用于接收端的支持微服务架构事务最终一致性的装置。

本发明提供的支持微服务架构事务最终一致性的系统,通过采用用于发送端的支持微服务架构事务最终一致性的装置,用于消息队列服务的支持微服务架构事务最终一致性的装置,以及用于接收端的支持微服务架构事务最终一致性的装置,实现通过日志及消息队列服务对服务进行异步调用,保证服务重复调用的幂等性,实现服务间数据的最终一致性,保证服务调用的可靠性。

本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1a是本发明的一个实施例的用于发送端的支持微服务架构事务最终一致性的方法的流程示意图;

图1b是本发明的一个实施例的用于发送端的支持微服务架构事务最终一致性的方法的发起服务调用的流程示意图;

图1c是本发明的一个实施例的用于发送端的支持微服务架构事务最终一致性的方法的调用消息发送的流程示意图;

图1d是本发明的一个实施例的用于发送端的支持微服务架构事务最终一致性的方法的回执处理的流程示意图;

图2是本发明的一个实施例的用于消息队列服务的支持微服务架构事务最终一致性的方法的流程示意图;

图3是本发明的一个实施例的用于接收端的支持微服务架构事务最终一致性的方法的流程示意图;

图4是本发明的一个实施例的用于接收端的支持微服务架构事务最终一致性的装置的示意图;

图5是本发明的一个实施例的用于消息队列服务的支持微服务架构事务最终一致性的装置的示意图;

图6是本发明的一个实施例的用于接收端的支持微服务架构事务最终一致性的装置的示意图;

图7是本发明的一个实施例的支持微服务架构事务最终一致性的系统的示意图;

图8是本发明的另一个实施例的支持微服务架构事务最终一致性的系统的示意图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。

如图1a所示,本发明的一个实施例的用于发送端的支持微服务架构事 务最终一致性的方法的流程示意图:

步骤102,发起服务调用,记录日志,并实时存储日志数据至日志数据库;

步骤104,当日志写入动作时,定时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,发送调用请求,以调用消息队列服务;

步骤106,接收回执消息,根据回执消息查询日志记录,根据日志状态判断调用处理是否完成,若调用处理完成,进行步骤108;以及若调用为处理中,进行步骤110;

步骤108,不作处理;

步骤110,调用返回结果,并将返回结果记录到日志中,实时存储日志数据至日志数据库,根据返回结果的状态调用相应业务的接口,返回步骤102。

本发明提供的用于发送端的支持微服务架构事务最终一致性的方法,通过发起服务调用,记录日志,并实时存储日志数据至日志数据库,当日志写入动作时,定时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,发送调用请求,以调用消息队列服务,通过日志以及消息队列对服务进行异步数据调用,保证服务调用的可靠性。

进一步地,通过接收回执消息,根据回执消息查询日志记录,进而根据日志状态确定当前调用处理的情况,保证了调用结果处理的可靠性。若日志状态表明调用处理完成,不作处理,若日志状态表明调用仍在处理中,调用返回结果,并将返回结果记录到日志中,实时存储日志数据至日志数据库,根据返回结果的状态调用相应业务的接口,进行后续处理,继续发起服务调用。

具体实施例中,当日志写入动作时,通过异步任务触发扫描任务,同时定时发起扫描任务。进一步地,通过扫描任务查询日志数据库,查询状态为“未调用”以及“处理中”的日志,根据上述查询到的日志调用消息队列服务。

如图1a所示,本发明的另一个实施例的用于发送端的支持微服务架构 事务最终一致性的方法的流程示意图:

步骤102,发起服务调用,记录日志,并实时存储日志数据至日志数据库;

步骤104,当日志写入动作时,定时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,发送调用请求,以调用消息队列服务;

步骤106,接收回执消息,根据回执消息查询日志记录,根据日志状态判断调用处理是否完成,若调用处理完成,进行步骤108;以及若调用为处理中,进行步骤110;

步骤108,不作处理;

步骤110,调用返回结果,并将返回结果记录到日志中,实时存储日志数据至日志数据库,根据返回结果的状态调用相应业务的接口,返回步骤102;以及

步骤112,在调用请求未成功发送时,返回步骤102。

在该实施例中,在调用请求未成功发送时,通过重新发起服务调用,以支持发生错误时的重新处理,再通过记录日志,并实时存储日志数据至日志数据库,并等待重新发送调用请求,以调用消息队列服务,使得服务调用更加及时、有效,完善了服务调用机制,保证业务调用一定被执行,进一步地保证服务调用的可靠性。

具体实施例中,如果服务长时间未返回结果,可以手动或定时重复发起服务调用。

在本发明的一个实施例中,优选地,步骤102,具体包括:业务系统服务的业务代码调用远程服务接口时,拦截调用远程服务接口;生成全局唯一的事务ID,并记录事务ID;实时存储日志数据至日志数据库,并记录日志的调用状态为未调用。

在该实施例中,业务系统服务的业务代码调用远程服务接口时,通过拦截调用远程服务接口,生成全局唯一的事务ID,并记录事务ID,保证不同的应用系统生成不同的ID,以及相同的应用系统在每次服务调用时生成的ID不重复。进一步地,通过实时存储日志数据至日志数据库,并记录 日志的调用状态为未调用,实现通过事务ID查询日志记录,就可以查询到调用状态为未调用的日志,查询速度快,进而可以快速判断日志状态,使得回执处理更加及时、有效,完善了服务调用机制,进一步地保证服务调用的可靠性。

在本发明的一个实施例中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态。

在该实施例中,日志数据包括但并不局限于以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态,通过各种不同的日志数据,实现通过不同的日志数据查询日志记录,查询速度快,进而可以快速根据日志状态判断调用处理是否完成,使得回执处理更加及时、有效,完善了服务调用机制,保证调用服务失败后,发起方业务数据的回滚,进一步地保证服务调用的可靠性。进一步地,可以通过事务ID直接查询日志的调用状态,当然也可以通过调用参数、环境参数、调用时间、调用状态,详细了解日志的相关调用信息,实现及时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,进而调用消息队列服务。进一步地,方便查询日志记录,使得回执处理更加及时、有效,完善了服务调用机制,同时进一步地保证服务调用的可靠性。

如图1b至图1d所示,本发明的再一个实施例的用于发送端的支持微服务架构事务最终一致性的方法的流程示意图:

其中,如图1b所示,发起服务调用的流程包括:

步骤114,业务系统服务的业务代码调用远程服务接口;拦截调用远程服务接口;生成全局唯一的事务ID;以及记录日志,并记录日志的调用状态为未调用;

步骤116,实时存储日志数据至日志数据库;

步骤118,定时扫描日志数据;

步骤120,调用消息队列服务;

如图1c所示,调用消息发送流程包括:

步骤122,当日志写入动作时,通过异步任务触发扫描任务,或者定时发起扫描任务;

步骤124,扫描任务查询日志数据库,查询状态为“未调用”的日志;以及扫描任务查询日志数据库,查询状态为“处理中”的日志;

步骤126,根据查询到的日志调用消息队列服务;

如图1d所示,回执处理的流程包括:

步骤128,接收回执消息;

步骤130,根据回执消息查询日志记录;

步骤132,判断日志状态是否处理完成;若日志状态为处理完成,进行步骤140;若日志状态为处理中,进行步骤134;

步骤134,调用返回结果,并将返回结果记录到日志;

步骤136,实时存储日志数据至日志数据库;

步骤138,根据返回结果的状态调用相应业务的接口;

步骤140,不作处理。

在该实施例中,通过发起服务调用,记录日志,并实时存储日志数据至日志数据库,当日志写入动作时,定时检查日志数据库,根据查询到的日志发送调用请求,以调用消息队列服务,通过日志以及消息队列对服务进行异步数据调用,保证服务调用的可靠性。

进一步地,通过接收回执消息,根据回执消息查询日志记录,进而根据日志状态确定当前调用处理的情况,保证调用服务失败后,发起方业务数据的回滚,保证了调用结果处理的可靠性。若日志状态表明调用处理完成,不作处理,若日志状态表明调用仍在处理中,调用返回结果,并将返回结果记录到日志中,实时存储日志数据至日志数据库,根据返回结果的状态调用相应业务的接口,进行后续处理,继续发起服务调用。

具体实施例中,根据返回结果的成功或失败状态,调用相应业务的接口进行后续处理。进一步地,如果服务长时间未返回结果,可以手动或定时重复发起服务调用。

优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态。

如图2所示,本发明的一个实施例的用于消息队列服务的支持微服务架构事务最终一致性的方法的流程示意图:

步骤232,接收发送端传递的消息;

步骤234,调用消息队列;

步骤236,将消息放入执行队列中的实时队列,管理消息队列,以及监听到执行队列收到消息后,发送消息;

步骤238,接收消息;

步骤240,查询消息日志,同时进行步骤268和步骤242;

步骤242,判断消息日志状态;判断消息日志状态;若消息日志状态为处理中或日志不存在,进行步骤244;若消息日志状态为成功或者失败,进行步骤246;

步骤244,调用业务系统服务,进行步骤270;

步骤246,通知回执队列;

步骤248,将返回结果放入回执队列的实时队列中;

步骤250,接收回执消息;

步骤252,发送给发送端,并返回处理结果;

步骤254,根据处理结果,判断回执队列中的消息是否发送成功;若发送失败,进行步骤256;若发送成功,进行步骤262;

步骤256,计算下级延时队列;

步骤258,判断回执队列是否存在下级延时队列;若回执队列存在下级延时队列,进行步骤260;若回执队列不存在下级延时队列,进行步骤266;

步骤260,将消息放入下级延时队列,同时进行步骤264;

步骤262,记录消息日志状态为结果发送成功,并进行步骤268;

步骤264,记录消息日志状态为回执发送失败,并进行步骤268;

步骤266,记录消息日志状态为回执发送失败,并进行步骤268;

步骤268,实时存储日志数据至日志数据库;

步骤270,判断业务系统服务是否调用成功及调用失败原因类型;若业务系统服务调用成功或者业务原因调用失败,进行步骤246;若业务系统服务非业务原因调用失败,进行步骤272;

步骤272,根据当前队列计算下级延时队列;

步骤274,判断执行队列是否存在下级延时队列,若执行队列存在下级延 时队列,进行步骤276;若执行队列不存在下级延时队列,返回步骤246;

步骤276,将消息放入下级执行队列中的延时队列,返回步骤236,同时进行步骤278;

步骤278,记录消息日志状态为处理中,并进行步骤268;

其中,如图2所示,步骤280,根据处理结果记录日志,步骤280包括:步骤262、步骤264、步骤266以及步骤278。

本发明提供的用于消息队列服务的支持微服务架构事务最终一致性的方法,通过接收发送端传递的消息,调用消息队列,将消息放入执行队列中的实时队列中,在监听到执行队列收到消息后发送消息,接收消息,根据消息查询日志记录,判断消息日志状态,根据不同的消息日志状态,进行不同的处理,避免因为消息重复发送导致业务系统处理错误,实现有效地管理各应用系统之间的消息,通过记录调用结果,以及调用服务失败重试,将处理结果及时通知发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效。进一步地,根据处理结果记录日志,并实时存储日志数据至日志数据库,尤其地,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续收到重复消息时,判断业务调用是否已产生结果,避免重复调用。

具体地说,若消息日志状态为处理中或日志不存在,根据消息调用业务系统服务,判断业务系统服务是否调用成功及调用失败原因类型,若业务系统服务调用成功或者业务原因调用失败,通知回执队列,并将返回结果放入回执队列的实时队列中,监听到回执队列收到包含返回结果的消息后,发送回执消息,接收回执消息,发送给发送端,并返回处理结果,通过将回执消息及时发送给发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效。

进一步地,若业务系统服务非业务原因调用失败,根据当前队列计算下级延时队列,判断执行队列是否存在下级延时队列,若执行队列存在下级延时队列,将消息放入下级执行队列中的延时队列,等待进行继续处理,同时记录消息日志状态为处理中,并实时存储日志数据至日志数据库,保证消息队列服务调用的可靠性。

进一步地,根据处理结果,判断回执队列中的消息是否发送成功;若发 送失败,计算下级延时队列,并判断是否存在下级延时队列,若存在下级延时队列,将消息放入下级延时队列,等待进行继续处理,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,通过调用服务失败重试,将处理结果及时通知发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效,保证消息队列服务调用的可靠性。

进一步地,若回执队列不存在下级延时队列,直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续运维人员检查日志进行处理。

进一步地,若发送成功,记录消息日志状态为结果发送成功,并实时存储日志数据至日志数据库,保证消息队列服务调用的可靠性。

进一步地,若执行队列不存在下级延时队列,重新通知回执队列,并将返回结果放入回执队列的实时队列中,继续处理,以及直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续运维人员检查日志进行处理。

在本发明的一个实施例中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态。

在该实施例中,日志数据包括但并不局限于以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态,通过记录的各种不同的日志数据,可以确定消息日志状态,实现避免因为消息重复发送导致业务系统处理错误,完善了消息队列服务调用机制,进一步地保证消息队列服务调用的可靠性。进一步地,可以通过事务ID直接查询日志记录,判断消息日志状态,当然也可以通过调用参数、环境参数、调用时间、调用状态,详细了解消息日志的相关调用信息,以调用消息队列服务,保证消息队列服务调用的可靠性。

具体实施例中,可以通过事务ID查询消息日志。

如图3所示,本发明的一个实施例的用于接收端的支持微服务架构事务最终一致性的方法的流程示意图:

步骤310,拦截服务调用;

步骤312,查询日志记录,同时进行步骤314和步骤320;

步骤314,判断是否存在日志记录;若不存在日志记录,进行步骤316;若存在日志记录,进行步骤318;

步骤316,调用业务系统服务,记录日志,返回调用结果,同时进行步骤320;

步骤318,根据日志记录,返回调用结果;

步骤320,实时存储日志数据至日志数据库。

本发明提供的用于接收端的支持微服务架构事务最终一致性的方法,通过拦截服务调用,查询日志记录,根据是否存在日志记录,进行不同的处理,若存在日志记录,根据日志记录,直接返回调用结果。进一步地,若不存在日志记录,通过调用业务系统服务,记录日志,返回调用结果,并实时存储日志数据至日志数据库,最后根据日志记录,返回调用结果,保证重复调用服务不会被重复调用。

在本发明的一个实施例中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用结果。

在该实施例中,日志数据包括但并不局限于以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用结果,实现通过不同的日志数据查询日志记录,查询速度快,进而可以快速判断是否存在日志记录,在不存在日志记录时,通过调用业务系统服务,记录日志,并实时存储日志数据至日志数据库,保证调用服务不会被重复调用。进一步地,可以通过事务ID直接查询日志的调用状态,当然也可以通过调用参数、环境参数、调用时间、调用结果,详细了解日志的相关调用信息。

具体实施例中,可以通过事务ID查询消息日志。

如图4所示,本发明的一个实施例的用于接收端的支持微服务架构事务最终一致性的装置400的示意图:

日志记录装置402,用于发起服务调用,记录日志,并实时存储日志数据至日志数据库;

定时发送装置404,用于当日志写入动作时,定时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,发送调用请求,以调用消息队列服务;

回执处理装置406,用于接收回执消息,根据回执消息查询日志记录,根据日志状态判断调用处理是否完成,若调用为处理完成,不作处理;以及还用于若调用为处理中,调用返回结果,并将返回结果记录到日志中,实时存储日志数据至日志数据库,根据返回结果的状态调用相应业务的接口,继续发起服务调用。

本发明提供的用于发送端的支持微服务架构事务最终一致性的装置400,通过日志记录装置402,发起服务调用,记录日志,并实时存储日志数据至日志数据库,通过定时发送装置404,当日志写入动作时,定时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,发送调用请求,以调用消息队列服务,通过日志以及消息队列对服务进行异步数据调用,保证服务调用的可靠性。

进一步地,通过回执处理装置406,接收回执消息,根据回执消息查询日志记录,进而根据日志状态确定当前调用处理的情况,保证了调用结果处理的可靠性。若日志状态表明调用处理完成,不作处理,若日志状态表明调用仍在处理中,调用返回结果,并将返回结果记录到日志中,实时存储日志数据至日志数据库,根据返回结果的状态调用相应业务的接口,进行后续处理,继续发起服务调用。

具体实施例中,当日志写入动作时,通过异步任务触发发送装置的扫描任务,同时定时发送装置定时发起扫描任务。进一步地,通过扫描任务查询日志数据库,查询状态为“未调用”以及“处理中”的日志,根据上述查询到的日志调用消息队列服务。

在本发明的一个实施例中,优选地,日志记录装置,还用于在调用请求未成功发送时,重新发起服务调用。

在该实施例中,在调用请求未成功发送时,通过日志记录装置,重新发起服务调用,以支持发生错误时的重新处理,再通过记录日志,并实时存储日志数据至日志数据库,并等待重新发送调用请求,以调用消息队列服务,使得服务调用更加及时、有效,完善了服务调用机制,保证业务调用一定被执行,进一步地保证服务调用的可靠性。

具体实施例中,如果服务长时间未返回结果,可以手动或定时重复发 起服务调用。

在本发明的一个实施例中,优选地,日志记录装置,具体用于:业务系统服务的业务代码调用远程服务接口时,拦截调用远程服务接口;生成全局唯一的事务ID,并记录所述事务ID;实时存储日志数据,并记录日志的调用状态为未调用。

在该实施例中,业务系统服务的业务代码调用远程服务接口时,通过日志记录装置,拦截调用远程服务接口,生成全局唯一的事务ID,并记录事务ID,保证不同的应用系统生成不同的ID,以及相同的应用系统在每次服务调用时生成的ID不重复。进一步地,通过实时存储日志数据至日志数据库,并记录日志的调用状态为未调用,实现通过事务ID查询日志记录,就可以查询到调用状态为未调用的日志,查询速度快,进而可以快速判断日志状态,使得回执处理更加及时、有效,完善了服务调用机制,进一步地保证服务调用的可靠性。

在本发明的一个实施例中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态。

在该实施例中,日志数据包括但并不局限于以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态,通过各种不同的日志数据,实现通过不同的日志数据查询日志记录,查询速度快,进而可以快速根据日志状态判断调用处理是否完成,使得回执处理更加及时、有效,完善了服务调用机制,保证调用服务失败后,发起方业务数据的回滚,进一步地保证服务调用的可靠性。进一步地,可以通过事务ID直接查询日志的调用状态,当然也可以通过调用参数、环境参数、调用时间、调用状态,详细了解日志的相关调用信息,实现及时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,进而调用消息队列服务,保证服务调用的可靠性。进一步地,方便查询日志记录,使得回执处理更加及时、有效,完善了服务调用机制,保证调用服务失败后,发起方业务数据的回滚进一步地保证服务调用的可靠性。

如图5所示,本发明的一个实施例的用于消息队列服务的支持微服务架构事务最终一致性的装置500的示意图:

消息接收装置502,用于接收发送端传递的消息,调用消息队列,将所述消息放入执行队列中的实时队列;

消息队列管理装置504,用于管理消息队列,以及监听到执行队列收到所述消息后,发送所述消息;

服务调用装置506,用于接收所述消息,根据所述消息查询日志记录;

重复检测装置508,用于在调用业务系统服务前,判断日志状态;

服务调用装置506,还用于若日志状态为处理中或日志不存在,根据所述消息调用业务系统服务,判断业务系统服务是否调用成功及调用失败原因类型;若日志状态为成功或者失败,或者业务系统服务调用成功或者业务原因调用失败,通知回执队列,并将返回结果放入回执队列的实时队列中;

消息队列管理装置504,还用于监听到回执队列收到包含返回结果的消息后,发送所述消息;

回执发送装置510,接收所述消息,发送给发送端,并返回处理结果;

服务调用装置506,还用于根据处理结果,判断回执队列中的消息是否发送成功;若发送失败,计算下级延时队列,并判断回执队列是否存在下级延时队列;若回执队列存在下级延时队列,将消息放入下级延时队列,同时消息日志记录装置,用于记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库;若回执队列不存在下级延时队列,

所述消息日志记录装置512,用于直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库;

还用于若回执队列不存在下级延时队列,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库;还用于若回执队列中的消息发送成功,记录消息日志状态为结果发送成功,并实时存储日志数据至日志数据库;

服务调用装置506,还用于若业务系统服务非业务原因调用失败,根据当前队列计算下级延时队列,判断执行队列是否存在下级延时队列,存在下级延时队列,将消息放入下级执行队列中的延时队列,回执发送装置,重新接收消息;以及若执行队列不存在下级延时队列时,重新通知回执队列,并将返回结果放入回执队列的实时队列中,以及

消息日志记录装置512,还用于记录消息日志状态为回执发送失败,并实 时存储日志数据至日志数据库。

本发明提供的用于消息队列服务的支持微服务架构事务最终一致性的装置500,通过消息接收装置502,接收发送端传递的消息,调用消息队列,将消息放入执行队列中的实时队列中,通过消息队列管理装置504,在监听到执行队列收到消息后发送消息,通过服务调用装置506,接收消息,根据消息查询日志记录,通过重复检测装置508,判断消息日志状态,根据不同的消息日志状态,进行不同的处理,避免因为消息重复发送导致业务系统处理错误,实现有效地管理各应用系统之间的消息,通过记录调用结果,以及调用服务失败重试,将处理结果及时通知发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效。进一步地,根据处理结果记录日志,并实时存储日志数据至日志数据库,尤其地,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续收到重复消息时,判断业务调用是否已产生结果,避免重复调用。

具体地说,若消息日志状态为处理中或日志不存在,通过服务调用装置506,根据消息调用业务系统服务,判断业务系统服务是否调用成功及调用失败原因类型,若业务系统服务调用成功或者业务原因调用失败,通知回执队列,并将返回结果放入回执队列的实时队列中,通过消息队列管理装置504,监听到回执队列收到包含返回结果的消息后,发送回执消息,通过回执发送装置510,接收回执消息,发送给发送端,并返回处理结果,通过将回执消息及时发送给发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效。

进一步地,若业务系统服务非业务原因调用失败,通过服务调用装置506,根据当前队列计算下级延时队列,判断执行队列是否存在下级延时队列,若存在下级延时队列,将消息放入下级执行队列中的延时队列,通过回执发送装置510,重新接收消息等待进行继续处理,同时通过消息日志记录装置,记录消息日志状态为处理中,并实时存储日志数据至日志数据库,保证消息队列服务调用的可靠性。

进一步地,通过服务调用装置506,根据处理结果,判断回执队列中的消息是否发送成功;若发送失败,计算下级延时队列,并判断回执队列是否存 在下级延时队列,若回执队列存在下级延时队列,将消息放入下级延时队列,等待进行继续处理,通过消息日志记录装置512,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,通过调用服务失败重试,将处理结果及时通知发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效,保证消息队列服务调用的可靠性。

进一步地,若回执队列不存在下级延时队列,通过消息日志记录装置512,直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续运维人员检查日志进行处理。

进一步地,若发送成功,通过消息日志记录装置512,记录消息日志状态为结果发送成功,并实时存储日志数据至日志数据库,保证消息队列服务调用的可靠性。

进一步地,若执行队列不存在下级延时队列,再通过服务调用装置506,重新通知回执队列,并将返回结果放入回执队列的实时队列中,继续处理,以及通过消息日志记录装置512,直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续运维人员检查日志进行处理。

在本发明的一个实施例中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态。

在该实施例中,日志数据包括但并不局限于以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用状态,通过记录的各种不同的日志数据,可以确定消息日志状态,实现避免因为消息重复发送导致业务系统处理错误,完善了消息队列服务调用机制,进一步地保证消息队列服务调用的可靠性。进一步地,可以通过事务ID直接查询日志记录,判断消息日志状态,当然也可以通过调用参数、环境参数、调用时间、调用状态,详细了解消息日志的相关调用信息,以调用消息队列服务,保证消息队列服务调用的可靠性。

如图6所示,本发明的一个实施例的用于接收端的支持微服务架构事务最终一致性的装置600的示意图:

调用处理装置602,用于拦截服务调用,查询日志记录,并判断是否存在日志记录;

调用日志记录装置604,用于若不存在日志记录,调用业务系统服务,记录日志,返回调用结果,并实时存储日志数据至日志数据库;还用于若存在日志记录,根据日志记录,返回调用结果。

本发明提供的用于接收端的支持微服务架构事务最终一致性的装置600,通过调用处理装置602,拦截服务调用,查询日志记录,根据是否存在日志记录,进行不同的处理,若存在日志记录,通过调用日志记录装置604,根据日志记录,直接返回调用结果。进一步地,若不存在日志记录,通过调用日志记录装置604,调用业务系统服务,记录日志,返回调用结果,并实时存储日志数据至日志数据库,最后根据日志记录,返回调用结果,保证重复调用服务不会被重复调用。

在本发明的一个实施例中,优选地,日志数据包括以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用结果。

在该实施例中,日志数据包括但并不局限于以下至少之一或其组合:事务ID、调用参数、环境参数、调用时间、调用结果,实现通过不同的日志数据查询日志记录,查询速度快,进而可以快速判断是否存在日志记录,在不存在日志记录时,通过调用业务系统服务,记录日志,并实时存储日志数据至日志数据库,保证调用服务不会被重复调用。进一步地,可以通过事务ID直接查询日志的调用状态,当然也可以通过调用参数、环境参数、调用时间、调用结果,详细了解日志的相关调用信息。

如图7所示,本发明的一个实施例的支持微服务架构事务最终一致性的系统700的示意图:上述任一技术方案所述的用于发送端的支持微服务架构事务最终一致性的装置702;上述任一技术方案所述的用于消息队列服务的支持微服务架构事务最终一致性的装置704;以及上述任一技术方案所述的用于接收端的支持微服务架构事务最终一致性的装置706。

本发明提供的支持微服务架构事务最终一致性的系统700,通过采用用于发送端的支持微服务架构事务最终一致性的装置702,用于消息队列服务的支持微服务架构事务最终一致性的装置704,以及用于接收端的支持微服务架构事务最终一致性的装置706,实现通过日志及消息队列服务对服务进行异步调用,保证服务重复调用的幂等性,实现服务间数据的最终一致性,保证服务 调用的可靠性。

如图8所示,本发明的另一个实施例的支持微服务架构事务最终一致性的系统800的示意图:

其中,用于发送端的支持微服务架构事务最终一致性的装置802包括:日志记录装置,定时发送装置以及回执处理装置;

其中,用于消息队列服务的支持微服务架构事务最终一致性的装804包括:消息接收装置,消息队列管理装置,服务调用装置,消息日志记录装置,重复检测装置,以及回执发送装置;

其中,用于接收端的支持微服务架构事务最终一致性的装置806包括:调用日志记录装置和调用处理装置。

本发明提供的支持微服务架构事务最终一致性的系统800,通过采用用于发送端的支持微服务架构事务最终一致性的装置802,用于消息队列服务的支持微服务架构事务最终一致性的装置804,以及用于接收端的支持微服务架构事务最终一致性的装置806,实现通过日志及消息队列服务对服务进行异步调用,保证服务重复调用的幂等性,实现服务间数据的最终一致性,保证服务调用的可靠性。

进一步地,用于发送端的支持微服务架构事务最终一致性的装置802,通过日志记录装置,发起服务调用,记录日志,并实时存储日志数据至日志数据库,通过定时发送装置,当日志写入动作时,定时检查日志数据库中未发起服务调用或者超过指定时间未收到返回结果的日志,发送调用请求,以调用消息队列服务,同时通过日志以及消息队列对服务进行异步数据调用,保证服务调用的可靠性。进一步地,通过回执处理装置,接收回执消息,根据回执消息查询日志记录,进而根据日志状态确定当前调用处理的情况,保证调用服务失败后,发起方业务数据的回滚,保证了调用结果处理的可靠性。若日志状态表明调用处理完成,不作处理,若日志状态表明调用仍在处理中,调用返回结果,并将返回结果记录到日志中,实时存储日志数据至日志数据库,根据返回结果的状态调用相应业务的接口,进行后续处理,继续发起服务调用。

进一步地,用于消息队列服务的支持微服务架构事务最终一致性的装置804,通过消息接收装置,接收发送端传递的消息,调用消息队列,将消息放入执行队列中的实时队列中,通过消息队列管理装置,在监听到执行队列收到消息后发送消息,通过服务调用装置,接收消息,根据消息查询日志记录,通过重复检测装置,判断消息日志状态,根据不同的消息日志状态,进行不同的处理,避免因为消息重复发送导致业务系统处理错误,实现有效地管理各应用系统之间的消息,通过记录调用结果,以及调用服务失败重试,将处理结果及时通知发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效。进一步地,根据处理结果记录日志,并实时存储日志数据至日志数据库,尤其地,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续收到重复消息时,判断业务调用是否已产生结果,避免重复调用。

具体地说,若消息日志状态为处理中或日志不存在,通过服务调用装置,根据消息调用业务系统服务,判断业务系统服务是否调用成功及调用失败原因类型,若业务系统服务调用成功或者业务原因调用失败,通知回执队列,并将返回结果放入回执队列的实时队列中,通过消息队列管理装置,监听到回执队列收到包含返回结果的消息后,发送回执消息,通过回执发送装置,接收回执消息,发送给发送端,并返回处理结果,通过将回执消息及时发送给发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效。

进一步地,若业务系统服务非业务原因调用失败,通过服务调用装置,根据当前队列计算下级延时队列,判断执行队列是否存在下级延时队列,若存在下级延时队列,将消息放入下级执行队列中的延时队列,通过回执发送装置,重新接收消息等待进行继续处理,同时通过消息日志记录装置,记录消息日志状态为处理中,并实时存储日志数据至日志数据库,保证消息队列服务调用的可靠性。

进一步地,通过服务调用装置,根据处理结果,判断回执队列中的消息是否发送成功;若发送失败,计算下级延时队列,并判断回执队列是否存在下级延时队列,若回执队列存在下级延时队列,将消息放入下级延时队列,等待进行继续处理,通过消息日志记录装置,记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,通过调用服务失败重试,将处理结果及时 通知发送端,实现发送端快速地进行回执处理,使得回执处理及时、有效,保证消息队列服务调用的可靠性。

进一步地,若回执队列不存在下级延时队列,通过消息日志记录装置,直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续运维人员检查日志进行处理。

进一步地,若发送成功,通过消息日志记录装置,记录消息日志状态为结果发送成功,并实时存储日志数据至日志数据库,保证消息队列服务调用的可靠性。

进一步地,若执行队列不存在下级延时队列,再通过服务调用装置,重新通知回执队列,并将返回结果放入回执队列的实时队列中,继续处理,以及通过消息日志记录装置,直接记录消息日志状态为回执发送失败,并实时存储日志数据至日志数据库,用于后续运维人员检查日志进行处理。

进一步地,用于接收端地支持微服务架构事务最终一致性的装置906,通过调用处理装置,拦截服务调用,查询日志记录,根据是否存在日志记录,进行不同的处理,若存在日志记录,通过调用日志记录装置,根据日志记录,直接返回调用结果。进一步地,若不存在日志记录,通过调用日志记录装置,调用业务系统服务,记录日志,返回调用结果,并实时存储日志数据至日志数据库,最后根据日志记录,返回调用结果,保证重复调用服务不会被重复调用。

在本发明所述的实施例中,在上述实施例中,所述日志数据均不限于所列日志数据,其他与所述日志数据相关的数据信息均在本申请保护范围之内。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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