CN110944044B - 一种分布式api网关***及其实现方法 - Google Patents

一种分布式api网关***及其实现方法 Download PDF

Info

Publication number
CN110944044B
CN110944044B CN201911142448.6A CN201911142448A CN110944044B CN 110944044 B CN110944044 B CN 110944044B CN 201911142448 A CN201911142448 A CN 201911142448A CN 110944044 B CN110944044 B CN 110944044B
Authority
CN
China
Prior art keywords
api
service
request
computing node
node
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.)
Active
Application number
CN201911142448.6A
Other languages
English (en)
Other versions
CN110944044A (zh
Inventor
刘忻
袁龙浩
徐桂煜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Bingo Software Co Ltd
Original Assignee
Guangzhou Bingo Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Bingo Software Co Ltd filed Critical Guangzhou Bingo Software Co Ltd
Priority to CN201911142448.6A priority Critical patent/CN110944044B/zh
Publication of CN110944044A publication Critical patent/CN110944044A/zh
Application granted granted Critical
Publication of CN110944044B publication Critical patent/CN110944044B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种分布式API网关***及其实现方法。该分布式API网关***包括:API网关,用于接收服务请求并提供与该计算节点的与该服务请求对应的API服务;负载均衡器,与所述计算节点的API网关连接,所述负载均衡器包括状态关系表,在接收到服务请求时,所述负载均衡器根据所述API服务与所述计算节点的对应关系将所述服务请求转发至与该服务请求对应的计算节点。上述的分布式API网关***及其实现方法在负载均衡器接收到API服务的请求后,根据所述API服务与所述计算节点的对应关系将所述服务请求转发至与该服务请求对应的计算节点的API网关,不再需要在计算节点间再次转发该API服务的请求,从而可以有效降低跨节点网络流量开销,提高了网络服务效率。

Description

一种分布式API网关***及其实现方法
技术领域
本发明属于网络通信领域,尤其涉及一种分布式API网关***及其实现方法。
背景技术
API Gateway(API GW/API网关)在***边界上提供给外部访问内部接口服务的统一入口,封装了***的内部架构和实现细节,对外提供访问后端***服务的能力,所有要调用后台服务的***都需要通过API网关进行访问,基于这种方式网关可以对API进行统一管控,例如:认证、鉴权、流量控制、协议转换、监控等等。API网关接收客户端的所有请求,然后根据一定的策略和路由,将请求转发到相应的后端***服务上。
在云计算场景下,随着***规模的不断扩大,后端服务数量的不断增加,单节点的API网关难以承担大流量的访问需求,很容易出现性能瓶颈,同时单节点也无法保证高可用,一旦网关崩溃,带来的是整个***架构的雪崩。
API网关集群可避免单点故障带来的问题,同时可以应对大流量访问。图1是目前业界通用的API网关集群的结构。如图1所示,通过在***服务的上层部署多节点的API网关实例形成集群。在这样的模式下,API网关在处理北向流量的时候,即当某一个API网关节点在转发来自客户端的请求时,目标服务的位置可能和API网关并不运行在同一个计算节点上,这个时候网关的转发会造成不必要的跨节点网络开销。
同时,东西向流量访问过程中,如果所访问的目标服务与请求者不在同一个VPC云网络空间下,若目标服务登记到API网关的地址是私有地址,则会造成目标服务无法访问的情况;若登记到API网关的地址是公有地址,则还需通过地址转换和多重转发,这样就延长了网络传输路径,也会产生多余的网络开销,这些网络开销在一定程度上造成了API请求处理的延迟和API网关性能的损耗。
发明内容
为了解决现有技术存在的问题,本发明的目的在于提供一种分布式API网关***及其实现方法,旨在降低API网关转发API服务的请求转发量。
一种分布式API网关***,包括:
API网关,设于计算节点,用于接收API服务的请求并提供与该计算节点的与该请求对应的API服务;
负载均衡器,与所述计算节点的API网关连接,所述负载均衡器包括状态关系表,所述状态关系表包含API服务与计算节点的对应关系;
在接收到API服务的请求时,所述负载均衡器根据所述API服务与所述计算节点的对应关系将所述请求转发至与该API服务对应的计算节点。
优选地,所述计算节点的节点控制器周期性地检测该计算节点的API服务的信息,并将该API服务和计算节点的信息推送至所述负载均衡器,所述负载均衡器将该API服务的信息和计算节点的信息整合形成所述对应关系。
优选地,所述计算节点的节点控制器通过该计算节点的API网关获取的外部请求路径和与该外部请求路径对应的API服务,得到属于本计算节点的API服务的信息。
优选地,所述API服务的请求包含请求路径,所述负载均衡器根据所述请求路径获得请求的API服务,并根据该API服务将所述服务请求转发至与该服务请求对应的计算节点。
优选地,所述计算节点还包括SDN控制器,所述SDN控制器与所述API网关连接;
在所述API网关向其他API网关转发服务请求时,所述API网关从所述SDN控制器通过虚拟私有云的端点功能获取该服务请求对应的计算机节点后,将所述服务请求转发至该服务请求对应的计算节点。
一种分布式API网关实现方法,包括以下步骤:
负载均衡器接收API服务的请求;
负载均衡器根据所述API服务的请求,从状态关系表中查找与该API服务对应的计算节点,其中,所述状态关系表包含API服务与计算节点的对应关系;
负载均衡器将该API服务的请求转发至查找的计算节点。
优选地,还包括维护该状态关系表的步骤,所述维护该状态关系表的步骤包括:
所述计算节点的节点控制器周期性地检测该计算节点的API服务的信息,并将该API服务和计算节点的信息推送至所述负载均衡器;
所述负载均衡器将该API服务的信息和计算节点的信息整合形成所述对应关系。
优选地,所述计算节点的节点控制器检测该计算节点的API服务的信息包括:
所述计算节点的节点控制器通过该计算节点的API网关获取的外部请求路径和与该外部请求路径对应的API服务,得到属于本计算节点的API服务的信息。
优选地,所述API服务的请求包含请求路径,所述负载均衡器根据所述请求路径获得请求的API服务,并根据该API服务将所述服务请求转发至与该API服务对应的计算节点。
优选地,还包括:
在所述API网关向其他API网关转发服务请求时,所述API网关从该计算节点的SDN控制器通过虚拟私有云的端点功能获取该API服务对应的计算机节点;
所述API网关将所述服务请求转发至该服务请求对应的计算节点。
与现有技术相比,上述的分布式API网关***及其实现方法在负载均衡器接收到API服务的请求后,根据所述API服务与所述计算节点的对应关系将所述服务请求转发至与该服务请求对应的计算节点的API网关,不再需要在计算节点间再次转发该API服务的请求,从而可以有效降低跨节点网络流量开销,提高了网络服务效率。
附图说明
图1是现有API网关集群架构的结构示意图。
图2是分布式API网关***的结构示意图。
图3是分布式API网关***对南北向流量的实现方法的流程图。
图4是分布式API网关***对东西向流量的实现方法的流程图。
10-负载均衡器;11-状态关系表;20-计算节点;21-API网关;22-SDN控制器。
具体实施方式
下面结合附图,对本发明做进一步说明。
图2是分布式API网关***的结构示意图。如图2所示,该分布式API网关***包括负载均衡器10和多个计算节点20,负载均衡器10与多个计算节点20连接通信。在负载均衡器10收到客户端的服务请求后,负载均衡器10将该服务请求转发至相应的计算节点20。计算节点20响应该服务请求,并通过该负载均衡器10转发至客户端。
所述计算节点20内设有API网关21和SDN控制器(软件定义网络,SoftwareDefined Network(SDN))22。该API网关21用于接收负载均衡器10转发的服务请求或者在计算节点20接收到服务请求后,通过该API网关21经负载均衡器10响应客户端的服务请求,向该客户端提供与该服务请求对应的API服务。API网关21之间的数据一致性通过云存储的分布式数据一致来保证。
负载均衡器10与所述计算节点20的API网关21连接,负载均衡器10接收流量然后转发到各个API网关21上。其中,所述负载均衡器10包括状态关系表11,所述状态关系表11包含API服务与计算节点20的对应关系。本实施方式中,计算节点20上的节点控制器同负载均衡器10维护着API网关21和后端服务的状态和关系的状态关系表11,负载均衡器10在转发请求的时候通过该状态关系表11将请求转发到后端服务对应所处同个计算节点20的API网关21。具体的,所述计算节点20的节点控制器周期性通过该计算节点20的API网关21获取的外部请求路径和与该外部请求路径对应的API服务,得到属于本计算节点20的API服务的信息,然后,节点控制器将API服务的信息和计算节点20的信息整合形成所述对应关系。API服务的请求包含有请求路径,在负载均衡器10接收到API服务的请求后,所述负载均衡器10根据所述请求路径获得请求的API服务,并根据该API服务将所述服务请求转发至与该服务请求对应的计算节点20。
所述SDN控制器22与所述API网关21连接。在所述API网关21可以向其他API网关21转发服务请求,所述API网关21从所述SDN控制器22通过虚拟私有云的端点功能获取该服务请求对应的计算机节点后,将所述服务请求转发至该服务请求对应的计算节点20。当提供API网关21的服务间相互访问时,SDN控制器22提供的VPC端点的能力能够直接将请求转发到对应的服务上。
图3是分布式API网关***对南北向流量的实现方法的流程图,以下结合图2和图3详细描述利用上述分布式API网关***对南北向流量的实现方法。
如图2和图3所示,该分布式API网关实现方法包括以下步骤S301~S306。
步骤S301:所述计算节点20的节点控制器通过该计算节点20的API网关21获取的外部请求路径和与该外部请求路径对应的API服务,得到属于本计算节点20的API服务的信息。节点控制器周期性地通过探针的方式去检测API服务的状态并将该API服务的状态和计算节点20的信息推送至所述负载均衡器10。
步骤S302:负载均衡器10接收所有节点控制器推送的消息后,将该API服务的信息和计算节点20的信息整合形成所述对应关系,即形成API服务与计算节点20的对应关系,并将该对应关系存储于状态关系表11内。
步骤S303:负载均衡器10接收客户端发送的API服务的请求,其中,所述API服务的请求包含请求路径。
步骤S304:负载均衡器10根据所述请求路径获得对应的API服务。
步骤S305:负载均衡器10从状态关系表11中查找与该API服务对应的计算节点20。
步骤S306:负载均衡器10将该API服务的请求转发至查找的计算节点20上的API网关21,API网关21接收请求后,可以直接将请求转发到所在的计算节点20的API服务,而不是将请求经过多余的网络路由转发到其他节点。
对于分布式API网关***对于异常情况的处理方式如下:
情况一:当API服务出现异常不可用的时候,节点控制器会检测到API服务的状态不可用,然后上报到负载均衡器10,负载均衡器10则会将该不可用服务从状态关系表11中剔除。这样当客户端请求服务时,负载均衡器10会根据状态关系表11检查是否有对应可用API服务,没有的话则直接将响应返回给客户端;若API服务有多个副本并存在有其他副本可用的情况,则负载均衡器10会将请求转发到可用副本所对应的API网关21上。
情况二:当API网关21出现异常不可用的时候,节点控制器探测到API网关21出现异常,也会促使负载均衡器10更新状态信息表,这种情况下,该异常API网关21所在节点上的API服务便无法实现本地转发。节点控制器在推送API服务和API网关21的关系表的时候,也会维护一份API网关21的邻居关系表,邻居关系表记录着API网关21间的网络距离远近,这样当API服务所在节点的API网关21出现异常的情况下,负载均衡器10能找到与该异常API网关21最近的其他正常可用的网关,然后再将请求转发给正常的网关,以最低限度降低网络传输路径。
情况三:当计算节点20出现故障导致API网关21和API服务都不可用并且不可用时间超过节点控制器和负载均衡器10的心跳周期时,负载均衡器10会将计算节点20对应的API网关21和API服务从状态信息表中剔除,然后再采取情况一的处理机制。
图4是分布式API网关***对东西向流量的实现方法的流程图。以下结合图2和图4详细描述利用上述分布式API网关***对东西向流量的实现方法。东西向流量,即API服务之间的相互调用。在云计算环境下,API服务必然存在于多个VPC云(即,虚拟私有云)网络空间中,现有的东西向流量可能存在不同VPC云网络空间下的API服务访问不通或网络访问路径过长的问题。
如图2和图4所示,该分布式API网关21实现方法包括以下步骤S401~S403。
步骤S401:API网关21向其他API网关21转发服务请求。
步骤S402:所述API网关21从该计算节点20的SDN控制器22通过虚拟私有云的端点功能获取该API服务对应的计算机节点。本实施方式中,SDN控制器22的VPC端点能将不同VPC云网络空间下的服务暴露到另外一个VPC中,达到不同VPC下的服务可直连访问的效果。
步骤S403:所述API网关21将所述服务请求转发至该服务请求对应的计算节点20。
上述实施方式公开的分布式API网关***及其实现方法通过在计算节点20上部署与之一一对应的API网关21的方式,同时结合云负载均衡能力、计算节点20的节点控制器的服务状态探测和SDN控制器22的云网络端点转发能力,而形成了分布式的API网关集群。基于节点控制器推送的关于API网关21、API服务和计算节点20的对应关系,对于每一次南北向的客户端请求,该分布式API网关***可以精确地将API服务的请求转发到对应API服务所在或相邻的API网关21,能够减少不必要的跨计算节点的转发。
进一步地,基于SDN控制器22的云网络端点转发能力,避免了不同云网络间API服务东西向访问需要经过多重地址转换的问题。
综上所述,上述的分布式API网关***及其实现方法可以减少很多不必要的网络开销,缩短请求转发过程中的网络传输路径,针对API服务的精准定向转发,大大提高了服务调用的效率,使得每一个API服务的请求都能得到快速的响应。
应该理解,本发明并不局限于上述实施方式,凡是对本发明的各种改动或变型不脱离本发明的精神和范围,倘若这些改动和变型属于本发明的权利要求和等同技术范围之内,则本发明也意味着包含这些改动和变型。

Claims (9)

1.一种分布式API网关***,其特征在于,包括:
API网关,设于计算节点,用于接收API服务的请求并提供与该计算节点的与该请求对应的API服务;
负载均衡器,与所述计算节点的API网关连接,所述负载均衡器包括状态关系表,所述状态关系表包含API服务与计算节点的对应关系;
在接收到API服务的请求时,所述负载均衡器根据所述API服务与所述计算节点的对应关系将所述请求转发至与该API服务对应的计算节点;所述计算节点还包括SDN控制器,所述SDN控制器与所述API网关连接;
在所述API网关向其他API网关转发服务请求时,所述API网关从所述SDN控制器通过虚拟私有云的端点功能获取该服务请求对应的计算机节点后,将所述服务请求转发至该服务请求对应的计算节点。
2.如权利要求1所述的分布式API网关***,其特征在于,所述计算节点的节点控制器周期性地检测该计算节点的API服务的信息,并将该API服务和计算节点的信息推送至所述负载均衡器,所述负载均衡器将该API服务的信息和计算节点的信息整合形成所述对应关系。
3.如权利要求2所述的分布式API网关***,其特征在于:所述计算节点的节点控制器通过该计算节点的API网关获取的外部请求路径和与该外部请求路径对应的API服务,得到属于本计算节点的API服务的信息。
4.如权利要求3所述的分布式API网关***,其特征在于:所述API服务的请求包含请求路径,所述负载均衡器根据所述请求路径获得请求的API服务,并根据该API服务将所述服务请求转发至与该服务请求对应的计算节点。
5.一种分布式API网关实现方法,其特征在于,包括以下步骤:
负载均衡器接收API服务的请求;
负载均衡器根据所述API服务的请求,从状态关系表中查找与该API服务对应的计算节点,其中,所述状态关系表包含API服务与计算节点的对应关系;
负载均衡器将该API服务的请求转发至查找的计算节点;所述计算节点还包括SDN控制器,所述SDN控制器与所述API网关连接;
在所述API网关向其他API网关转发服务请求时,所述API网关从所述SDN控制器通过虚拟私有云的端点功能获取该服务请求对应的计算机节点后,将所述服务请求转发至该服务请求对应的计算节点。
6.如权利要求5所述的分布式API网关实现方法,其特征在于,还包括维护该状态关系表的步骤,所述维护该状态关系表的步骤包括:
所述计算节点的节点控制器周期性地检测该计算节点的API服务的信息,并将该API服务和计算节点的信息推送至所述负载均衡器;
所述负载均衡器将该API服务的信息和计算节点的信息整合形成所述对应关系。
7.如权利要求6所述的分布式API网关实现方法,其特征在于:所述计算节点的节点控制器检测该计算节点的API服务的信息包括:
所述计算节点的节点控制器通过该计算节点的API网关获取的外部请求路径和与该外部请求路径对应的API服务,得到属于本计算节点的API服务的信息。
8.如权利要求7所述的分布式API网关实现方法,其特征在于:所述API服务的请求包含请求路径,所述负载均衡器根据所述请求路径获得请求的API服务,并根据该API服务将所述服务请求转发至与该API服务对应的计算节点。
9.如权利要求8所述的分布式API网关实现方法,其特征在于,还包括:
在所述API网关向其他API网关转发服务请求时,所述API网关从该计算节点的SDN控制器通过虚拟私有云的端点功能获取该API服务对应的计算机节点;
所述API网关将所述服务请求转发至该服务请求对应的计算节点。
CN201911142448.6A 2019-11-20 2019-11-20 一种分布式api网关***及其实现方法 Active CN110944044B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911142448.6A CN110944044B (zh) 2019-11-20 2019-11-20 一种分布式api网关***及其实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911142448.6A CN110944044B (zh) 2019-11-20 2019-11-20 一种分布式api网关***及其实现方法

Publications (2)

Publication Number Publication Date
CN110944044A CN110944044A (zh) 2020-03-31
CN110944044B true CN110944044B (zh) 2020-11-13

Family

ID=69907025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911142448.6A Active CN110944044B (zh) 2019-11-20 2019-11-20 一种分布式api网关***及其实现方法

Country Status (1)

Country Link
CN (1) CN110944044B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111600807A (zh) * 2020-04-14 2020-08-28 网宿科技股份有限公司 一种基于api网关设备的流量控制方法和***
CN112381347A (zh) * 2020-10-13 2021-02-19 广州赛意信息科技股份有限公司 一种基于api网关的生产设备状态数据实时监控方法及***
CN112738175B (zh) * 2020-12-23 2022-08-23 深圳壹账通智能科技有限公司 请求处理方法及相关设备
US12015521B2 (en) 2022-04-20 2024-06-18 Cisco Technology, Inc. Using an application programming interface (API) gateway to manage communications in a distributed system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106487695A (zh) * 2015-08-25 2017-03-08 华为技术有限公司 一种数据传输方法、虚拟网络管理装置及数据传输***
CN108881448A (zh) * 2018-06-27 2018-11-23 杭州贝购科技有限公司 Api请求的处理方法及装置
CN109617735A (zh) * 2018-12-26 2019-04-12 华为技术有限公司 云计算数据中心***、网关、服务器及报文处理方法
CN109672612A (zh) * 2018-12-13 2019-04-23 中国电子科技集团公司电子科学研究院 Api网关***
CN109936589A (zh) * 2017-12-15 2019-06-25 ***通信集团浙江有限公司 基于api热度值的动态负载均衡方法、装置及平台
CN110381101A (zh) * 2018-04-13 2019-10-25 北京京东尚科信息技术有限公司 Api网关控制***、控制方法、设备和介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108306844B (zh) * 2016-10-09 2020-07-24 上海思立微电子科技有限公司 用于服务器与客户端之间的api通信的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106487695A (zh) * 2015-08-25 2017-03-08 华为技术有限公司 一种数据传输方法、虚拟网络管理装置及数据传输***
CN109936589A (zh) * 2017-12-15 2019-06-25 ***通信集团浙江有限公司 基于api热度值的动态负载均衡方法、装置及平台
CN110381101A (zh) * 2018-04-13 2019-10-25 北京京东尚科信息技术有限公司 Api网关控制***、控制方法、设备和介质
CN108881448A (zh) * 2018-06-27 2018-11-23 杭州贝购科技有限公司 Api请求的处理方法及装置
CN109672612A (zh) * 2018-12-13 2019-04-23 中国电子科技集团公司电子科学研究院 Api网关***
CN109617735A (zh) * 2018-12-26 2019-04-12 华为技术有限公司 云计算数据中心***、网关、服务器及报文处理方法

Also Published As

Publication number Publication date
CN110944044A (zh) 2020-03-31

Similar Documents

Publication Publication Date Title
CN110944044B (zh) 一种分布式api网关***及其实现方法
CN111464592B (zh) 基于微服务的负载均衡方法、装置、设备及存储介质
CN100446495C (zh) 一种动态共享连接的方法和***
CN108696428B (zh) 基于隧道技术的路由探测方法、路由节点和中心服务器
CN100389392C (zh) 一种集群***中实现负载均衡的方法、***和存储控制器
CN102447624B (zh) 在服务器集群上实现负载均衡的方法、节点服务器及集群
US20150215394A1 (en) Load distribution method taking into account each node in multi-level hierarchy
CN108234191A (zh) 云计算平台的管理方法和装置
EP2224341B1 (en) Node system, server switching method, server device, and data transfer method
CN111970362B (zh) 基于lvs的车联网网关集群方法及***
CN106991008B (zh) 一种资源锁管理方法、相关设备及***
CN114301972B (zh) 一种基于云边协同的区块链节点分级部署方法和***
CN106982244B (zh) 在云网络环境下实现动态流量的报文镜像的方法和装置
CN113839862B (zh) Mclag邻居之间同步arp信息的方法、***、终端及存储介质
CN111491017B (zh) Cors基准站数据分发***、方法、装置
JPH10312365A (ja) 負荷分散システム
EP2439881B1 (en) Cluster system and request message distribution method for processing multi-node transaction
CN112866107A (zh) Ip地址通告方法、流量引导方法及网络设备
WO2020181733A1 (zh) 一种基于vpc的多数据中心互通方法及相关设备
JPH0793639B2 (ja) ネツトワ−ク・ノ−ドにおける処理及び記録要件を緩和するための方法及びシステム
CN114024971B (zh) 业务数据处理方法、Kubernetes集群及介质
JP7260801B2 (ja) バックアップシステム及びその方法並びにプログラム
CN115408199A (zh) 一种边缘计算节点的容灾处理方法及装置
KR101648568B1 (ko) 분산된 객체를 클러스터링하여 하나의 객체처럼 활용하는 방법 및 이를 사용한 분산 시스템
CN108965494A (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
GR01 Patent grant
GR01 Patent grant