CN115103008A - 一种服务请求转发系统 - Google Patents
一种服务请求转发系统 Download PDFInfo
- Publication number
- CN115103008A CN115103008A CN202210660981.7A CN202210660981A CN115103008A CN 115103008 A CN115103008 A CN 115103008A CN 202210660981 A CN202210660981 A CN 202210660981A CN 115103008 A CN115103008 A CN 115103008A
- Authority
- CN
- China
- Prior art keywords
- service
- registration center
- public
- api gateway
- request message
- 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
- 230000004044 response Effects 0.000 claims description 47
- 238000000034 method Methods 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 8
- 230000001360 synchronised effect Effects 0.000 abstract description 4
- 230000009471 action Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Images
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/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
Abstract
本申请实施例提供了一种服务请求转发系统,涉及云计算技术领域,该系统包括:公共服务注册中心、独立服务注册中心、同步设备和应用程序编程接口API网关集群,API网关集群中包括多个API网关;公共服务注册中心用于存储已注册的每个服务的服务信息,同步设备用于获取API网关集群所支持的服务,从公共服务注册中心查询API网关集群所支持的服务对应的服务信息,将查询到的各服务的服务信息缓存于独立服务注册中心;API网关集群中的API网关用于从独立服务注册中心查询服务请求所请求的服务对应的服务信息,并基于查询到的服务信息包括的IP地址和端口号向服务器转发服务请求。实现即使公共服务注册中心故障,API网关也能正常转发服务请求。
Description
技术领域
本申请涉及云计算技术领域,特别是涉及一种服务请求转发系统。
背景技术
随着微服务架构的兴起,微服务架构能够提供的服务种类越来越多。当客户端需要请求使用某个服务时,可以向应用程序编程接口(Application ProgrammingInterface,API)网关发送服务请求。API网关接收到服务请求后,从公共服务注册中心查询能够处理该服务请求的服务器信息,并向查询到的服务器转发服务请求,进而服务器接收并响应该服务请求。
由于公共服务注册中心中包含多个服务注册集群,当API网关集群中的API网关接收到针对某一服务的服务请求时,该API网关会请求从API网关集群对应的公共服务注册集群中获取该服务对应的服务器信息,如果该公共服务注册集群从本地查询不到该服务对应的服务器信息,该公共服务注册集群会从其他服务注册集群查询该服务对应的服务器信息,将查询到的服务器信息返回给该API网关。
然而当公共服务注册中心发生故障时,多个服务注册集群之间无法相互查询服务对应的服务器信息。例如,多个服务注册集群之间存在网络故障时,API网关集群对应的公共服务注册集群也就无法从其他公共服务注册集群查询服务对应的服务器信息,进而,导致API网关接收到服务请求时,无法获取服务对应的服务器信息,导致来自客户端的服务请求被转发失败。
发明内容
本申请实施例的目的在于提供一种服务请求转发系统,以实现在公共服务注册中心发生故障时,API网关可以正常查询到服务信息,转发服务请求。具体技术方案如下:
第一方面,本申请实施例提供了一种服务请求转发系统,该系统包括公共服务注册中心、独立服务注册中心、同步设备和应用程序编程接口API网关集群,所述API网关集群中包括多个API网关;
所述公共服务注册中心,用于存储已注册的每个服务的服务信息,所述服务信息包括服务所属服务实例对应的服务器的网际互连协议IP地址和端口号;
所述同步设备,用于获取所述API网关集群所支持的服务,从所述公共服务注册中心查询所述API网关集群所支持的服务对应的服务信息,将查询到的各服务的服务信息缓存于所述独立服务注册中心;
所述独立服务注册中心,用于缓存所述API网关集群所支持的服务的服务信息;
所述API网关集群中的API网关,用于接收客户端发送的服务请求,从所述独立服务注册中心查询所述服务请求所请求的服务对应的服务信息,并基于查询到的服务信息包括的IP地址和端口号向服务器转发所述服务请求。
在一种可能的实现方式中,所述同步设备,还用于将获取到的所述API网关集群所支持的服务存储于服务列表;每隔第一预设时长从所述公共服务注册中心查询一次所述服务列表包括的服务对应的服务信息,并将查询到的各服务的服务信息缓存于所述独立服务注册中心。
在一种可能的实现方式中,所述同步设备,具体用于每隔第一预设时长向所述公共服务注册中心发送一次针对所述服务列表中每一服务的第一查询请求消息,接收所述公共服务注册中心返回的针对每一服务的第一查询响应消息,基于接收到的第一查询响应消息包括的服务信息更新所述独立服务注册中心缓存的服务信息。
在一种可能的实现方式中,所述同步设备,还用于每隔第二预设时长获取一次所述API网关集群所支持的服务,基于获取到的服务更新自身维护的所述API网关集群对应的服务列表,所述第二预设时长大于所述第一预设时长。
在一种可能的实现方式中,所述同步设备,具体用于针对所述服务列表包括的每个服务,与所述公共服务注册中心建立一个长连接,基于长连接监听并获取每个服务更新后的服务信息,并基于获取到的更新后的服务信息更新所述独立服务注册中心缓存的服务信息。
在一种可能的实现方式中,所述同步设备,还用于如果向所述公共服务注册中心发送针对任一服务的第一查询请求消息后,在指定时长内未收到所述公共服务注册中心返回的第一查询响应消息,则暂停每隔第一预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息的操作;在所述服务列表更新后,如果更新后的服务列表中仍存在该服务,则继续每隔第一预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息。
在一种可能的实现方式中,
所述同步设备,还用于如果连续预设次数,从公共服务注册中心接收的针对同一服务的第一查询响应消息包括的服务信息均为空,则将所述第一预设时长增大预设步长,得到第三预设时长,每隔第三预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息;
所述同步设备,还用于循环执行如果连续预设次数,从公共服务注册中心接收的针对该服务的第一查询响应消息包括的服务信息均为空,则将发送针对该服务的第一查询请求消息的时间间隔增大预设步长的过程,直至发送针对该服务的第一查询请求消息的时间间隔增大至预设时长阈值时,每隔所述预设时长阈值向所述公共服务注册中心发送一次针对该服务的第一查询请求消息;或者直至从公共服务注册中心接收的针对该服务的第一查询响应消息包括的服务信息不为空时,恢复至每隔第一预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息。
在一种可能的实现方式中,
所述同步设备,还用于如果将任一服务对应的服务信息保存至独立服务注册中心失败,则暂停每隔第一次预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息的操作;在所述服务列表更新后,如果更新后的服务列表中仍存在该服务,则继续每隔第一预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息,并将查询到的该服务对应的服务信息保存至独立服务注册中心。
在一种可能的实现方式中,所述公共服务注册中心包括多个公共服务注册集群;
所述同步设备,具体用于向所述API网关集群对应的公共服务注册集群发送针对所述API网关集群所支持的每一服务的第一查询请求消息;
所述API网关集群对应的公共服务注册集群,用于接收所述同步设备发送的第一查询请求消息,针对每条第一查询请求消息,从本地查询该第一查询请求消息所请求查询的服务的服务信息;如果从本地未查询到服务信息,则从所述公共服务注册中心包括的其他公共服务注册集群查询该第一查询请求消息所请求查询的服务的服务信息,并向所述同步设备返回针对该第一查询请求消息的第一查询响应消息。
在一种可能的实现方式中,
所述API网关集群中的API网关,具体用于接收客户端发送的服务请求,向独立服务注册中心发送针对所述服务请求的第二查询请求消息;
所述独立服务注册中心,还用于接收所述第二查询请求消息,响应于所述第二查询请求消息,查询所述第二查询请求消息所请求查询的服务的服务信息,并向所述API网关集群中的API网关返回针对所述第二查询请求消息的第二查询响应消息;
所述API网关集群中的API网关,具体用于接收所述独立服务注册中心返回的针对所述第二查询请求消息的第二查询响应消息,获取第二查询响应消息包括的服务信息中的IP地址和端口号,向获取到的IP地址和端口号对应的服务器转发所述服务请求。
采用上述技术方案,同步设备获取API网关集群所支持的服务,从公共服务注册中心查询API网关集群所支持的服务的服务信息,将服务信息缓存在独立服务注册中心,API网关集群中的API网关接收到来自客户端的服务请求时,API网关可以从独立服务注册中心查询该服务请求所请求的服务的服务信息,进而根据服务信息转发该服务请求,即使公共服务注册中心发生故障,也不会影响API网关正常转发服务请求,避免了当公共服务注册中心出现故障时,API网关无法查询服务信息,导致服务请求转发失败的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本申请实施例中提供的一种服务请求转发系统结构示意图;
图2为本申请实施例中提供的另一种服务请求转发系统结构示意图;
图3为本申请实施例中提供的一种服务请求转发方法的交互流程图;
图4为本申请实施例中提供的另一种服务请求转发方法的交互流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请实施例提供了一种服务请求转发系统,如图1所示,该系统包括独立服务注册中心101、同步设备102、公共服务注册中心103和API网关集群104,API网关集群104中包括多个API网关。
公共服务注册中心103,用于存储已注册的每个服务的服务信息,服务信息包括服务所属服务实例对应的服务器的网际互连协议IP地址和端口。
同步设备102,用于获取API网关集群104所支持的服务,从公共服务注册中心103查询API网关集群104所支持的服务对应的服务信息,将查询到的各服务的服务信息缓存于独立服务注册中心101。
独立服务注册中心101,用于缓存API网关集群104所支持的服务的服务信息。
API网关集群104中的API网关,用于接收客户端发送的服务请求,响应于服务请求,从独立服务注册中心101查询服务请求所请求的服务对应的服务信息,并基于查询到的服务信息包括的IP地址和端口号向服务器转发服务请求。
采用本申请实施例,同步设备获取API网关集群所支持的服务,从公共服务注册中心查询API网关集群所支持的服务的服务信息,将服务信息缓存在独立服务注册中心,API网关集群中的API网关接收到来自客户端的服务请求时,API网关可以从独立服务注册中心查询该服务请求所请求的服务的服务信息,进而根据服务信息转发该服务请求,即使公共服务注册中心发生故障,也不会影响API网关正常转发服务请求,避免了当公共服务注册中心出现故障时,API网关无法查询服务信息,导致服务请求转发失败的问题。
上述同步设备102可以为服务器等物理机,也可以为容器云等虚拟机。
API网关集群104所支持的服务的服务名称是预先被配置在API网关集群104中的配置中心的服务列表中的,客户端可通过API网关集群104访问API网关集群中的服务列表包含的服务。
公共服务注册中心103中存储有服务名称与服务信息之间的对应关系,服务信息包含的IP地址和端口号为该服务对应的服务实例所在服务器的IP地址和端口号。
本申请实施例中,当API网关集群104中的API网关接收到客户端发送的服务请求时,可以根据服务请求中包含的URL获得服务请求所请求的服务的服务名称,然后从独立服务注册中心101查询该服务名称对应的服务信息,然后将服务请求的目的IP地址和目的端口号改为查询到的服务信息包含的IP地址和端口号,进而将该服务请求转发到该服务请求对应的服务实例的服务器上。
一种实现方式中,API网关集群104中的API网关具有缓存服务信息的功能,例如,API网关A曾经成功转发过关于服务A的服务请求,则API网关A会缓存有服务A的服务信息,当API网关A再次接收到有关服务A的服务请求时,可以直接根据本地缓存的服务A的服务信息,对该服务请求进行转发。
在本申请另一实施例中,如图2所示,上述公共服务注册中心103包括多个公共服务注册集群,通常情况下API网关集群104是按照地理区域进行配置的,每一地理区域都有一个API网关集群104为该地理区域内的客户端访问服务提供接口。
相应的,在该地理区域内也会设置一个与该地理区域内API网关集群104对应的公共服务注册集群,不同区域内的公共服务注册集群之间可以相互查询服务信息,图2仅以公共服务注册中心103包括4个公共服务注册集群(公共服务注册集群a、公共服务注册集群b、公共服务注册集群c和公共服务注册集群d)为例进行说明,实际公共服务注册集群数量不限于此。图4中,API网关集群104对应的公共服务注册集群为公共注册集群a。
其中,独立服务注册中心101包含一个独立服务注册集群,该独立服务注册集群与公共服务注册集群a的配置一致,且独立服务注册集群在逻辑层面独立,不与任何公共服务注册集群直接产生数据交互。
同步设备102,具体用于向API网关集群104对应的公共服务注册集群a发送针对API网关集群104所支持的每一服务的第一查询请求消息。
其中,第一查询请求消息包含要查询服务信息的服务的服务名称。
API网关集群104对应的公共服务注册集群a,用于接收同步设备102发送的第一查询请求消息,针对每条第一查询请求消息,从本地查询该第一查询请求消息所请求查询的服务的服务信息,如果从本地未查询到服务信息,则从公共服务注册中心103包括的其他公共服务注册集群查询该第一查询请求消息所请求查询的服务的服务信息,并向同步设备102返回针对该第一查询请求消息的第一查询响应消息。
其中,第一查询响应消息包含查询到的服务信息。
本申请实施例中,同步设备102从API网关集群104的配置中心获取包含该API网关集群104的所支持的服务的服务名称的服务列表,并将该服务列表缓存在本地;针对该服务列表上的每一服务,同步设备102会分别发送一个第一查询请求消息到公共服务注册集群a。
例如,同步设备102获取并缓存的服务列表中包含3个服务,分别为服务a、服务b和服务c,则同步设备102将向公共服务注册集群a发送针对服务a的第一查询请求消息a、针对服务b的第一查询请求消息b和针对服务c的第一查询请求消息c。当公共服务注册集群a接收到上述三个第一查询请求消息时,可以从各第一查询请求消息中分别获得各服务的服务名称,查询各服务名称对应的服务信息,向同步设备102返回第一查询响应消息a、第一查询响应消息b和第一查询响应消息c。
如果在公共注册集群a中没有保存有与服务a的服务名称相对应的服务信息,则公共注册集群会向图2中其他三个公共服务注册集群查询服务a的服务名称对应的服务信息,进而,将包含查询到服务信息的第一查询响应消息返回到同步设备102。
在本申请另一实施例中,API网关集群104中的API网关,具体用于接收客户端发送的服务请求,向独立服务注册中心101发送针对服务请求的第二查询请求消息。
独立服务注册中心101,还用于接收第二查询请求消息,响应于第二查询请求消息,查询第二查询请求消息所请求查询的服务的服务信息,并向API网关集群104中的API网关返回针对第二查询请求消息的第二查询响应消息。
API网关集群104中的API网关,具体用于接收独立服务注册中心101返回的针对第二查询请求消息的第二查询响应消息,并根据第二查询响应消息包括的服务信息包括的IP地址和端口号转发服务请求。
本申请实施例中,当API网关集群104中的API网关接收到服务请求时,可以根据服务请求包含的url获取到该服务请求所请求的服务的服务名称,然后可以向独立服务注册中心101发送包含该服务名称的第二查询请求消息。
进而,当独立服务注册中心101接收到该第二查询请求消息时,可以查询第二查询请求消息中的服务名称对应的服务信息,并向API网关集群104中的API网关返回包含该服务信息的第二查询响应消息。
在本申请另一实施例中,由于公共服务注册中心103存储的服务信息可能会被更新,为了实时获取每一服务对应的更新后的服务信息,同步设备102可以通过定时轮询的方式查询服务信息。
即,同步设备102,还用于将获取到的API网关集群104所支持的服务存储于服务列表;每隔第一预设时长从公共服务注册中心103查询一次服务列表包括的服务对应的服务信息,并将查询到的各服务的服务信息缓存于独立服务注册中心101。
同步设备102,具体用于每隔第一预设时长向公共服务注册中心103发送针对服务列表中每一服务的第一查询请求消息,接收公共服务注册中心103返回的针对每一服务的第一查询响应消息,基于接收到的第一查询响应消息包括的服务信息更新独立服务注册中心101缓存的服务信息。
其中,第一预设时长可以由技术人员根据实际需要预先设置,例如,可以设置为10s。
采用本申请实施例,每隔第一预设时长查询一次该服务列表包括的服务应的服务信息,保存在独立服务注册中心,使得在服务注册中心中的服务信息的更新时,API网关集群中的API网关可以在独立服务注册中心查询到更新后的服务信息,进而,API网关能够以更新后的服务信息转发服务请求,提高了API网关转发服务请求的成功率。
或者,同步设备102还可以通过长连接监控的方式从公共服务注册中心103查询服务信息。
同步设备102,还用于将获取到的API网关集群104所支持的服务存储于服务列表,针对服务列表包括的每个服务,与公共服务注册中心103建立一个长连接,基于长连接监听并获取每个服务更新后的服务信息,并基于获取到的更新后的服务信息更新独立服务注册中心101缓存的服务信息。
例如,同步设备102获取并缓存的服务列表中包含3个服务,分别为服务a、服务b和服务c,则同步设备102将分别针对服务a、服务b和服务c与公共服务注册中心103建立长连接a、长连接b和长连接c,假设服务a在公共服务注册中心103中的服务信息发生了更新,则同步设备102会通过长连接a监听到该更新动作,进而,同步设备102会向公共服务注册中心103请求获取服务a更新后的服务信息,同步设备102在获取到服务a更新后的服务信息后,会将服务a更新后的服务信息更新到独立服务注册中心101中。
采用本申请实施例,通过针对服务列表包括的每个服务,与公共服务注册中心建立一个长连接,基于长连接监听并获取每个服务更新后的服务信息,即服务列表上的服务的服务信息更新时,公共服务注册中心会将更新后的服务信息返回到同步设备,同步设备会将更新后的服务信息更新到独立服务注册中心,也就实现了独立服务注册中心的服务信息与公共服务注册中心中对应的服务信息始终保持一致,使得API网关集群中的API网关可以正常查询服务信息发生更新的服务的服务信息,进而,可以成功转发服务请求,提高了服务请求转发成功率。
在本申请另一实施例中,由于API网关集群104所支持的服务可以由用户进行配置,为了使同步设备102中的服务列表包含的服务与当前API网关集群104所支持的服务一致,在上述实施例的基础上,同步设备102,还用于每隔第二预设时长获取一次API网关集群104所支持的服务,基于获取到的服务更新自身维护的API网关集群104对应的服务列表,其中第二预设时长大于第一预设时长。
本申请实施例中,第二预设时长可以由技术人员根据实际需要进行设置,通常API网关集群104支持的服务可以由用户进行配置,但实际应用中用户不会频繁的配置API网关集群104支持的服务,但服务对应的服务信息会频繁的变化,所以第二预设时长大于第一预设时长。
例如,第二预设时长可以设置为30秒,当第一预设时长设置为10秒时,则同步设备102每隔30秒获取一次API网关集群104中所支持的服务,每次获取服务时,以该次获取到的服务为准,与API网关集群104缓存的服务列表中的服务进行比较,删去服务列表中多余的服务,添加服务列表中没有的服务。
同步设备102每隔10秒从公共服务注册中心103查询一次该服务列表包括的服务对应的服务信息并保存到独立服务注册中心101。
需要说明的是,同步设备102在任一第二预设时长后,如果获取API网关集群104中所支持的服务失败,下一第二预设时长后,同步设备102会继续获取API网关集群104中所支持的服务。
在本申请另一实施例中,由于同步设备102和公共服务注册中心103之间通过网络连接,可能会存在网络波动等故障,所以同步设备102发送针对任一服务的第一查询请求消息后,公共服务注册中心103可能无法接收到第一查询请求消息,或者同步设备102在指定时长内无法接收到公共服务注册中心103返回的第一查询响应消息。
所以同步设备102,还用于如果向公共服务注册中心103发送针对任一服务的第一查询请求消息后,在指定时长内未收到公共服务注册中心103返回的第一查询响应消息,则暂停每隔第二预设时长向公共服务注册中心103发送一次针对该服务的第一查询请求消息的操作;在服务列表更新后,如果更新后的服务列表中仍存在该服务,则继续每隔第二预设时长向公共服务注册中心103发送一次针对该服务的第一查询请求消息。
其中,指定时长可以由技术人员根据实际场景进行设置,例如指定时长可以设置为1s。
采用本申请实施例,同步设备在发送针对任一服务的第一查询请求消息后,如果在指定时长内未收到公共服务注册中心返回的第一查询响应消息,则暂停每隔第一预设时长向公共服务注册中心发送一次针对该服务的第一查询请求消息的操作,如此同步设备无需反复发送针对该服务的无回复的第一查询请求消息,节省了网络资源。
在本申请另一实施例中,API网关集群104所支持的服务中可能会存在冷服务,冷服务指该服务长时间没有被调用过,那么冷服务在公共服务注册中心103中的服务信息是空的。
同时,针对于冷服务,如果技术人员重新启用了该服务,即在公共服务注册中心103重新注册了该服务的服务信息,那么根据该重新注册后的服务信息,冷服务可以重新被正常调用。
同步设备102,还用于如果连续预设次数,从公共服务注册中心103接收的针对同一服务的第一查询响应消息包括的服务信息均为空,则将第一预设时长增大预设步长,得到第三预设时长,每隔第三预设时长向公共服务注册中心103发送一次针对该服务的第一查询请求消息。
同步设备102,还用于循环执行如果连续预设次数,从公共服务注册中心103接收的针对该服务的第一查询响应消息包括的服务信息均为空,则将发送针对该服务的第一查询请求消息的时间间隔增大预设步长的过程,直至发送针对该服务的第一查询请求消息的时间间隔增大至预设时长阈值时,每隔预设时长阈值向公共服务注册中心103发送一次针对该服务的第一查询请求消息;或者直至从公共服务注册中心103接收的针对该服务的第一查询响应消息包括的服务信息不为空时,恢复至每隔第一预设时长向公共服务注册中心103发送针对该服务的第一查询请求消息。
上述连续预设次数、预设步长和预设时长阈值可以由技术人员进行设置,例如,连续预设次数可以被设置为连续10次,预设步长可以被设置为5秒,预设时长阈值可以被设置为60秒,假设第二预设时长为10秒。
则同步设备102每隔10秒向公共服务注册中心103发送针对任一服务的第一查询请求消息,当同步设备102连续10次发送了针对该服务的第一查询请求消息,且连续10次接收的针对该服务的第一查询响应消息包括的服务信息均为空,则将发送针对该服务的第一查询请求消息的第一预设时长10秒增加预设步长5秒,得到第三预设时长为15秒,后续同步设备102将每隔15秒向公共服务注册中心103发送针对该服务的第一查询请求消息,假设又连续10次接收的针对该服务的第一查询响应消息包括的服务信息均为空,则继续将第三预设时长15秒增大预设步长5秒,为20秒,循环执行上述过程,直至发送针对该服务的第一查询请求消息的时间间隔增大至预设时长阈值60秒,则后续每隔60秒向公共服务注册中心103发送针对该服务的第一查询请求消息。
或者,直至同步设备102从公共服务注册中心103接收的针对该服务的第一查询响应消息包括的服务信息不为空时,恢复至每隔第一预设时长10秒向公共服务注册中心103发送针对该服务的第一查询请求消息。
采用本申请实施例,对于在连续预设次数,从公共服务注册中心接收的针对同一服务的第一查询响应消息包括的服务信息均为空的情况,将第二预设时长增大预设步长,循环执行此步骤,使得在任一服务的服务信息一直为空的情况下,同步设备可以逐渐增大查询服务信息为空的服务的服务信息的时间间隔,避免了反复查询服务信息为空的服务的服务信息,节省了网络资源,提高了其他服务的服务信息的同步效率,减少了非必要同步。
在本申请另一实施例中,同步设备102和独立服务注册中心101之间通过网络连接,当网络存在故障时,同步设备102,还用于如果将任一服务对应的服务信息保存至独立服务注册中心101失败,则暂停每隔第二预设时长向公共服务注册中心103发送一次针对该服务的第一查询请求消息的操作;在服务列表更新后,如果更新后的服务列表中仍存在该服务,则继续每隔第二预设时长向公共服务注册中心103发送一次针对该服务的第一查询请求消息,并将查询到的该服务对应的服务信息保存至独立服务注册中心101。
在本申请实施例中,同步设备102会缓存有与独立服务注册中心101一致的服务信息,当同步设备102接收公共服务注册中心103返回的服务列表中任一服务的服务信息时,同步设备102会将此次接收到的该服务的服务信息与本地缓存的该服务的服务信息进行比较,如果不一致,则同步设备102会以此次接收到的该服务的服务信息为准,更新缓存的该服务的服务信息,并向独立服务注册中心101发送包含该服务的服务信息的保存请求消息。
如果在指定时长内,同步设备102没有接收到独立服务注册中心101返回的保存响应消息,则确定服务信息保存失败,此时同步设备102会暂停每隔第一预设时长向公共服务注册中心103发送一次针对该服务的第一查询请求消息的操作,在服务列表更新后,如果更新后的服务列表中仍存在该服务,则继续每隔第一预设时长向公共服务注册中心103发送一次针对该服务的第一查询请求消息,并将查询到的该服务对应的服务信息保存至独立服务注册中心101。
采用本申请实施例,当同步设备将查询到的服务的服务信息保存至独立服务注册中心失败时,则暂停每隔第二预设时长向公共服务注册中心发送一次针对该服务的第一查询请求消息的操作,使得同步设备不会反复向公共服务注册中心查询可能会保存失败的服务信息,节省了网络资源,提高了其他服务的服务信息的同步效率,减少了非必要同步。
对应于上述系统实施例,本申请实施例还提供了一种服务请求转发方法,该方法应用于上述服务请求转发系统,如图3所示,该方法包括:
S301、同步设备获取API网关集群所支持的服务。
S302、同步设备从公共服务注册中心查询API网关集群所支持的服务对应的服务信息,服务信息包括服务所属服务实例对应的服务器的IP地址和端口号。
S303、同步设备将查询到的各服务的服务信息缓存于独立服务注册中心。
S304、API网关集群中的API网关接收到客户端发送的服务请求时,从独立服务注册中心查询服务请求所请求的服务对应的服务信息。
S305、API网关集群基于查询到的服务信息包括的IP地址和端口号向服务器转发服务请求。
采用本申请实施例,同步设备获取API网关集群所支持的服务,从公共服务注册中心查询API网关集群所支持的服务的服务信息,将服务信息缓存在独立服务注册中心,API网关集群中的API网关接收到来自客户端的服务请求时,API网关可以从独立服务注册中心查询该服务请求所请求的服务的服务信息,进而根据服务信息转发该服务请求,即使公共服务注册中心发生故障,也不会影响API网关正常转发服务请求,避免了当公共服务注册中心出现故障时,API网关无法查询服务信息,导致服务请求转发失败的问题。
本申请实施例还提供了一种服务请求转发方法,如图4所示,该方法应用于上述服务请求转发系统,下面结合图4进行说明。
S401、同步设备获取API网关集群所支持的服务,存储于服务列表中。
S402、同步设备每隔第二预设时长获取一次API网关集群所支持的服务,基于获取到的服务更新自身维护的API网关集群对应的服务列表。
S403、同步设备每隔第一预设时长向公共服务注册中心发送一次针对服务列表中每一服务的第一查询请求消息。相应地,公共服务注册接收同步设备发送的第一查询请求消息。
S404、公共服务注册中心向同步设备发送的针对每一服务的第一查询响应消息。相应地,同步设备接收公共服务注册中心发送的第一查询响应消息。
S405、同步设备基于接收到的第一查询响应消息包括的服务信息更新独立服务注册中心缓存的服务信息。
采用本申请实施例,通过每隔第二预设时长获取一次API网关集群所支持的服务,然后更新自身维护的API网关集群对应的服务列表,使得同步设备维护的服务列表中的服务与API网关集群所支持的服务一致;每个第一预设时长服务列表包括的服务对应的服务信息,保存在独立服务注册中心,也就使得API网关集群所支持的服务的服务信息都缓存与独立服务注册中心,API网关集群从独立服务注册中心查询得到服务信息与从公共服务注册中心查询到的服务信息一致,使得API网关能够成功转发服务请求。
一种实施方式中,技术人员通过将API网关集群中配置的公共服务注册集群的IP地址更改为独立服务注册集群的IP地址,使得API网关集群中的API网关节点在接收到服务请求时,可以从独立服务注册集群查询服务信息。
如此实现了即使在公共服务注册中心不可用,即公共服务注册中心中的多个公共服务注册集群无法相互查询服务信息时,独立服务注册中心依然能以故障前的服务信息状态向API网关提供查询,使得API网关查询服务信息的过程实现可靠降级,进而,API网关可以成功转发服务请求。
在现有技术中可以对API网关集群对应的公共服务注册集群进行备份,在公共服务注册中心故障时,对于没有保存在API网关集群对应的公共服务注册集群的服务信息的服务,API网关依然无法从备份的公共服务注册集群获取该服务的服务信息,而采用本申请实施例可以达到API网关从独立服务注册中心查询服务信息的结果与从公共服务注册中心查询服务信息的结果一致的效果。
其中,服务请求转发方法与上述服务请求转发系统是基于同一申请构思的,由于方法和系统解决问题的原理相似,因此方法和系统的实施可以相互参见,重复之处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于系统实施例,所以描述的比较简单,相关之处参见系统实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (10)
1.一种服务请求转发系统,其特征在于,所述系统包括公共服务注册中心、独立服务注册中心、同步设备和应用程序编程接口API网关集群,所述API网关集群中包括多个API网关;
所述公共服务注册中心,用于存储已注册的每个服务的服务信息,所述服务信息包括服务所属服务实例对应的服务器的网际互连协议IP地址和端口号;
所述同步设备,用于获取所述API网关集群所支持的服务,从所述公共服务注册中心查询所述API网关集群所支持的服务对应的服务信息,将查询到的各服务的服务信息缓存于所述独立服务注册中心;
所述独立服务注册中心,用于缓存所述API网关集群所支持的服务的服务信息;
所述API网关集群中的API网关,用于接收客户端发送的服务请求,从所述独立服务注册中心查询所述服务请求所请求的服务对应的服务信息,并基于查询到的服务信息包括的IP地址和端口号向服务器转发所述服务请求。
2.根据权利要求1所述的系统,其特征在于,
所述同步设备,还用于将获取到的所述API网关集群所支持的服务存储于服务列表;每隔第一预设时长从所述公共服务注册中心查询一次所述服务列表包括的服务对应的服务信息,并将查询到的各服务的服务信息缓存于所述独立服务注册中心。
3.根据权利要求2所述的系统,其特征在于,
所述同步设备,具体用于每隔第一预设时长向所述公共服务注册中心发送一次针对所述服务列表中每一服务的第一查询请求消息,接收所述公共服务注册中心返回的针对每一服务的第一查询响应消息,基于接收到的第一查询响应消息包括的服务信息更新所述独立服务注册中心缓存的服务信息。
4.根据权利要求3所述的系统,其特征在于,
所述同步设备,还用于每隔第二预设时长获取一次所述API网关集群所支持的服务,基于获取到的服务更新自身维护的所述API网关集群对应的服务列表,所述第二预设时长大于所述第一预设时长。
5.根据权利要求1所述的系统,其特征在于,
所述同步设备,具体用于针对所述服务列表包括的每个服务,与所述公共服务注册中心建立一个长连接,基于长连接监听并获取每个服务更新后的服务信息,并基于获取到的更新后的服务信息更新所述独立服务注册中心缓存的服务信息。
6.根据权利要求4所述的系统,其特征在于,
所述同步设备,还用于如果向所述公共服务注册中心发送针对任一服务的第一查询请求消息后,在指定时长内未收到所述公共服务注册中心返回的第一查询响应消息,则暂停每隔第一预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息的操作;在所述服务列表更新后,如果更新后的服务列表中仍存在该服务,则继续每隔第一预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息。
7.根据权利要求3或4所述的系统,其特征在于,
所述同步设备,还用于如果连续预设次数,从公共服务注册中心接收的针对同一服务的第一查询响应消息包括的服务信息均为空,则将所述第一预设时长增大预设步长,得到第三预设时长,每隔第三预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息;
所述同步设备,还用于循环执行如果连续预设次数,从公共服务注册中心接收的针对该服务的第一查询响应消息包括的服务信息均为空,则将发送针对该服务的第一查询请求消息的时间间隔增大预设步长的过程,直至发送针对该服务的第一查询请求消息的时间间隔增大至预设时长阈值时,每隔所述预设时长阈值向所述公共服务注册中心发送一次针对该服务的第一查询请求消息;或者直至从公共服务注册中心接收的针对该服务的第一查询响应消息包括的服务信息不为空时,恢复至每隔第一预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息。
8.根据权利要求4所述的系统,其特征在于,
所述同步设备,还用于如果将任一服务对应的服务信息保存至独立服务注册中心失败,则暂停每隔第一次预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息的操作;在所述服务列表更新后,如果更新后的服务列表中仍存在该服务,则继续每隔第一预设时长向所述公共服务注册中心发送一次针对该服务的第一查询请求消息,并将查询到的该服务对应的服务信息保存至独立服务注册中心。
9.根据权利要求1所述的系统,其特征在于,所述公共服务注册中心包括多个公共服务注册集群;
所述同步设备,具体用于向所述API网关集群对应的公共服务注册集群发送针对所述API网关集群所支持的每一服务的第一查询请求消息;
所述API网关集群对应的公共服务注册集群,用于接收所述同步设备发送的第一查询请求消息,针对每条第一查询请求消息,从本地查询该第一查询请求消息所请求查询的服务的服务信息;如果从本地未查询到服务信息,则从所述公共服务注册中心包括的其他公共服务注册集群查询该第一查询请求消息所请求查询的服务的服务信息,并向所述同步设备返回针对该第一查询请求消息的第一查询响应消息。
10.根据权利要求1所述的系统,其特征在于,
所述API网关集群中的API网关,具体用于接收客户端发送的服务请求,向独立服务注册中心发送针对所述服务请求的第二查询请求消息;
所述独立服务注册中心,还用于接收所述第二查询请求消息,响应于所述第二查询请求消息,查询所述第二查询请求消息所请求查询的服务的服务信息,并向所述API网关集群中的API网关返回针对所述第二查询请求消息的第二查询响应消息;
所述API网关集群中的API网关,具体用于接收所述独立服务注册中心返回的针对所述第二查询请求消息的第二查询响应消息,获取第二查询响应消息包括的服务信息中的IP地址和端口号,向获取到的IP地址和端口号对应的服务器转发所述服务请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210660981.7A CN115103008B (zh) | 2022-06-13 | 2022-06-13 | 一种服务请求转发系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210660981.7A CN115103008B (zh) | 2022-06-13 | 2022-06-13 | 一种服务请求转发系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115103008A true CN115103008A (zh) | 2022-09-23 |
CN115103008B CN115103008B (zh) | 2024-03-08 |
Family
ID=83290048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210660981.7A Active CN115103008B (zh) | 2022-06-13 | 2022-06-13 | 一种服务请求转发系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115103008B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115834668A (zh) * | 2022-11-08 | 2023-03-21 | 中国工商银行股份有限公司 | 集群节点控制方法、装置、设备、存储介质和程序产品 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105515759A (zh) * | 2015-11-27 | 2016-04-20 | 国网信息通信产业集团有限公司 | 一种微服务注册方法及系统 |
WO2017185961A1 (zh) * | 2016-04-26 | 2017-11-02 | 中兴通讯股份有限公司 | 一种服务发现的处理方法及装置 |
CN107948284A (zh) * | 2017-11-24 | 2018-04-20 | 泰康保险集团股份有限公司 | 一种基于微服务架构的服务下线方法、设备和系统 |
CN110120961A (zh) * | 2018-02-06 | 2019-08-13 | 北京京东尚科信息技术有限公司 | 一种分布式服务集群及其路由同步的方法 |
WO2019178761A1 (zh) * | 2018-03-21 | 2019-09-26 | 华为技术有限公司 | 应用编程接口api网关集群的控制方法和api网关集群 |
CN110365750A (zh) * | 2019-06-25 | 2019-10-22 | 苏宁云计算有限公司 | 服务注册系统及方法 |
CN110381163A (zh) * | 2019-07-30 | 2019-10-25 | 普信恒业科技发展(北京)有限公司 | 网关节点转发服务请求的方法及网关节点 |
WO2020083189A1 (zh) * | 2018-10-24 | 2020-04-30 | 北京金山云网络技术有限公司 | 一种请求处理方法、装置及api网关和可读存储介质 |
CN112087333A (zh) * | 2020-09-07 | 2020-12-15 | 上海浦东发展银行股份有限公司 | 一种微服务注册中心集群及其信息处理方法 |
CN112738184A (zh) * | 2020-12-24 | 2021-04-30 | 上海家睦网络科技有限公司 | 一种插件式动态注册分布式微服务网关系统 |
US20210336788A1 (en) * | 2020-04-24 | 2021-10-28 | Netapp, Inc. | Management services api gateway |
CN114338783A (zh) * | 2021-11-08 | 2022-04-12 | 浙江高信技术股份有限公司 | 基于技术中台的api管理平台及其管理方法 |
US20220166712A1 (en) * | 2020-11-23 | 2022-05-26 | Intuit Inc. | Edge routing by leaf systems in an api gateway |
-
2022
- 2022-06-13 CN CN202210660981.7A patent/CN115103008B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105515759A (zh) * | 2015-11-27 | 2016-04-20 | 国网信息通信产业集团有限公司 | 一种微服务注册方法及系统 |
WO2017185961A1 (zh) * | 2016-04-26 | 2017-11-02 | 中兴通讯股份有限公司 | 一种服务发现的处理方法及装置 |
CN107948284A (zh) * | 2017-11-24 | 2018-04-20 | 泰康保险集团股份有限公司 | 一种基于微服务架构的服务下线方法、设备和系统 |
CN110120961A (zh) * | 2018-02-06 | 2019-08-13 | 北京京东尚科信息技术有限公司 | 一种分布式服务集群及其路由同步的方法 |
WO2019178761A1 (zh) * | 2018-03-21 | 2019-09-26 | 华为技术有限公司 | 应用编程接口api网关集群的控制方法和api网关集群 |
WO2020083189A1 (zh) * | 2018-10-24 | 2020-04-30 | 北京金山云网络技术有限公司 | 一种请求处理方法、装置及api网关和可读存储介质 |
CN110365750A (zh) * | 2019-06-25 | 2019-10-22 | 苏宁云计算有限公司 | 服务注册系统及方法 |
CN110381163A (zh) * | 2019-07-30 | 2019-10-25 | 普信恒业科技发展(北京)有限公司 | 网关节点转发服务请求的方法及网关节点 |
US20210336788A1 (en) * | 2020-04-24 | 2021-10-28 | Netapp, Inc. | Management services api gateway |
CN112087333A (zh) * | 2020-09-07 | 2020-12-15 | 上海浦东发展银行股份有限公司 | 一种微服务注册中心集群及其信息处理方法 |
US20220166712A1 (en) * | 2020-11-23 | 2022-05-26 | Intuit Inc. | Edge routing by leaf systems in an api gateway |
CN112738184A (zh) * | 2020-12-24 | 2021-04-30 | 上海家睦网络科技有限公司 | 一种插件式动态注册分布式微服务网关系统 |
CN114338783A (zh) * | 2021-11-08 | 2022-04-12 | 浙江高信技术股份有限公司 | 基于技术中台的api管理平台及其管理方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115834668A (zh) * | 2022-11-08 | 2023-03-21 | 中国工商银行股份有限公司 | 集群节点控制方法、装置、设备、存储介质和程序产品 |
CN115834668B (zh) * | 2022-11-08 | 2024-05-07 | 中国工商银行股份有限公司 | 集群节点控制方法、装置、设备、存储介质和程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN115103008B (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109618005B (zh) | 调用服务器的方法和代理服务器 | |
CN111615066B (zh) | 一种基于广播的分布式微服务注册及调用方法 | |
CN106657287B (zh) | 一种数据访问方法及系统 | |
US9130954B2 (en) | Distributed health check for global server load balancing | |
US7676812B2 (en) | Large scale event notification system | |
US20060246880A1 (en) | Methods, systems, and computer program products for dynamically coordinating collection and distribution of presence information | |
US7159034B1 (en) | System broadcasting ARP request from a server using a different IP address to balance incoming traffic load from clients via different network interface cards | |
US7441035B2 (en) | Reliable server pool | |
CN111787079A (zh) | 基于通信群组的通信方法、装置、服务器、系统及介质 | |
US7260602B2 (en) | System and method of network content location for roaming clients | |
CN112543212B (zh) | 一种为分布式服务提供请求响应确切通信时延保障的系统 | |
CN115103008B (zh) | 一种服务请求转发系统 | |
CN112671554A (zh) | 一种节点故障处理方法及相关装置 | |
KR20110063328A (ko) | 물리적 인터페이스 질의 및 선택을 갖는 원격 프로지져 로출(rpc) 바인드 서비스 | |
CN108337280B (zh) | 一种资源更新方法及装置 | |
CN106878475B (zh) | 域名寻址方法和系统 | |
US8402124B1 (en) | Method and system for automatic load balancing of advertised services by service information propagation based on user on-demand requests | |
US20230146880A1 (en) | Management system and management method | |
JP2000200245A (ja) | 情報利用システム及び情報利用方法 | |
CN111835858B (zh) | 设备接入方法、设备及系统 | |
JP2023547880A (ja) | バックアップネットワーク機能を提供するためのネットワークノードおよびネットワークノードにおける方法 | |
KR101659579B1 (ko) | 퍼블리쉬-서브스크라이브 방식을 이용한 서버 다중화 서비스 제공장치 및 그 방법 | |
CN113824751A (zh) | 一种传输数据的方法和数据传输系统 | |
US20230370332A1 (en) | Computer system and communication method | |
CN113542319A (zh) | 用于Dubbo框架中的服务提供实体变更通知方法、装置及系统 |
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 |