CN114172821A - 服务状态的同步方法、装置及服务器 - Google Patents
服务状态的同步方法、装置及服务器 Download PDFInfo
- Publication number
- CN114172821A CN114172821A CN202210117635.4A CN202210117635A CN114172821A CN 114172821 A CN114172821 A CN 114172821A CN 202210117635 A CN202210117635 A CN 202210117635A CN 114172821 A CN114172821 A CN 114172821A
- Authority
- CN
- China
- Prior art keywords
- request
- service
- parameter
- abstract
- target
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例提供了一种服务状态的同步方法、装置及服务器,其中方法包括:通过主节点按照预设拦截规则从多个服务请求中拦截协同服务请求;在主节点执行协同服务请求成功时,将协同服务请求的服务调用参数转换为抽象请求描述,将抽象请求描述上传至消息中间件;通过从节点读取目标抽象请求描述并对其进行解析,得到目标服务调用接口参数,根据目标服务调用接口参数执行协同服务请求;在从节点执行失败时,向消息中间件发送从节点的请求处理状态;根据目标服务调用接口参数重新执行协同服务请求,直至协同服务请求成功。这样,通过对节点的请求抽象描述排序来保证主从节点间业务状态的最终一致性,完成业务协同。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种服务状态的同步方法、装置及服务器。
背景技术
随着数字技术的不断发展,各类集团企业、工厂面临数字化转型挑战。特别是大量集团型的工业企业有十分紧迫的数字化转型需求,由于集团型的工业企业的数据复杂,集团型工业企业的数字化转型比单个工厂的数字化转型更为复杂,在实际事务处理过程中,集团总部、事业部、多地域园区之间的业务互动需求使得工业互联网平台必须具备对应的灵活分布式部署架构与协同方案。现有分布式***的业务服务的协同性和一致性比较差,无法协作完成业务服务。
发明内容
为了解决上述技术问题,本申请实施例提供了一种服务状态的同步方法、装置及服务器。
第一方面,本申请实施例提供了一种服务状态的同步方法,所述方法包括:
通过主节点的请求***按照预设拦截规则从多个服务请求中确定协同服务请求,并拦截所述协同服务请求;
在所述主节点执行所述协同服务请求成功时,通过所述请求***将所述协同服务请求的服务调用参数转换为抽象请求描述,将所述抽象请求描述上传至消息中间件的请求成功主题中;
通过从节点的请求执行器从所述请求成功主题读取目标抽象请求描述,对所述目标抽象请求描述进行解析,得到目标服务调用接口参数,根据所述目标服务调用接口参数执行所述协同服务请求;
在所述从节点的请求执行器执行所述协同服务请求失败时,通过所述请求执行器向所述消息中间件的请求失败主题发送所述从节点的请求处理状态;
通过所述请求执行器根据所述目标服务调用接口参数重新执行所述协同服务请求,直至所述请求执行器执行所述协同服务请求成功。
第二方面,本申请实施例提供了一种服务状态的同步装置,所述装置包括:
拦截模块,用于通过主节点的请求***按照预设拦截规则从多个服务请求中确定协同服务请求,并拦截所述协同服务请求;
转换模块,用于在所述主节点执行所述协同服务请求成功时,通过所述请求***将所述协同服务请求的服务调用参数转换为抽象请求描述,将所述抽象请求描述上传至消息中间件的请求成功主题中;
解析模块,用于通过从节点的请求执行器从所述请求成功主题读取目标抽象请求描述,对所述目标抽象请求描述进行解析,得到目标服务调用接口参数,根据所述目标服务调用接口参数执行所述协同服务请求;
发送模块,用于在所述从节点的请求执行器执行所述协同服务请求失败时,通过所述请求执行器向所述消息中间件的请求失败主题发送所述从节点的请求处理状态;
执行模块,用于通过所述请求执行器根据所述目标服务调用接口参数重新执行所述协同服务请求,直至所述请求执行器执行所述协同服务请求成功。
第三方面,本申请实施例提供了一种服务器,包括存储器以及处理器,所述存储器用于存储计算机程序,所述计算机程序在所述处理器运行时执行第一方面提供的服务状态的同步方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行第一方面提供的服务状态的同步方法。
上述本申请提供的服务状态的同步方法、装置及服务器,通过所述主节点的请求***按照预设拦截规则从多个服务请求中确定协同服务请求,并拦截所述协同服务请求;在所述主节点执行所述协同服务请求成功时,通过所述请求***将所述协同服务请求的服务调用参数转换为抽象请求描述,将所述抽象请求描述上传至消息中间件的请求成功主题中;通过从节点的请求执行器从所述请求成功主题读取目标抽象请求描述,对所述目标抽象请求描述进行解析,得到目标服务调用接口参数,根据所述目标服务调用接口参数执行所述协同服务请求;在所述从节点的请求执行器执行所述协同服务请求失败时,通过所述请求执行器向所述消息中间件的请求失败主题发送所述从节点的请求处理状态;通过所述请求执行器根据所述目标服务调用接口参数重新执行所述协同服务请求,直至所述请求执行器执行所述协同服务请求成功。这样,实现多个微服务节点间的服务调用的协助和同步,可按业务规则配置的预设拦截规则,对多个微服务节点仅协同业务所需的服务状态和数据进行同步,以保证各服务节点的自治性,在主从式多节点服务***中,通过对节点的请求抽象描述排序来保证主从节点间业务状态的最终一致性,完成业务协同。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对本申请保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了现有的分布式***的一结构示意图;
图2示出了现有的分布式***的另一结构示意图;
图3示出了现有的数据库的一结构示意图;
图4示出了本申请实施例提供的服务状态的同步方法的一流程示意图;
图5示出了本申请实施例提供的数据节点的一分布示意图;
图6示出了本申请实施例提供的服务状态的同步方法的另一流程示意图;
图7示出了本申请实施例提供的服务状态的同步装置的一结构示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
现有大量集团型工业企业面临数字化转型需求,集团性工业企业的数字化转型比单个工厂数字化转型更为复杂。对于集团型工业企业来说,集团与每个园区都可以是一个独立的服务节点,请参阅图1,集团总部有主节点10,园区1有第一从节点11,园区2有第二从节点12,园区3有第三从节点13,可以有N个园区,N个园区分别有从节点,在此不做限制。主节点10能够与各从节点进行通信和业务协同。第一用户14可以通过主节点10、第二用户15可以通过第一从节点11、第三用户16可以通过第二从节点12实现对集团服务的控制管理,并查看各园区服务的状态。
为了解决主节点和从节点数据同步和服务状态同步的问题,引入了联邦架构,联邦架构在大数据组件和联盟区块链中被广泛提交,联邦架构只能够存在多个中心,每个中心都是可独立自治的,中心与中心之间可以进行通信,从而完成复杂的数字化协同任务。请参阅图2,图2简单描述了多数据中心的联邦化结构,在图2中,集团数据中心24与园区A数据中心25、园区B数据中心26之间通信连接,集团用户21通过集团微服务23与集团数据中心24进行通信,园区B用户22通过园区B微服务27与园区B数据中心26进行通信,联邦化结构包括多个数据中心,每个数据中心自治。
为进行数据同步,采用数据库日志同步的方式,具体的,采用基于数据变更捕获(Change Data Capture,CDC)的数据同步。CDC的数据同步软件框架包含2个部分:数据操作***和数据操作执行器。请参阅图3,数据操作***(CDC)32与主数据库31部署在一起,通过数据变更捕获(Change Data Capture,CDC)软件框架从主数据库31直接获取数据变更操作消息流,并通过网络媒介(例如消息队列33)广播到所有从节点数据中心,各从节点数据中心的数据操作执行器接收数据变更操作,并在本从节点数据库上执行操作,从而完成和主节点数据中心的数据同步。如图3所示,第一数据操作执行器34、第二数据操作执行器35接收数据变更操作,并在第一从数据库36、第二从数据库37上执行操作,从而完成和主数据库31的数据同步。虽然基于CDC技术能够实现数据库层面上的数据同步,然而,在联邦架构场景下,各节点还需要协作完成统一业务目标。单靠数据层面的数据同步难以实现业务触发,从而无法完成业务协同,仍然无法到达各节点内所有微服务状态达到业务场景所需的最终一致性。
实施例1
本公开实施例提供了一种服务状态的同步方法。
具体的,请参阅图4,服务状态的同步方法包括以下步骤:
步骤S401,通过所述主节点的请求***按照预设拦截规则从多个服务请求中确定协同服务请求,并拦截所述协同服务请求。
本实施例的服务状态的同步方法可以应用于主从式多服务节点***,主从式多服务节点***包括2个互斥角色,且各节点具有独立且唯一的数据中心ID。主数据中心有1个,从数据中心有多个。
在一实施方式中,预设拦截规则包括白名单列表、目标服务类型、请求服务接口路径、例外路径、服务接口请求方法。
具体的,请求***的预设拦截规则可以采用白名单模式,请求***的初始化过程中加载预设拦截规则。预设拦截规则的主要代码如下:
"whiteListEntries": [
{
"requestPath": "/api/v1/auth/*",
"exceptionalPaths":
["/api/v1/auth/login","/api/v1/auth/login/*"],
"requestMethod": "POST",
"serviceType": "IAM",
},...
] }
其中,whiteListEntries:白名单列表;请求***仅拦截白名单列表中
的服务接口。serviceType:所请求的目标服务类型;requestPath:请求服务接口路径(通过*覆盖接口路径下所有子路径);exceptionalPaths:例外路径,如果同时请求匹配reqeustPath和例外路径,则不再拦截。 requestMethod: string,服务接口请求方法(例如按http接口标准可以是POST,PUT等);serviceType: string,所请求的目标服务类型。
在本实施例中,协同服务请求是指给定一个需在各个节点间同步执行的接口请求。主节点执行该请求,如果成功则存入消息队列,各从节点从消息队列依次读取服务接口请求分别按序执行。最终达到各节点微服务业务状态同步的效果,并在主节点提供获取各节点业务状态同步的状态的能力。
在本实施例中,请求***是一种代理服务,部署于实际服务上层,从而使得外部请求先经过***才能到达实际服务。
在一实施方式中,步骤S401中的“通过所述主节点的请求***按照预设拦截规则从多个服务请求中确定协同服务请求”,包括以下步骤:
判断各所述服务请求的服务调用参数是否与所述白名单列表、所述目标服务类型、所述请求服务接口路径、所述例外路径、所述服务接口请求方法相匹配;
将服务调用参数与所述白名单列表、所述目标服务类型、所述请求服务接口路径、所述例外路径、所述服务接口请求方法相匹配的服务请求确定为协同服务请求。
在本实施例中,对不符合"预设拦截规则"的服务请求,直接转发到目标服务进行执行,并返回结果。对符合"预设拦截规则"的服务请求,先转发到目标服务进行执行,如果执行成功则解析外部请求的数据,并将接口调用的参数部分解析后,转换得到“抽象请求描述”,然后将“抽象请求描述”上传到消息中间件之后,再返回执行服务请求的执行结果。
进一步补充说明的是,并不是所有的主节点的服务请求都需要被拦截,出于业务需要,只对"多节点间服务状态需要同步"的服务请求才进行拦截,例如:“对已有的设备开机率指标计算模型进行修改” 的这个服务请求,从业务需求上说,期望该请求作用到所有服务节点,因此业务上就可以考虑将该请求放入到请求***的预设拦截规则中,使得请求***会主动"拦截"该请求。请求***能够将被拦截的协同服务请求的部分服务接口调用参数”转化为“抽象请求描述”,之后请求***将该“抽象请求描述”上传到消息中间件,这些排队于消息中间件中的“抽象请求描述”序列,被称为“主节点请求”。
服务接口调用参数就是实际服务调用的参数,服务可以是http服务,例如"“定义设备开机率指标流计算模型”该功能可能对应一个http请求。该请求所带参数包括"指标计算模型"的定义信息(来自请求体(body),请求者的身份认证(来着请求头(header)), 请求路径 "/workflow"(来自请求全路径(full request path))。
这样,可以快速确定属于协同服务请求,方便后续从节点的同步执行操作。
步骤S402,在所述主节点执行所述协同服务请求成功时,通过所述请求***将所述协同服务请求的服务调用参数转换为抽象请求描述,将所述抽象请求描述上传至消息中间件的请求成功主题中。
在本实施例中,请求***按配置的预设拦截规则过滤服务请求,并将过滤后得到的协同服务请求转换为"抽象请求描述",并将“抽象请求描述”推送到消息中间件的“请求成功主题”。请求成功主题是 "将“抽象请求描述”上传到消息中间件" 的目标主题;因为该主题接收的均为主节点已经成功执行的请求,所以该主题称为"请求成功主题"。
在一实施方式中,抽象请求描述包括请求唯一ID、目标服务类型、目标服务接口、查询请求参数、请求头参数、请求体参数、接口请求参数;所述服务调用参数包括请求全路径、请求体和请求头。
需要说明的是,服务接口调用参数,以http请求为例,包含3部分,请求全路径(full request path),请求体(request body)和请求头(header)。服务接口调用参数包含与业务无关的大量冗余信息,例如请求头(header)中包含请求发起方IP等信息,请求全路径(full request path)包含主节点的域名地址等,以上信息在对各从节点进行请求的过程中,是需要按照从节点上下文进行修改的,或者是不必要存储的,因此存储到"请求成功主题"前,将所需部分提取为"抽象请求描述", 从而各从节点的请求执行器能够按照本节点的信息重新构造“实际服务调用接口参数”进行请求。
具体的,抽象请求描述可以由多种格式表示,在一实施方式中,可以采用json格式,主要内容如例所示:
{
"requestId": "VPTGAWZEOMBUDQJU",
"serviceType": "CMS",
"requestPath": "/workflow",
"requestMethod": "POST",
"requestBody": "",
"requestHeader": {
"Accept": "*/*",
"Accept-Encoding": "gzip",
"Authorization": "eyJhbGciOiJ...",
},
"queryParameters": {}
}
其中, requestId: 请求唯一ID;serviceType: 所请求的目标服务类型;requestPath:所请求的目标服务接口;queryParameters: 查询请求参数(可选) ;requestHeader: json格式,请求头参数(如认证令牌等); requestBody: json格式,接口请求参数。
补充说明的是,消息中间件用于将主节点的服务请求按主节点的操作先后顺序排队,实际场景中以Kafka为例。通过请求排队形成确定的顺序,这样能够保证在每个从节点上,按照这个确定的顺序来执行请求。通过在主节点的请求***提取抽象请求描述,并将抽象请求描述按序通过消息中间件维护。
在一实施方式中,步骤S402中的“通过所述请求***将所述协同服务请求的服务调用参数转换为抽象请求描述”,包括以下步骤:
通过所述请求***将所述请求体进行解析,得到所述目标服务接口、所述查询请求参数、所述接口请求参数;
通过所述请求***将所述请求头进行解析,得到所述请求唯一ID和所述请求头参数;
通过所述请求***将所述请求全路径进行解析,得到所述目标服务类型。
步骤S403,通过从节点的请求执行器从所述请求成功主题读取目标抽象请求描述,对所述目标抽象请求描述进行解析,得到目标服务调用接口参数,根据所述目标服务调用接口参数执行所述协同服务请求。
步骤S404,在所述从节点的请求执行器执行所述协同服务请求失败时,通过所述请求执行器向所述消息中间件的请求失败主题发送所述从节点的请求处理状态。
在本实施例中,“请求失败主题”是指从节点执行来自"请求成功主题"中的“抽象请求描述”之后,如果在这个从节点执行请求失败,则将对应的“抽象请求描述”中的ID和本从节点id,上传到“请求失败主题”。
在本实施例中,请求处理状态包括:请求唯一ID,同步执行所述协同服务请求的数据中心ID,从节点同步执行所述协同服务请求的执行结果,处理时间戳。
具体的,请求处理状态可以由多种格式表示,在一实施方式中,可以采用json格式,主要内容如下例所示:
{
"requestId": "VPTGAWZEOMBUDQJU",
"dataCenterId": "dataCenter1",
"requestStatus": “failed”,
“reqeustTime”: “2021-12-25T06:46:44.755Z”
}
其中,requestId: 请求唯一ID;dataCenterId: 同步执行该请求的数据中心ID;requestStatus: 请求状态,其中,请求状态有2个,分别为success:成功/failed:失败。requestTime: 处理时间戳。
步骤S405,通过所述请求执行器根据所述目标服务调用接口参数重新执行所述协同服务请求,直至所述请求执行器执行所述协同服务请求成功。
在一实施方式中,服务状态的同步方法还包括以下步骤:
在所述请求执行器执行所述协同服务请求成功时,向所述消息中间件的请求失败主题发送状态更新消息,将所述请求失败主题对应的请求处理状态标记为成功。
在一实施例中,将所述请求失败主题对应的请求处理状态标记为成功,包括以下步骤:
将所述请求处理状态中的所述执行结果更新为执行成功。
需要说明的是,各个节点内所有微服务的状态达到业务场景所需的最终一致性的业务有多种,在此不做限制。举例来说,指标计算模型是物联网平台对外通过API接口提供的一种定义实时流计算的方式。通过API接口调用可以在平台上更新并激活指标计算模型。下面结合图5,对指标计算业务的同步过程进行举例说明。在集团型工业企业中,通用需求是指标计算模型的实时修改能够同步在所有节点更新并执行新的实时计算流,即集团侧主节点可以对已有的指标计算模型进行修改;园区从节点需要实时更新从本节点上运行的计算模型并执行新的计算流。举例来说,指标计算模型可以为设备开机率指标计算模型。指标计算模型的下发和更新需保证最终一致性。
如图5中,集团侧的主节点43提供指标计算服务,指标计算服务可以通过指标计算模型实现,园区侧的第一从节点41和第二从节点42同步提供指标计算服务,也通过相同的指标计算模型实现。在一实施方式中,指标计算模型需按用户编辑的版本顺序更新,在时间t1,指标计算模型为版本1;在时间t2,指标计算模型为版本2;......;在时间tn,指标计算模型为版本N。实际场景中用户从主节点43可能多次编辑发布新的指标计算模型,并下发到园区的第一从节点41和第二从节点42,因此保证第一从节点41和第二从节点42所执行的指标计算模型的版本在同步完成后保持一致,即最终一致性,实现多节点的主从分布式服务的协同一致。
在一实施方式中,服务状态的同步方法还包括以下步骤:通过所述主节点的同步请求监控器从所述消息中间件读取所述请求成功主题的抽象请求描述和所述请求失败主题的请求处理状态;
将读取到的抽象请求描述和请求处理状态存入数据库中。
具体的,数据库维护2张数据表,1张存储"请求成功主题"中的"抽象请求描述"消息(主键为requestId: 请求唯一ID);1张存储"请求失败主题"中的"请求处理状态"消息(主键为requestId;dataCenterId作为联合主键)。
同步请求监控器可以提高以下功能:(1)负责消费"请求成功主题"和"请求失败主题"中的数据,并写入对应数据库表,其中对"请求成功主题"中的数据,逐条写入对应数据表即可。对"请求失败主题"的数据,各从节点重试的请求以按主键更新的方式写入该数据表。(2)负责对外提供查询能力,查询当前各主从节点是否存在"请求同步失败"的服务请求,并显示该失败的服务请求所对应的"抽象请求描述"。
在本实施例中,请求状态包含"成功"/"失败",2个状态,需要关注的是各个节点上同步请求失败的服务请求,因此仅维护请求失败主题来使各从节点将当前失败的请求上传到该请求失败主题;同时各节点会重试失败请求直到成功,并在成功后也推送一条”状态更新”消息到该请求失败主题,将该失败请求的状态标记为成功。
在一实施方式中,服务状态的同步方法还包括以下步骤:
通过所述请求***向客户端发送通知消息,所述通知消息为用于指示所述主节点执行所述协同服务请求成功的消息;
通过所述同步请求监控器确定所述协同服务请求在所述主节点和各从节点的执行成功状态或执行失败状态。
下面结合图6对服务状态的同步过程进行举例说明。具体参阅图6,服务状态的同步可以包括以下步骤:
步骤1,客户端65发送多个服务请求到主节点66,主节点66的请求***661按预设拦截规则拦截协同服务请求。
步骤2,请求***661按配置的预设拦截规则将协同服务请求转换为抽象请求描述,在主节点66执行协同服务请求成功时,将抽象请求描述发送到消息中间件64的请求成功主题。
步骤3.1,各个从节点60的请求执行器601依次读取消息中间件64的请求成功主题的数据,解析后调用对应本从节点60上的服务。
步骤3.2,各个从节点60的请求执行器601若执行协同服务请求失败;将请求处理状态求推送到消息中间件64的请求失败主题,反复重试执行协同服务请求,直到执行协同服务请求成功。
步骤4,主节点66的同步请求监控器662读取消息中间件64的“请求失败主题/请求成功主题”,将请求失败主题的请求处理状态和/请求成功主题的抽象请求描述存储到数据库69中。
步骤5,主节点66的请求***661将在主节点66执行协同服务请求的执行结果返回给客户端65。此外,同步请求监控器662提供接口来对接第三方监控呈现模块610,用于运维人员监控各个节点间同步请求的状态。
这样,终端用户知道其发起的该请求已经成功在主节点执行,并且被加入到了"请求成功主题"队列,等所有从节点依次执行该请求之后,该请求作用效果将对所有从节点生效,达到业务上状态最终一致性的效果。
本实施例提供的服务状态的同步方法,通过所述主节点的请求***按照预设拦截规则从多个服务请求中确定协同服务请求,并拦截所述协同服务请求;在所述主节点执行所述协同服务请求成功时,通过所述请求***将所述协同服务请求的服务调用参数转换为抽象请求描述,将所述抽象请求描述上传至消息中间件的请求成功主题中;通过从节点的请求执行器从所述请求成功主题读取目标抽象请求描述,对所述目标抽象请求描述进行解析,得到目标服务调用接口参数,根据所述目标服务调用接口参数执行所述协同服务请求;在所述从节点的请求执行器执行所述协同服务请求失败时,通过所述请求执行器向所述消息中间件的请求失败主题发送所述从节点的请求处理状态;通过所述请求执行器根据所述目标服务调用接口参数重新执行所述协同服务请求,直至所述请求执行器执行所述协同服务请求成功。这样,实现多个微服务节点间的服务调用的协助和同步,可按业务规则配置的预设拦截规则,对多个微服务节点仅协同业务所需的服务状态和数据进行同步,以保证各服务节点的自治性,在主从式多节点服务***中,通过对节点的请求抽象描述排序来保证主从节点间业务状态的最终一致性,完成业务协同。
实施例2
此外,本公开实施例提供了一种服务状态的同步装置。
具体的,请参阅图7,服务状态的同步装置700包括:
拦截模块701,用于通过所述主节点的请求***按照预设拦截规则从多个服务请求中确定协同服务请求,并拦截所述协同服务请求;
转换模块702,用于在所述主节点执行所述协同服务请求成功时,通过所述请求***将所述协同服务请求的服务调用参数转换为抽象请求描述,将所述抽象请求描述上传至消息中间件的请求成功主题中;
解析模块703,用于通过从节点的请求执行器从所述请求成功主题读取目标抽象请求描述,对所述目标抽象请求描述进行解析,得到目标服务调用接口参数,根据所述目标服务调用接口参数执行所述协同服务请求;
发送模块704,用于在所述从节点的请求执行器执行所述协同服务请求失败时,通过所述请求执行器向所述消息中间件的请求失败主题发送所述从节点的请求处理状态;
执行模块705,用于通过所述请求执行器根据所述目标服务调用接口参数重新执行所述协同服务请求,直至所述请求执行器执行所述协同服务请求成功。
在一实施方式中,服务状态的同步装置700还包括:
标记模块,用于在所述请求执行器执行所述协同服务请求成功时,向所述消息中间件的请求失败主题发送状态更新消息,将所述请求失败主题对应的请求处理状态标记为成功。
在一实施方式中,所述预设拦截规则包括白名单列表、目标服务类型、请求服务接口路径、例外路径、服务接口请求方法;
拦截模块701,还用于判断各所述服务请求的服务调用参数是否与所述白名单列表、所述目标服务类型、所述请求服务接口路径、所述例外路径、所述服务接口请求方法相匹配;
将服务调用参数与所述白名单列表、所述目标服务类型、所述请求服务接口路径、所述例外路径、所述服务接口请求方法相匹配的服务请求确定为协同服务请求。
在一实施方式中,所述抽象请求描述包括请求唯一ID、目标服务类型、目标服务接口、查询请求参数、请求头参数、请求体参数、接口请求参数;
所述服务调用参数包括请求全路径、请求体和请求头;
转换模块702,还用于通过所述请求***将所述请求体进行解析,得到所述目标服务接口、所述查询请求参数、所述接口请求参数;
通过所述请求***将所述请求头进行解析,得到所述请求唯一ID和所述请求头参数;
通过所述请求***将所述请求全路径进行解析,得到所述目标服务类型。
在一实施方式中,所述请求处理状态包括:请求唯一ID,同步执行所述协同服务请求的数据中心ID,从节点同步执行所述协同服务请求的执行结果,处理时间戳;
所述标记模块,还用于将所述请求处理状态中的所述执行结果更新为执行成功。
在一实施方式中,服务状态的同步装置700包括:
读取模块,用于通过所述主节点的同步请求监控器从所述消息中间件读取所述请求成功主题的抽象请求描述和所述请求失败主题的请求处理状态;
将读取到的抽象请求描述和请求处理状态存入数据库中。
在一实施方式中,服务状态的同步装置700包括:
处理模块,用于通过所述请求***向客户端发送通知消息,所述通知消息为用于指示所述主节点执行所述协同服务请求成功的消息;
通过所述同步请求监控器确定所述协同服务请求在所述主节点和各从节点的执行成功状态或执行失败状态。
本实施例提供的服务状态的同步装置可以实现实施例1所提供的服务状态的同步方法的步骤,为避免重复,在此不再赘述。
本实施例提供的服务状态的同步装置,通过所述主节点的请求***按照预设拦截规则从多个服务请求中确定协同服务请求,并拦截所述协同服务请求;在所述主节点执行所述协同服务请求成功时,通过所述请求***将所述协同服务请求的服务调用参数转换为抽象请求描述,将所述抽象请求描述上传至消息中间件的请求成功主题中;通过从节点的请求执行器从所述请求成功主题读取目标抽象请求描述,对所述目标抽象请求描述进行解析,得到目标服务调用接口参数,根据所述目标服务调用接口参数执行所述协同服务请求;在所述从节点的请求执行器执行所述协同服务请求失败时,通过所述请求执行器向所述消息中间件的请求失败主题发送所述从节点的请求处理状态;通过所述请求执行器根据所述目标服务调用接口参数重新执行所述协同服务请求,直至所述请求执行器执行所述协同服务请求成功。这样,实现多个微服务节点间的服务调用的协助和同步,可按业务规则配置的预设拦截规则,对多个微服务节点仅协同业务所需的服务状态和数据进行同步,以保证各服务节点的自治性,在主从式多节点服务***中,通过对节点的请求抽象描述排序来保证主从节点间业务状态的最终一致性,完成业务协同。
实施例3
此外,本公开实施例提供了一种服务器,包括存储器以及处理器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行上述方法实施例1所提供的服务状态的同步方法。
本实施例提供的服务器可以实现实施例1所提供的服务状态的同步方法的步骤,为避免重复,在此不再赘述。
实施例4
此外,本公开实施例提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序在处理器上运行时执行实施例1所提供的服务状态的同步方法。
本实施例提供的计算机可读存储介质可以实现实施例1所提供的服务状态的同步方法的步骤,为避免重复,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者终端中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (10)
1.一种服务状态的同步方法,其特征在于,所述服务状态的同步方法包括:
通过主节点的请求***按照预设拦截规则从多个服务请求中确定协同服务请求,并拦截所述协同服务请求;
在所述主节点执行所述协同服务请求成功时,通过所述请求***将所述协同服务请求的服务调用参数转换为抽象请求描述,将所述抽象请求描述上传至消息中间件的请求成功主题中;
通过从节点的请求执行器从所述请求成功主题读取目标抽象请求描述,对所述目标抽象请求描述进行解析,得到目标服务调用接口参数,根据所述目标服务调用接口参数执行所述协同服务请求;
在所述从节点的请求执行器执行所述协同服务请求失败时,通过所述请求执行器向所述消息中间件的请求失败主题发送所述从节点的请求处理状态;
通过所述请求执行器根据所述目标服务调用接口参数重新执行所述协同服务请求,直至所述请求执行器执行所述协同服务请求成功。
2.根据权利要求1所述的服务状态的同步方法,其特征在于,所述服务状态的同步方法还包括:
在所述请求执行器执行所述协同服务请求成功时,向所述消息中间件的请求失败主题发送状态更新消息,将所述请求失败主题对应的请求处理状态标记为成功。
3.根据权利要求1所述的服务状态的同步方法,其特征在于,所述预设拦截规则包括白名单列表、目标服务类型、请求服务接口路径、例外路径、服务接口请求方法;
所述通过所述主节点的请求***按照预设拦截规则从多个服务请求中确定协同服务请求,包括:
判断各所述服务请求的服务调用参数是否与所述白名单列表、所述目标服务类型、所述请求服务接口路径、所述例外路径、所述服务接口请求方法相匹配;
将服务调用参数与所述白名单列表、所述目标服务类型、所述请求服务接口路径、所述例外路径、所述服务接口请求方法相匹配的服务请求确定为协同服务请求。
4.根据权利要求1所述的服务状态的同步方法,其特征在于,所述抽象请求描述包括请求唯一ID、目标服务类型、目标服务接口、查询请求参数、请求头参数、请求体参数、接口请求参数;
所述服务调用参数包括请求全路径、请求体和请求头;
所述通过所述请求***将所述协同服务请求的服务调用参数转换为抽象请求描述,包括:
通过所述请求***将所述请求体进行解析,得到所述目标服务接口、所述查询请求参数、所述接口请求参数;
通过所述请求***将所述请求头进行解析,得到所述请求唯一ID和所述请求头参数;
通过所述请求***将所述请求全路径进行解析,得到所述目标服务类型。
5.根据权利要求2所述的服务状态的同步方法,其特征在于,所述请求处理状态包括:请求唯一ID,同步执行所述协同服务请求的数据中心ID,从节点同步执行所述协同服务请求的执行结果,处理时间戳,所述将所述请求失败主题对应的请求处理状态标记为成功,包括:
将所述请求处理状态中的所述执行结果更新为执行成功。
6.根据权利要求1所述的服务状态的同步方法,其特征在于,所述服务状态的同步方法还包括:
通过所述主节点的同步请求监控器从所述消息中间件读取所述请求成功主题的抽象请求描述和所述请求失败主题的请求处理状态;
将读取到的抽象请求描述和请求处理状态存入数据库中。
7.根据权利要求6所述的服务状态的同步方法,其特征在于,所述服务状态的同步方法还包括:
通过所述请求***向客户端发送通知消息,所述通知消息为用于指示所述主节点执行所述协同服务请求成功的消息;
通过所述同步请求监控器确定所述协同服务请求在所述主节点和各从节点的执行成功状态或执行失败状态。
8.一种服务状态的同步装置,其特征在于,所述装置包括:
拦截模块,用于通过主节点的请求***按照预设拦截规则从多个服务请求中确定协同服务请求,并拦截所述协同服务请求;
转换模块,用于在所述主节点执行所述协同服务请求成功时,通过所述请求***将所述协同服务请求的服务调用参数转换为抽象请求描述,将所述抽象请求描述上传至消息中间件的请求成功主题中;
解析模块,用于通过从节点的请求执行器从所述请求成功主题读取目标抽象请求描述,对所述目标抽象请求描述进行解析,得到目标服务调用接口参数,根据所述目标服务调用接口参数执行所述协同服务请求;
发送模块,用于在所述从节点的请求执行器执行所述协同服务请求失败时,通过所述请求执行器向所述消息中间件的请求失败主题发送所述从节点的请求处理状态;
执行模块,用于通过所述请求执行器根据所述目标服务调用接口参数重新执行所述协同服务请求,直至所述请求执行器执行所述协同服务请求成功。
9.一种服务器,其特征在于,包括存储器以及处理器,所述存储器存储有计算机程序,所述计算机程序在所述处理器运行时执行权利要求1至7中任一项所述的服务状态的同步方法。
10.一种计算机可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序在处理器上运行时执行权利要求1至7中任一项所述的服务状态的同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210117635.4A CN114172821B (zh) | 2022-02-08 | 2022-02-08 | 服务状态的同步方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210117635.4A CN114172821B (zh) | 2022-02-08 | 2022-02-08 | 服务状态的同步方法、装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114172821A true CN114172821A (zh) | 2022-03-11 |
CN114172821B CN114172821B (zh) | 2022-05-24 |
Family
ID=80489532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210117635.4A Active CN114172821B (zh) | 2022-02-08 | 2022-02-08 | 服务状态的同步方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114172821B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115622776A (zh) * | 2022-10-08 | 2023-01-17 | 浙江网商银行股份有限公司 | 数据访问方法以及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150039734A1 (en) * | 2013-08-05 | 2015-02-05 | The Trustees Of The University Of Pennsylvania | Methods, systems, and computer readable media for enabling real-time guarantees in publish-subscribe middleware using dynamically reconfigurable networks |
CN111258723A (zh) * | 2019-12-05 | 2020-06-09 | 东软集团股份有限公司 | 分布式***的事务处理方法、装置、***、介质及设备 |
CN113505012A (zh) * | 2021-09-13 | 2021-10-15 | 北京宇信科技集团股份有限公司 | 一种消息队列的处理方法、介质、设备和*** |
CN114004701A (zh) * | 2021-11-05 | 2022-02-01 | 中国工商银行股份有限公司 | 生成交易结果的方法及装置、电子设备和存储介质 |
-
2022
- 2022-02-08 CN CN202210117635.4A patent/CN114172821B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150039734A1 (en) * | 2013-08-05 | 2015-02-05 | The Trustees Of The University Of Pennsylvania | Methods, systems, and computer readable media for enabling real-time guarantees in publish-subscribe middleware using dynamically reconfigurable networks |
CN111258723A (zh) * | 2019-12-05 | 2020-06-09 | 东软集团股份有限公司 | 分布式***的事务处理方法、装置、***、介质及设备 |
CN113505012A (zh) * | 2021-09-13 | 2021-10-15 | 北京宇信科技集团股份有限公司 | 一种消息队列的处理方法、介质、设备和*** |
CN114004701A (zh) * | 2021-11-05 | 2022-02-01 | 中国工商银行股份有限公司 | 生成交易结果的方法及装置、电子设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
徐进等: "基于消息通信的分布式***最终一致性平台", 《计算机应用》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115622776A (zh) * | 2022-10-08 | 2023-01-17 | 浙江网商银行股份有限公司 | 数据访问方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114172821B (zh) | 2022-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240204978A1 (en) | Interface for digital operator platform including response caching | |
CN103460203B (zh) | 群集唯一标识符 | |
KR101863398B1 (ko) | 다중-서버 예약 시스템 상의 동기화 메커니즘 시스템 및 방법 | |
CN101299754B (zh) | 具有动态用户界面的终端用户控制配置*** | |
US6665674B1 (en) | Framework for open directory operation extensibility | |
CN111078504A (zh) | 一种分布式调用链跟踪方法、装置、计算机设备及存储介质 | |
CN102880475A (zh) | 计算机软件***中基于云计算的实时事件处理***及方法 | |
US9152441B2 (en) | Systems and methods involving virtual machine host isolation over a network via a federated downstream cluster | |
CN111338893A (zh) | 进程日志处理方法、装置、计算机设备以及存储介质 | |
CN112698838B (zh) | 多云容器部署***及其容器部署方法 | |
CN113691635B (zh) | 调用微服务的方法、装置、电子设备和可读存储介质 | |
CN115086176B (zh) | 基于SpringCloud微服务技术实现服务治理策略动态下发的*** | |
CN114172821B (zh) | 服务状态的同步方法、装置及服务器 | |
CN110334147A (zh) | 一种数据同步方法及装置 | |
CN109451078A (zh) | 一种分布式架构下的事务处理方法和装置 | |
CN114448686B (zh) | 一种基于微服务的跨网络通信装置与方法 | |
CN113055461B (zh) | 一种基于ZooKeeper的无人集群分布式协同指挥控制方法 | |
CN104270432B (zh) | 基于钻井行业实时数据服务***及数据交互方法 | |
CN112073212B (zh) | 参数配置方法、装置、终端设备和存储介质 | |
CN112351106A (zh) | 一种含事件网格的服务网格平台及其通信方法 | |
CN111399749B (zh) | 一种数据处理***及方法 | |
CN113032477B (zh) | 基于gtid的长距离数据同步方法、装置及计算设备 | |
CN114968617A (zh) | Api转换***及其访问请求处理方法、电子设备及介质 | |
CN110324425B (zh) | 混合云交易路由处理方法及装置 | |
US7912922B2 (en) | Globally unique instance identification |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |