CN106993023A - 微服务架构下的分布式事务解决方法 - Google Patents
微服务架构下的分布式事务解决方法 Download PDFInfo
- Publication number
- CN106993023A CN106993023A CN201710117729.0A CN201710117729A CN106993023A CN 106993023 A CN106993023 A CN 106993023A CN 201710117729 A CN201710117729 A CN 201710117729A CN 106993023 A CN106993023 A CN 106993023A
- Authority
- CN
- China
- Prior art keywords
- micro services
- user
- message
- event
- audit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种微服务架构下的分布式事务解决方法。该方法包括:用户客户端向前端网站服务器发起注册请求,前端网站服务器将用户的注册请求发送给用户微服务服务器;用户微服务服务器处理所述用户的注册事务事件,将用户的注册事务事件发送给消息中间件,消息中间件将用户的注册事务事件转发给账户微服务服务器;账户微服务服务器处理用户的注册事务事件。本发明通过各微服务本身的事务消息重发机制和事务重新处理机制保证消息的可靠传递与最终一致性,使方案的实现不依赖于第三方的消息中间件的可靠传递机制,从而弱化与某种类型的消息中间件的耦合,本发明通过全局审计和自愈机制,能够及时发现事务消息事件的异常丢失并自愈。
Description
技术领域
本发明涉及无线通信技术领域,尤其涉及一种微服务架构下的分布式事务解决方法。
背景技术
传统的单体式应用不足以满足现代互联网应用的业务量和数据量,这个时候需要对应用和数据库进行拆分,就出现了一个应用需要同时访问两个或两个以上的数据库情况。此时我们使用分布式事务来保证一致性,也就是我们常说的2PC(Two PhaseCommitment Protocol,两阶段提交协议的缩写)。然而,2PC这种传统分布式事务不是微服务架构中一致性的最佳选择:
首先,对于微服务架构来说,不仅对数据库进行了拆分,对应用也进行了拆分,数据访问变得更加复杂,这是因为数据都是微服务私有的,唯一可访问的方式就是通过API(Application Programming Interface,应用程序编程接口),而2PC这种方式并不适用于这种软件架构。
其次,不同的微服务经常使用不同的数据库。应用会产生各种不同类型的数据,关系型数据库并不一定是最佳选择。基于微服务的应用一般都使用关系型数据库和非关系型数据库结合的模式,但是这些非关系型数据大多数并不支持2PC。
2PC方式不适合于微服务架构,微服务架构下最主要的方式是可靠事件模式,该模式主要依赖高可靠性的消息中间件,通过第三方消息中间件传递事务消息,从而达到微服务架构下的事务最终一致性。这种模式下有以下缺点:
1:对消息中间件本身要求极高,事务所有消息在消息中间件中存储,一旦消息中间件发生故障,不仅影响业务,还可能造成无法恢复的数据丢失;
2:微服务***对消息中间件高度依赖,造成应用***与第三方中间件的强耦合性,一旦选择某款第三方中间件,就很难替换,如需替换,则需要针对新选择的第三方消息中间件进行复杂***改造;
3:高可靠性的消息中间件往往是商用软件产品,增加***建设成本。
发明内容
本发明的实施例提供了一种微服务架构下的分布式事务解决方法。
为了实现上述目的,本发明采取了如下技术方案。
一种微服务架构下的分布式事务解决方法,包括:
用户客户端向前端网站服务器发起注册请求,所述前端网站服务器将用户的注册请求发送给用户微服务服务器;
所述用户微服务服务器处理所述用户的注册事务事件,将所述用户的注册事务事件发送给消息中间件,所述消息中间件将所述用户的注册事务事件转发给账户微服务服务器;
所述账户微服务服务器处理所述用户的注册事务事件。
进一步地,所述的用户微服务服务器处理所述用户的注册事务事件,将所述用户的注册事务事件发送给消息中间件,包括:
用户微服务服务器接收到所述前端网站服务器发送过来的用户的注册请求后,与用户微服务数据库进行数据通信,在所述用户微服务数据库中的用户信息表中增加所述用户的记录,在所述用户微服务数据库中的事务消息发送记录表中保存所述用户的注册事务消息事件;
所述用户微服务服务器将注册事务事件发送给消息中间件,所述消息中间件将注册事务事件转发给所述账户微服务服务器;
所述用户微服务服务器根据注册事务事件的发送结果更新所述事务消息发送记录表对应的该消息的发送结果状态,该发送结果状态包括发送成功或者发送失败;
所述用户微服务服务器将所述用户的注册结果返回给所述前端网站服务器,所述前端网站服务器将所述用户的注册结果返回给所述用户客户端。
进一步地,所述的用户微服务服务器处理所述用户的注册事务事件,还包括:
所述用户微服务服务器通过机制检测所述用户微服务数据库中的事务消息发送记录表中的消息的发送结果状态是否为发送成功,如果发送结果状态为发送失败,则重新将所述用户的注册事务事件发送给所述消息中间件。
进一步地,所述的账户微服务服务器处理所述用户的注册事务事件,包括:
所述账户微服务服务器接收到所述消息中间件发送过来的所述用户的注册事务事件后,所述账户微服务服务器与所述账户微服务数据库进行数据通信,在所述账户微服务数据库中的事务消息处理记录表中保存接收到的事务消息,在所述账户微服务数据库中的账户信息表中保存用户账户信息,并根据处理结果更新所述事务消息处理记录表对应记录的处理结果状态,该处理结果状态包括处理成功或者处理失败。
进一步地,所述的账户微服务服务器处理所述用户的注册事务事件,还包括:
所述账户微服务服务器通过机制检测所述事务消息处理记录表中的记录的处理结果状态是否为处理成功,如果处理结果状态为处理失败,则会重新处理对应用户的注册事务事件。
进一步地,所述的方法还包括:
审计微服务服务器与所述用户微服务服务器、所述账户微服务服务器通过无线通信网络连接,所述审计微服务服务器按照设定时间间隔检测用户微服务服务器、账户微服务服务在事务发送、接收和处理完成情况,将检测结果存储在审计自愈服务数据库中的审计历史记录表和事务消息路由规则表中;
步骤1、所述审计微服务服务器的审计自愈服务为定时任务,审计自愈周期开始;
步骤2、所述审计微服务服务器检查审计历史记录表中的历史事务消息丢失记录状态为未恢复的记录,查看是否已重发成功,消费者微服务已收到该事务消息,则执行步骤3,否则执行步骤4;
步骤3、对应的消费者微服务已收到该事务消息,则表明已经自愈,标记审计历史记录表中该历史事务消息丢失记录状态为已恢复;
步骤4、对应的消费者微服务未收到该事务消息,则调用对应的该事件的生产者微服务,标记事务消息发送记录表对应的记录为重新发送;
步骤5、遍历事务消息路由规则表,检查上次审计时间点至当前时间的事务事件是否丢失,未发现新的丢失记录则执行步骤7,否则执行步骤6;
步骤6、发现丢失的事务消息,则调用对应的该事件的生产者微服务的重发表示接口,标记事务消息发送记录表MESSAGE_SEND_RECORD对应的记录为重新发送,并将该记录写入审计历史记录表AUDIT_HISTORY_RECORD供下次审计时重新检查;
发现丢失的事务消息,则调用对应的该事件的生产者微服务,标记事务消息发送记录表对应的记录为重新发送;
步骤7、历史记录和新的审计周期时间范围内是否有事件丢失,有丢失则执行步骤8,否则执行步骤9;
步骤8、发送对应的告警事件到相应的监控平台;
步骤9、记录此次审计的时间点供下个周期到来时作为起始时间点;
步骤10、所述审计微服务服务器本次的审计和自愈处理结束。
由上述本发明的实施例提供的技术方案可以看出,本发明实施例通过各微服务本身的事务消息重发机制和事务重新处理机制保证消息的可靠传递与最终一致性,使方案的实现不依赖于第三方的消息中间件的可靠传递机制,从而弱化与某种类型的消息中间件的耦合,消息中间件可随意替换。本发明实施例通过全局审计和自愈机制,能够及时发现事务消息事件的异常丢失并自愈,从而达到微服务架构下分布式事务的最终一致性。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种微服务架构的网络拓扑图;
图2为本发明实施例提供的一种微服务架构的软件架构图;
图3为本发明实施例提供的一种微服务架构场景下的用户注册的事务流程;
图4为本发明实施例提供的一种审计自愈机制流程图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
本发明实施例的分布式***在设计和部署时,有3个核心的***需求,三个指标同时最优是不可能的,只能根据实际需要优化组合,这就是CAP定理,Consistency(一致性)Availability(可用性)Partition tolerance(分区容错性)。在微服务架构下,由于每个微服务都有自己的数据库,数据库已经进行了拆分,根据CAP定理,这种架构下已经强制选择了分区容错行,因此微服务架构下的分布式事务只能在一致性和可用性之间进行权衡。本发明揭示的分布式事务的解决方案是保证微服务架构下分布式事务最终一致性的方案,并在***中采用审计和自愈机制,保证数据最终达到一致,从而保证分布式微服务架构下的数据的一致性和高可用性。
在描述本发明方案中,我们预设这样的用户场景:一个终端用户访问前端网站进行用户注册,用户提交注册请求之后,网站需要在一个事务中在用户微服务的用户表中增加用户记录,之后在账户微服务的账户表中增加该用户的对应账户记录,而用户微服务和账户微服务部署于网络中不同的节点,且各自有自己的私有数据库。
图1为本发明实施例提供的一种微服务架构下一个网络拓扑结构示意图,该网络拓扑结构下各个单元的主要功能包括:
①用户客户端,用户在客户端发起注册请求;
②前端网站服务器,用户通过访问前端网站服务器提交注册请求,前端网站服务器收到用户的注册请求后,网站应用会访问后台的微服务节点实现业务逻辑和数据持久化;
③用户微服务服务器,将用户的注册信息保存到用户微服务服务器对应的数据库节点;
④用户微服务数据库,即用户微服务服务器对应的数据库节点,只有用户微服务服务器能够访问;
⑤账户微服务服务器,将用户的账户信息保存到账户微服务服务器对应的数据库节点;
⑥账户微服务数据库,即账户微服务服务器对应的数据库节点,只有账户微服务服务器能够访问。
⑦审计自愈服务,负责微服务架构下的事务一致性的最终审计及自愈。
⑧审计自愈服务数据库,即审计自愈服务器对应的数据库节点,只有审计自愈服务器能够访问。
图2为本发明实施例提供的一种微服务架构的软件架构图,包括如下的内容:
①用户微服务,包含事务事件监听机制、事务消息事件重发机制、事务消息事件重新处理机制;
②用户微服务数据库,包含用户信息表(USER_INFO)保存用户注册信息,用户信息表中包括下述表1所示的具体字段。
表1
字段名 | 类型 | 备注 |
uid | VARchar2(40) | 用户唯一标识 |
mobile | VARchar2(20) | 用户电话号码 |
username | VARchar2(100) | 用户名 |
password | VARchar2(100) | 用户密码 |
VARchar2(100) | 用户邮箱地址 |
事务消息发送记录表(MESSAGE_SEND_RECORD)保存已发的事务消息事件及发送状态,以及接收到的事务消息及处理结果状态;事务消息发送记录表中包括下述表2所示的具体字段
表2
③消息中间件,一个消息队列负责在微服务之间转发事务消息事件;
④账户微服务,包含事务事件监听机制、事务消息事件重发机制、事务消息事件重新处理机制;
⑤账户微服务数据库,包含账户信息表(ACCOUNT_INFO)保存用户账户信息,账户信息表中包括下述表3所示的具体字段。
表3
字段名 | 类型 | 备注 |
aid | VARchar2(40) | 账户唯一标识 |
uid | VARchar2(40) | 用户唯一标识 |
usablebalance | NUMBER(18,2) | 可用余额 |
frozenbalance | NUMBER(18,2) | 冻结金额 |
事务消息处理记录表(MESSAGE_PROCESS_RECORD)保存接收到的事务消息及处理结果状态;事务消息处理记录表中包括下述表4所示的具体字段。
表4
⑥审计自愈服务,由于事务消息事件在某些极端情况下(如网络故障)有可能丢失,本服务负责审计发现丢失的事务消息并标记重发,从而保证极端情况下的事务最终一致性。
⑦审计自愈服务数据库,包含事务消息路由规则表(AUDIT_ROUTE_RULE),该表至少包含事务消息的生产者(事务消息由哪个微服务发出)及消费者(事务消息由哪个微服务服务器接收并处理)等信息从而使审计自愈服务能够发现丢失的事务消息并对对应丢失的事务事件进行标记重发,审计历史记录表(AUDIT_HISTORY_RECORD)保存发现的丢失事务消息记录和状态供下一次审计周期重复检测及状态更新。
事务消息路由规则表中包括下述表5所示的字段。
表5
审计历史记录表包括下述表6所示的字段
表6
AUDIT_ROUTE_RULE路由表需要根据实际的业务需求增加对应路由,如以用户注册业务为例,则路由表中需要增加如下条目:
ruleid | messageproducer | messageconsumer | messagetype |
0001 | 01 | 02 | REG |
注:“01”代表微服务***中定义的用户微服务标识ID,“02”代表微服务***中定义的账户微服务标识ID,“REG”代表事务消息的类型为用户注册,这些值根据微服务实际业务***规则自行定义,确保在审计时能够正确找到微服务架构中对应的微服务并获取相应的事务消息。
审计自愈服务会根据AUDIT_ROUTE_RULE路由表的路由规则去查询事务消息发送微服务(messageproducer)的MESSAGE_SEND_RECORD表中的发送的事务消息并审计对应的事务消息接收微服务(messageconsumer)的MESSAGE_PROCESS_RECORD中是否都已接收,如有不一致,则消息丢失触发重发等自愈流程。
图3为本发明实施例提供的一种微服务架构场景下的用户注册的事务流程,包括如下的处理过程:
1、用户在客户端向前端网站服务器发起注册请求;
2、前端网站服务器收到用户的注册请求后,向用户微服务服务器发起用户注册;
3、用户微服务服务器接收到上述用户注册请求后,与用户微服务数据库进行数据通信,在用户微服务数据库中的用户信息表(USER_INFO)中增加所述用户的记录,在所述用户微服务数据库中的事务消息发送记录表(MESSAGE_SEND_RECORD)保存注册事务消息事件;
4、用户微服务服务器将注册事务事件发送给消息中间件,消息中间件将注册事务事件转发给账户微服务服务器;
5、用户微服务服务器根据注册事务事件的发送结果更新事务消息发送记录表(MESSAGE_SEND_RECORD)对应的该消息的发送结果状态,该发送结果状态包括发送成功或者发送失败;
6、用户微服务服务器注册结果返回给前端网站服务器;
7、前端网站服务器将注册结果返回给终端用户;
9、用户微服务服务器通过机制检测事务消息发送记录表(MESSAGE_SEND_RECORD)中的消息是否发送成功,如果发送状态为失败,则会重新发送;
此时终端用户虽然看到了注册完成,但实际上,注册事务只完成了一半,剩下的一半将在后续步骤中完成。
9、账户微服务服务器通过消息中间件异步接收到用户注册事务消息;
10、账户微服务服务器与账户微服务数据库进行数据通信,在账户微服务数据库中的事务消息处理记录表(MESSAGE_PROCESS_RECORD)中保存接收到的事务消息,在账户微服务数据库中的账户信息表(ACCOUNT_INFO)中保存用户账户信息,并根据处理结果更新所述事务消息处理记录表对应记录的处理结果状态,该处理结果状态包括处理成功或者处理失败。
11、账户微服务服务器通过机制检测所述事务消息处理记录表中的记录的处理结果状态是否为处理成功,如果处理结果状态为处理失败,则会重新处理对应用户的注册事务事件。
审计微服务服务器与用户微服务服务器、账户微服务服务器通过通信网络连接,审计微服务服务器按照设定时间间隔检测用户微服务服务器、账户微服务服务在事务发送、接收和处理完成情况,将检测异常结果存储在审计自愈服务数据库中的审计历史记录表中,同时会主动触发事务异常的流程重启,达到无需人工干预的自愈。
图4为本发明实施例提供的一种审计微服务服务器执行的审计自愈机制流程图,包括如下的处理过程:
步骤1、审计自愈服务为定时任务,审计自愈周期开始;
步骤2、首先检查审计历史记录表(AUDIT_HISTORY_RECORD)中的历史事务消息丢失记录状态为未恢复的记录,查看是否已重发成功,消费者微服务已收到该事务消息,则执行步骤3,否则执行步骤4;
步骤3、对应的消费者微服务已收到该事务消息,则表明已经自愈,标记审计历史记录表中该历史事务消息丢失记录状态为已恢复;
步骤4、对应的消费者微服务未收到该事务消息,则调用对应的该事件的生产者微服务,标记事务消息发送记录表(MESSAGE_SEND_RECORD)对应的记录为重新发送;
步骤5、遍历事务消息路由规则表(AUDIT_ROUTE_RULE),检查上次审计时间点至当前时间的事务事件是否丢失,未发现新的丢失记录则执行步骤7,否则执行步骤6;
步骤6、发现丢失的事务消息,则调用对应的该事件的生产者微服务的重发表示接口,标记事务消息发送记录表(MESSAGE_SEND_RECORD)对应的记录为重新发送,并将该记录写入AUDIT_HISTORY_RECORD历史记录表供下次审计时重新检查;
步骤7、历史记录和新的审计周期时间范围内是否有事件丢失,有丢失则执行步骤8,否则执行步骤9;
步骤8、发送对应的告警事件到相应的监控平台,必要时需人工介入处理;
步骤9、记录此次审计的时间点供下个周期到来时作为起始时间点;
步骤10、本次的审计和自愈处理结束。
综上所述,本发明实施例通过各微服务本身的事务消息重发机制和事务重新处理机制保证消息的可靠传递与最终一致性,使方案的实现不依赖于第三方的消息中间件的可靠传递机制,从而弱化与某种类型的消息中间件的耦合,消息中间件可随意替换。
本发明实施例通过全局审计和自愈机制,能够及时发现事务消息事件的异常丢失并自愈,即使在极端条件下(网络中断,服务重启)依然能够在网络和服务恢复之后自动完成处于部分完成状态的分布式事务的后续处理,从而达到微服务架构下分布式事务的最终一致性。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或***实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (6)
1.一种微服务架构下的分布式事务解决方法,其特征在于,包括:
用户客户端向前端网站服务器发起注册请求,所述前端网站服务器将用户的注册请求发送给用户微服务服务器;
所述用户微服务服务器处理所述用户的注册事务事件,将所述用户的注册事务事件发送给消息中间件,所述消息中间件将所述用户的注册事务事件转发给账户微服务服务器;
所述账户微服务服务器处理所述用户的注册事务事件。
2.根据权利要求1所述的微服务架构下的分布式事务解决方法,其特征在于,所述的用户微服务服务器处理所述用户的注册事务事件,将所述用户的注册事务事件发送给消息中间件,包括:
用户微服务服务器接收到所述前端网站服务器发送过来的用户的注册请求后,与用户微服务数据库进行数据通信,在所述用户微服务数据库中的用户信息表中增加所述用户的记录,在所述用户微服务数据库中的事务消息发送记录表中保存所述用户的注册事务消息事件;
所述用户微服务服务器将注册事务事件发送给消息中间件,所述消息中间件将注册事务事件转发给所述账户微服务服务器;
所述用户微服务服务器根据注册事务事件的发送结果更新所述事务消息发送记录表对应的该消息的发送结果状态,该发送结果状态包括发送成功或者发送失败;
所述用户微服务服务器将所述用户的注册结果返回给所述前端网站服务器,所述前端网站服务器将所述用户的注册结果返回给所述用户客户端。
3.根据权利要求2所述的微服务架构下的分布式事务解决方法,其特征在于,所述的用户微服务服务器处理所述用户的注册事务事件,还包括:
所述用户微服务服务器通过机制检测所述用户微服务数据库中的事务消息发送记录表中的消息的发送结果状态是否为发送成功,如果发送结果状态为发送失败,则重新将所述用户的注册事务事件发送给所述消息中间件。
4.根据权利要求2或3所述的微服务架构下的分布式事务解决方法,其特征在于,所述的账户微服务服务器处理所述用户的注册事务事件,包括:
所述账户微服务服务器接收到所述消息中间件发送过来的所述用户的注册事务事件后,所述账户微服务服务器与所述账户微服务数据库进行数据通信,在所述账户微服务数据库中的事务消息处理记录表中保存接收到的事务消息,在所述账户微服务数据库中的账户信息表中保存用户账户信息,并根据处理结果更新所述事务消息处理记录表对应记录的处理结果状态,该处理结果状态包括处理成功或者处理失败。
5.根据权利要求4所述的微服务架构下的分布式事务解决方法,其特征在于,所述的账户微服务服务器处理所述用户的注册事务事件,还包括:
所述账户微服务服务器通过机制检测所述事务消息处理记录表中的记录的处理结果状态是否为处理成功,如果处理结果状态为处理失败,则会重新处理对应用户的注册事务事件。
6.根据权利要求4所述的方法,其特征在于,所述的方法还包括:
审计微服务服务器与所述用户微服务服务器、所述账户微服务服务器通过无线通信网络连接,所述审计微服务服务器按照设定时间间隔检测用户微服务服务器、账户微服务服务在事务发送、接收和处理完成情况,将检测结果存储在审计自愈服务数据库中的审计历史记录表和事务消息路由规则表中;
步骤1、所述审计微服务服务器的审计自愈服务为定时任务,审计自愈周期开始;
步骤2、所述审计微服务服务器检查审计历史记录表中的历史事务消息丢失记录状态为未恢复的记录,查看是否已重发成功,消费者微服务已收到该事务消息,则执行步骤3,否则执行步骤4;
步骤3、对应的消费者微服务已收到该事务消息,则表明已经自愈,标记审计历史记录表中该历史事务消息丢失记录状态为已恢复;
步骤4、对应的消费者微服务未收到该事务消息,则调用对应的该事件的生产者微服务,标记事务消息发送记录表对应的记录为重新发送;
步骤5、遍历事务消息路由规则表,检查上次审计时间点至当前时间的事务事件是否丢失,未发现新的丢失记录则执行步骤7,否则执行步骤6;
步骤6、发现丢失的事务消息,则调用对应的该事件的生产者微服务的重发表示接口,标记事务消息发送记录表MESSAGE_SEND_RECORD对应的记录为重新发送,并将该记录写入审计历史记录表AUDIT_HISTORY_RECORD供下次审计时重新检查;
发现丢失的事务消息,则调用对应的该事件的生产者微服务,标记事务消息发送记录表对应的记录为重新发送;
步骤7、历史记录和新的审计周期时间范围内是否有事件丢失,有丢失则执行步骤8,否则执行步骤9;
步骤8、发送对应的告警事件到相应的监控平台;
步骤9、记录此次审计的时间点供下个周期到来时作为起始时间点;
步骤10、所述审计微服务服务器本次的审计和自愈处理结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710117729.0A CN106993023A (zh) | 2017-03-01 | 2017-03-01 | 微服务架构下的分布式事务解决方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710117729.0A CN106993023A (zh) | 2017-03-01 | 2017-03-01 | 微服务架构下的分布式事务解决方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106993023A true CN106993023A (zh) | 2017-07-28 |
Family
ID=59412667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710117729.0A Pending CN106993023A (zh) | 2017-03-01 | 2017-03-01 | 微服务架构下的分布式事务解决方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106993023A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108011768A (zh) * | 2017-12-26 | 2018-05-08 | 杭州电子科技大学 | 一种aop拦截式HBase数据存储微服务架构构建方法 |
CN108055296A (zh) * | 2017-11-30 | 2018-05-18 | 北京中电普华信息技术有限公司 | 一种基于微服务架构的事务处理方法及装置 |
CN108712309A (zh) * | 2018-06-11 | 2018-10-26 | 郑州云海信息技术有限公司 | 一种微服务架构下的微服务节点防护方法和*** |
CN109062675A (zh) * | 2018-08-03 | 2018-12-21 | 浪潮通用软件有限公司 | 一种工作流***依赖事务的***实现方法 |
CN109634978A (zh) * | 2018-12-18 | 2019-04-16 | 钛马信息网络技术有限公司 | 数据读取一致性***及方法 |
CN110311781A (zh) * | 2018-03-20 | 2019-10-08 | 西门子医疗保健有限责任公司 | 提供微服务信息 |
WO2019232962A1 (zh) * | 2018-06-06 | 2019-12-12 | 平安科技(深圳)有限公司 | 数据处理方法、***、计算机设备和存储介质 |
CN110868449A (zh) * | 2019-10-14 | 2020-03-06 | 深圳市非零无限科技有限公司 | 一种基于异步消息实现定时任务的方法及*** |
CN110876852A (zh) * | 2018-09-06 | 2020-03-13 | 深圳市东方博雅科技有限公司 | 微服务的网络游戏数据处理方法及*** |
CN112492019A (zh) * | 2020-11-24 | 2021-03-12 | 上海优扬新媒信息技术有限公司 | 消息推送方法、装置、电子设备及存储介质 |
CN112612807A (zh) * | 2020-12-31 | 2021-04-06 | 浙江融象数科控股有限公司 | 分布式事务数据一致性***设计方法 |
WO2021155496A1 (en) * | 2020-02-04 | 2021-08-12 | Honeywell International Inc. | Transaction based processing using asynchronous microservices |
CN113489702A (zh) * | 2021-06-29 | 2021-10-08 | 网易(杭州)网络有限公司 | 接口限流方法、装置和电子设备 |
CN113628028A (zh) * | 2021-08-06 | 2021-11-09 | 上海浦东发展银行股份有限公司 | 一种基于微服务架构的批量清算*** |
CN114513557A (zh) * | 2021-12-21 | 2022-05-17 | 上海赛可出行科技服务有限公司 | 一种金融***发布业务不中断的微服务通信方法 |
CN115174422A (zh) * | 2022-06-29 | 2022-10-11 | 深圳市华宇讯科技有限公司 | 微服务治理方法及装置 |
CN115190166A (zh) * | 2021-04-01 | 2022-10-14 | 山东华软金盾软件股份有限公司 | 一种微服务架构下消息传递的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104113592A (zh) * | 2014-07-01 | 2014-10-22 | 北京乐途园科技有限公司 | 一种本地微服务器及车载服务信息提供***及方法 |
CN104243438A (zh) * | 2013-06-24 | 2014-12-24 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法和服务器 |
CN105376225A (zh) * | 2015-11-02 | 2016-03-02 | 亚信科技(南京)有限公司 | 一种软件服务化的方法及装置 |
CN106257894A (zh) * | 2016-08-29 | 2016-12-28 | 北京海誉动想科技股份有限公司 | 基于微服务的灰度发布方法 |
CN106656630A (zh) * | 2017-01-13 | 2017-05-10 | 北京中电普华信息技术有限公司 | 一种电力营销业务应用***及其构建方法、平台 |
-
2017
- 2017-03-01 CN CN201710117729.0A patent/CN106993023A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104243438A (zh) * | 2013-06-24 | 2014-12-24 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法和服务器 |
CN104113592A (zh) * | 2014-07-01 | 2014-10-22 | 北京乐途园科技有限公司 | 一种本地微服务器及车载服务信息提供***及方法 |
CN105376225A (zh) * | 2015-11-02 | 2016-03-02 | 亚信科技(南京)有限公司 | 一种软件服务化的方法及装置 |
CN106257894A (zh) * | 2016-08-29 | 2016-12-28 | 北京海誉动想科技股份有限公司 | 基于微服务的灰度发布方法 |
CN106656630A (zh) * | 2017-01-13 | 2017-05-10 | 北京中电普华信息技术有限公司 | 一种电力营销业务应用***及其构建方法、平台 |
Non-Patent Citations (1)
Title |
---|
蒋勇: "基于微服务架构的基础设施设计", 《软件》 * |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108055296A (zh) * | 2017-11-30 | 2018-05-18 | 北京中电普华信息技术有限公司 | 一种基于微服务架构的事务处理方法及装置 |
CN108055296B (zh) * | 2017-11-30 | 2020-11-27 | 北京中电普华信息技术有限公司 | 一种基于微服务架构的事务处理方法及装置 |
CN108011768A (zh) * | 2017-12-26 | 2018-05-08 | 杭州电子科技大学 | 一种aop拦截式HBase数据存储微服务架构构建方法 |
CN108011768B (zh) * | 2017-12-26 | 2020-09-18 | 杭州电子科技大学 | 一种aop拦截式HBase数据存储微服务架构构建方法 |
CN110311781A (zh) * | 2018-03-20 | 2019-10-08 | 西门子医疗保健有限责任公司 | 提供微服务信息 |
WO2019232962A1 (zh) * | 2018-06-06 | 2019-12-12 | 平安科技(深圳)有限公司 | 数据处理方法、***、计算机设备和存储介质 |
CN108712309A (zh) * | 2018-06-11 | 2018-10-26 | 郑州云海信息技术有限公司 | 一种微服务架构下的微服务节点防护方法和*** |
CN109062675A (zh) * | 2018-08-03 | 2018-12-21 | 浪潮通用软件有限公司 | 一种工作流***依赖事务的***实现方法 |
CN110876852A (zh) * | 2018-09-06 | 2020-03-13 | 深圳市东方博雅科技有限公司 | 微服务的网络游戏数据处理方法及*** |
CN110876852B (zh) * | 2018-09-06 | 2023-09-26 | 深圳市贰陆陆科技有限公司 | 微服务的网络游戏数据处理方法及*** |
CN109634978A (zh) * | 2018-12-18 | 2019-04-16 | 钛马信息网络技术有限公司 | 数据读取一致性***及方法 |
CN110868449A (zh) * | 2019-10-14 | 2020-03-06 | 深圳市非零无限科技有限公司 | 一种基于异步消息实现定时任务的方法及*** |
CN110868449B (zh) * | 2019-10-14 | 2022-03-22 | 深圳市非零无限科技有限公司 | 一种基于异步消息实现定时任务的方法及*** |
WO2021155496A1 (en) * | 2020-02-04 | 2021-08-12 | Honeywell International Inc. | Transaction based processing using asynchronous microservices |
CN112492019A (zh) * | 2020-11-24 | 2021-03-12 | 上海优扬新媒信息技术有限公司 | 消息推送方法、装置、电子设备及存储介质 |
CN112612807A (zh) * | 2020-12-31 | 2021-04-06 | 浙江融象数科控股有限公司 | 分布式事务数据一致性***设计方法 |
CN112612807B (zh) * | 2020-12-31 | 2022-07-05 | 浙江融象数科控股有限公司 | 分布式事务数据一致性***设计方法 |
CN115190166A (zh) * | 2021-04-01 | 2022-10-14 | 山东华软金盾软件股份有限公司 | 一种微服务架构下消息传递的方法 |
CN113489702A (zh) * | 2021-06-29 | 2021-10-08 | 网易(杭州)网络有限公司 | 接口限流方法、装置和电子设备 |
CN113628028A (zh) * | 2021-08-06 | 2021-11-09 | 上海浦东发展银行股份有限公司 | 一种基于微服务架构的批量清算*** |
CN113628028B (zh) * | 2021-08-06 | 2024-01-23 | 上海浦东发展银行股份有限公司 | 一种基于微服务架构的批量清算*** |
CN114513557A (zh) * | 2021-12-21 | 2022-05-17 | 上海赛可出行科技服务有限公司 | 一种金融***发布业务不中断的微服务通信方法 |
CN115174422A (zh) * | 2022-06-29 | 2022-10-11 | 深圳市华宇讯科技有限公司 | 微服务治理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106993023A (zh) | 微服务架构下的分布式事务解决方法 | |
CN106502769A (zh) | 分布式事务处理方法、装置及*** | |
EP1632058B1 (en) | System for defining an alternate channel routing mechanism in a messaging middleware environment | |
US7596083B2 (en) | Network element recovery process | |
CN103477660A (zh) | 用于共享Diameter绑定数据的方法、***和计算机可读介质 | |
CN104301141B (zh) | 一种保存配置信息的方法、装置及*** | |
US20130227568A1 (en) | Systems and methods involving virtual machine host isolation over a network | |
CN107171885A (zh) | 一种检测服务器运行状态的方法、装置和*** | |
EP2863582B1 (en) | Scheduling a device batch reconfiguration event in a network | |
CN104023083A (zh) | 日志收集集群负载均衡的方法及装置 | |
US20070165544A1 (en) | Method and apparatus for providing distributed service composition model for ad hoc networks | |
US20120051263A1 (en) | Network System, Network Management Server, and OAM Test Method | |
US20170111279A1 (en) | Methods, systems, and computer readable media diverting diameter traffic from an overloaded policy and charging rules function (pcrf) | |
CN112218342A (zh) | 一种实现核心网子切片容灾的方法、装置和*** | |
EP4197136A1 (en) | Policy control for redundant transmissions | |
CN106534129A (zh) | 接入控制方法及装置 | |
US11825370B2 (en) | Methods, systems, and computer readable media for providing for network function (NF) fallback to recovered NF repository function (NRF) | |
CN109981795A (zh) | 资源请求调度方法和装置 | |
EP3304333A1 (en) | Local object instance discovery for metric collection on network elements | |
WO2010131482A1 (ja) | データベース装置、データベース整合システム、及び、データベース整合方法 | |
WO2007066279A2 (en) | Accounting information filtering method and apparatus | |
US9164820B1 (en) | System and method for correcting scrambled messages | |
US8275869B2 (en) | Re-synchronizing data between network elements and network management system using partial node discovery | |
CN105743745A (zh) | 网络拓结构及其信息更新方法和装置 | |
CN113038394B (zh) | 会话绑定关系处理方法、装置、电子设备和可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170728 |
|
WD01 | Invention patent application deemed withdrawn after publication |