掌桥专利:专业的专利平台
掌桥专利
首页

一种用于服务开放的分布式网关系统

文献发布时间:2023-06-19 09:32:16


一种用于服务开放的分布式网关系统

技术领域

本发明属于网关技术领域,更具体地,涉及一种用于服务开放的分布式网关系统。

背景技术

随着互联网、云计算、微服务、大数据和人工智能技术的发展,各公司和机构因长期运营,积累了大量的数据资源、特定业务专题数据分析以及通用的人工智能感知能力,亟需将这些数据和技术的价值最大化。服务开放平台,在现阶段云计算、微服务等技术发展相对成熟,给予足够支撑的情况,将数据和技术的能力以服务的形式对内、对外开放,将为企业带来巨大的价值。各大型互联网企业,都致力于打造服务开放的生态,形成企业内部和外部开发者将大量服务接口发布到服务开放平台,对外运营服务,产生经济效益。

为让服务接口开发者,更多的关注业务领域的实现,而不用过多地关心服务的发布管理流程、服务开放访问的认证及授权,以及服务访问数据的运营采集分析,在服务开放平台中,易于对接的、高性能的网关成为服务对外的关键组件。大量的服务发布、大量应用、大量用户订阅、调用服务等情况,往往造成简单实现的开放网关性能较低,给服务调用者造成较长的延时损耗,带来不好的性能体验。

因此,特别需要一种网关能满足大量的服务发布、大量应用、大量用户订阅及调用服务等服务开放管理的性能需求。

发明内容

本发明的目的是提出一种能满足大量的服务发布、大量应用及调用服务等服务开放的性能需求的用于服务开放的分布式网关系统。

为了实现上述目的,本发明提供一种用于服务开放的分布式网关系统,包括:服务数据管理控制通道接口模块,服务数据管理控制通道接口模块生成对外服务管控相关信息;服务接口管控数据存储模块,与所述服务数据管理控制通道接口模块连接,所述服务接口管控数据存储模块存储所述对外服务管控相关信息;服务调用数据通道接口模块,与所述服务接口管控数据存储模块连接,所述服务调用数据通道接口模块基于所述对外服务管控相关信息判断调用服务请求的访问权限,完成服务请求的响应。

优选的,所述对外服务管控相关信息包括创建的对外发布服务基本信息、创建的用户方基本信息、访问策略的数据信息和访问权限信息;所述服务数据管理控制通道接口模块创建对外发布服务,并将创建的对外发布服务基本信息存储在所述服务接口管控数据存储模块中;创建对外发布服务的用户方,并将创建的用户方基本信息存储在所述服务接口管控数据存储模块中;根据所述对外发布服务的策略需求,设置访问策略;将所述访问策略按类别与所述对外发布服务进行关联,并将访问策略的数据信息存储到服务接口管控数据存储模块中;将所述用户方和所述访问策略进行关联,生成访问权限信息,并将所述访问权限信息存储到服务接口管控数据存储模块中。

优选的,所述服务调用数据通道接口模块每间隔预设时段从所述服务接口管控数据存储模块读取所述对外服务管控相关信息。

优选的,所述所述服务调用数据通道接口模块基于所述对外服务管控相关信息判断调用服务请求的访问权限包括:所述服务调用数据通道接口模块基于所述调用服务请求的信息和所述对外服务管控相关信息,对所述调用服务请求的用户身份认证校验;对所述调用服务请求的用户身份认证校验通过后,对所述调用服务请求的访问权限进行校验;对所述调用服务请求的访问权限校验通过后,对所述调用服务请求的访问限定的策略进行校验。

优选的,对所述调用服务请求的访问限定的策略校验通过后,将所述调用服务请求传递至后端服务,完成服务请求响应。

优选的,使用JWT验证标准进行用户身份认证;使用控制列表ACL及JWT验证标准进行用户的访问权限的判断。

优选的,使用OAUTH2验证标准进行访问权限的判断。

优选的,所述访问限定的策略包括服务访问流量限制、服务访问数据包大小限制以及服务访问黑白名单控制。

优选的,将所述服务数据管理控制通道接口模块、服务调用数据通道接口模块和服务接口管控数据存储模块整进行分层分级设置。

优选的,根据所述访问限定的策略进行分层分级设置。

本发明的有益效果在于:本发明的用于服务开放的分布式网关系统通过服务调用数据通道接口模块读取存储在服务接口管控数据存储模块由服务数据管理控制通道接口模块生成的对外服务管控相关信息,实现分布式横向扩展,可胜任高并发场景下,海量服务开放管理的场景,满足大量的服务发布、大量应用及调用服务等服务开放的性能需求。

本发明的方法具有其它的特性和优点,这些特性和优点从并入本文中的附图和随后的具体实施例中将是显而易见的,或者将在并入本文中的附图和随后的具体实施例中进行详细陈述,这些附图和具体实施例共同用于解释本发明的特定原理。

附图说明

通过结合附图对本发明示例性实施方式进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显,其中,在本发明示例性实施方式中,相同的参考标号通常代表相同部件。

图1示出了根据本发明的一个实施例的一种用于服务开放的分布式网关系统的框图。

图2示出了根据本发明的一个实施例的一种用于服务开放的分布式网关系统的分级分层设置示意图。

附图标记说明

102、服务数据管理控制通道接口模块;104、服务接口管控数据存储模块;106服务调用数据通道接口模块。

具体实施方式

下面将更详细地描述本发明的优选实施方式。虽然以下描述了本发明的优选实施方式,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。

根据本发明的一种用于服务开放的分布式网关系统,包括:服务数据管理控制通道接口模块,服务数据管理控制通道接口模块生成对外服务管控相关信息;服务接口管控数据存储模块,与服务数据管理控制通道接口模块连接,服务接口管控数据存储模块存储对外服务管控相关信息;服务调用数据通道接口模块,与服务接口管控数据存储模块连接,服务调用数据通道接口模块基于对外服务管控相关信息判断调用服务请求的访问权限,完成服务请求的响应。

具体的,分布式网关由服务数据管理控制通道接口模块、服务调用数据通道接口模块和服务接口管控数据存储模块组成。其中,服务数据管理控制通道接口模块和服务调用数据通道接口模块均可有多个实例组成,以统一的服务接口在网关中体现;服务接口管理数据存储模块为服务数据管理控制通道接口模块和服务调用数据通道接口模块共享的服务接口管理数据存储组件。服务数据管理控制通道接口模块对服务接口管控数据存储模块进行读、写操作;服务调用数据通道接口模块对对服务接口管控数据存储模块进行读操作,读取服务接口和用户基本信息,服务访问控制信息等。

服务数据管理控制通道接口模块生成对外发布服务的接口创建、用户方管理、权限控制等对外服务管控相关信息,并将其存储到服务接口管控数据存储模块;服务调用数据通道接口模块通过定期读取/更新服务接口管控数据存储模块存储的服务数据管理控制通道接口模块产生的对外服务管控相关信息,并将该数据进行缓存用于判断服务访问权限、服务路由以及服务调用数据采集等;服务数据管理控制通道接口模块和服务调用数据通道接口模块均可横向扩展,提高其并发性能,其中对外服务管控相关信息存在外部共享数据库或文件中,服务调用数据通道接口模块定期读取更新,实现各数据访问通道的服务管理数据同步。

服务调用数据通道接口模块对外接口和服务数据管理控制通道接口模块对外接口分别在不同组件间实现,可独立进行横向扩展。服务调用数据通道接口模块对外组件进行服务访问策略的检验、日志采集等;服务数据管理控制通道接口模块实现服务的发布、用户创建、用户权限管理等。服务数据管理控制通道接口模块将所发布的基本信息、用户访问特定服务的策略信息,以及数据采集的配置信息写入到服务接口管控数据存储模块中。

根据示例性的实施方式,用于服务开放的分布式网关系统通过服务调用数据通道接口模块读取存储在服务接口管控数据存储模块由服务数据管理控制通道接口模块生成的对外服务管控相关信息,实现分布式横向扩展,可胜任高并发场景下,海量服务开放管理的场景,满足大量的服务发布、大量应用及调用服务等服务开放的性能需求。

作为优选方案,对外服务管控相关信息包括创建的对外发布服务基本信息、创建的用户方基本信息、访问策略的数据信息和访问权限信息;服务数据管理控制通道接口模块创建对外发布服务,并将创建的对外发布服务基本信息存储在服务接口管控数据存储模块中;创建对外发布服务的用户方,并将创建的用户方基本信息存储在服务接口管控数据存储模块中;根据对外发布服务的策略需求,设置访问策略;将访问策略按类别与对外发布服务进行关联,并将访问策略的数据信息存储到服务接口管控数据存储模块中;将用户方和访问策略进行关联,生成访问权限信息,并将访问权限信息存储到服务接口管控数据存储模块中。

具体的,服务数据管理控制通道接口模块,主要是实现按如下流程实现服务开放管控的功能:

(1)对外开放服务的创建

将后端所需要对外开放的服务,通过服务网关创建对外发布的服务接口。具体地,网关对外发布服务的接口,关键体现在对外发布服务供访问该后端的路径、服务访问协议(http或者https),后端服务的IP地址、端口号以及路径等。对外开放服务创建的基本信息存储在服务接口管控数据存储模块中。具体地,服务接口管控数据存储模块可以为数据库也可以为文件。在服务开放平台管理服务接口较多的生产环境中,使用数据库进行存储,测试环境可以用文件进行存储。

(2)用户的创建

为开放平台所对外开放服务的访问应用端创建唯一标识,标识相应的用户方,也就是创建对外发布服务的用户方。并将用户方(服务访问应用端唯一标识)的基本信息(网关生成的用户ID、用户名、创建时间等),存储到服务接口管控数据存储模块中。

(3)服务访问策略控制的设置

在服务数据管理控制通道接口模块中,根据对外开放服务的不同策略需求,为特定开放服务以插件的形式设置访问策略。访问策略包括对用户身份认证策略;特定服务的访问授权策略;服务访问的单位时间的次数限制(限流);服务访问的数据包大小限制;服务访问的应用端IP地址黑白名单等。将这些访问策略,按类别与所对外开放服务进行关联,并将访问策略的数据信息,存储到服务接口管控数据存储模块中。

(4)用户授权的设置

在用户需要访问特定服务时,通过调用服务数据管理控制通道接口模块中的用户授权模块,将创建的用户方和设定的访问策略进行关联,实现特定服务对特定用户访问授权,并将权限信息存储到服务接口管控数据存储模块中。

(5)多实例时数据同步

在服务数据管理控制通道接口模块多实例场景时,也就是多个模块具有服务数据管理控制通道接口模块的功能时,每个模块的主要任务不同。对于服务数据管理控制通道接口进行调用时,服务数据管理控制通道接口模块多实例中的某一实例会对请求进行处理,若该实例已缓存了最新的对外服务管控相关信息,则直接对数据进行操作,并将结果写入到对外服务管控相关信息中;若该实例未缓存了最新的对外服务管控相关信息,则需实时从服务接口管控数据存储模块进行读取数据,然后在进行操作,并将对操作结果进行缓存,并将对外服务管控相关信息及操作结果写入到服务接口管控数据存储模块中。

服务数据管理控制通道接口模块多实例场景,各服务数据管理控制通道接口模块各实例周期性地从服务数据管理控制通道接口模块读取服务管理控制数据,保持服务管控数据一致性。

作为优选方案,服务调用数据通道接口模块每间隔预设时段从服务接口管控数据存储模块读取对外服务管控相关信息。

作为优选方案,服务调用数据通道接口模块基于对外服务管控相关信息判断调用服务请求的访问权限包括:服务调用数据通道接口模块基于调用服务请求的信息和对外服务管控相关信息,对调用服务请求的用户身份认证校验;对调用服务请求的用户身份认证校验通过后,对调用服务请求的访问权限进行校验;对调用服务请求的访问权限校验通过后,对调用服务请求的访问限定的策略进行校验。

服务调用数据通道接口模块基于调用服务请求的信息和对外服务管控相关信息,主要是实现按如下流程在服务访问客户端调用请求服务时,执行服务响应处理的的功能:

(1)周期性地从服务接口管控数据存储模块读取对外服务管控相关信息。包括:

对外开放服务访问与后端服务关联的路由基本信息,即上游服务地址、端口号和后端服务路径等;

服务访问特定场景控制策略,比如特定服务的流量限制策略数据,某一用户访问某一服务的流量限制策略数据,某一服务访问的IP源地址的黑白名单策略数据等;

访问特定服务,对用户进行认证、授权的基本信息。主要是特定服务与用户认证类型、授权类型的信息。认证、授权可通过服务访问控制列表ACL进行认证、身份认证可通过jwt进行认证、授权可通过oauth2实现认证。

(2)多实例部署时,周期性一定时间间隔的从服务接口管控数据存储模块读取服务接口管控数据进行缓存数据更新,提升处理效率。最佳地,周期性读取数据的时间间隔为2秒。

(3)用户身份认证校验

用户身份认证校验,主要指在用户方访问服务认证类型设置为JWT时,对用户发送的JWT token进行校验。

在用户是否能访问特定服务的权限判定时,可针对两种场景分别实现:

(a)在使用JWT进行身份认证时,在判定jwt token是否有效的同时,还需判定用户是否在特定服务的访问控制列表ACL中,在该服务的访问控制列表中时,完成用户访问服务的权限判定,给予访问服务,否则,拒绝该用户对该服务的访问;

(b)在服务访问使用OAUTH2进行权限判定时,对应用发送请求信息中的OAUTH2TOKEN进行校验,即可判定该请求是否能访问特定服务。

(5)服务请求路由到后端服务地址并响应请求

在完成上述(3)和(4)服务访问身份、权限检验后,再进行访问限定的策略判定,比如服务访问流量限制、服务访问数据包大小限制以及服务访问黑白名单控制等,通过这些预先设置的策略判定后,即可实现将服务请求路由给后端服务,最终完成服务请求响应。

(6)多实例场景

在服务调用数据通道接口模块多实例场景时,也就是多个模块具有服务调用数据通道接口模块的功能时,每个模块的主要任务不同。多实例场景下,周期性一定时间间隔的从服务接口管控数据存储模块读取服务接口管控数据,可以多实例共同处理,身份认证、授权判定、以及日记采集等计算能力得以横向扩展,满足高并发场景下数据请求响应网关处理能力的低延时要求。

服务调用数据通道接口模块,从对外服务管控相关信息中读取所设置的策略信息,并在服务调用时,进行权限检验、服务路由转发、日志记录等。

服务调用数据通道接口模块和服务数据管理控制通道接口模块,均可以通过简单地增加实现实例,实现性能的提升。

作为优选方案,对调用服务请求的访问限定的策略校验通过后,将调用服务请求传递至后端服务,完成服务请求响应。

具体的,服务调用数据通道接口模块对调用服务请求的访问限定的策略校验通过后,将调用服务请求传递至后端服务,与相应的对外接口对接。

作为优选方案,使用JWT验证标准进行用户身份认证;使用控制列表ACL及JWT验证标准进行用户的访问权限的判断。

作为优选方案,使用OAUTH2验证标准进行访问权限的判断。

具体的,使用JWT验证标准进行身份认证。访问权限的判断有两种方式,(1)进行JWT身份认证时,在判定jwt token(验证请求)是否有效的同时,还需判定用户是否在特定服务的访问控制列表ACL中,在该服务的访问控制列表中时,完成用户访问服务的权限判定,给予访问服务,否则,拒绝该用户对该服务的访问;(2)在服务访问使用OAUTH2(验证)进行权限判定时,对应用发送请求信息中的OAUTH2 TOKEN(授权验证请求)进行校验,即可判定该请求是否能访问特定服务。

作为优选方案,访问限定的策略包括服务访问流量限制、服务访问数据包大小限制以及服务访问黑白名单控制。

作为优选方案,将服务数据管理控制通道接口模块、服务调用数据通道接口模块和服务接口管控数据存储模块整进行分层分级设置。

具体的,服务数据管理控制通道接口模块和服务调用数据通道接口模块,均可以多实例部署,并整合服务对外提供网关各组件间接口交互。具体地,最佳实践,可以将服务数据管理控制通道接口模块和服务调用数据通道接口模块容器化部署,并使用kubernetes的容器编排,以kubernetes的service形式对外提供接口。

本发明所设计的网关可以分层进行建设,同一层可以根据访问并发量,访问数据请求和结果响应数据的大小,按均衡策略,负载到最靠近后端服务的网关组件中。

服务开放网关分层建设主要是后端业务的隔离,独立建设;实现服务访问控制策略的前后串联依次建设。具体地,对于分2层网络拓扑建设的服务开放网关为:

1)最外层网关,直接面向服务调用者/应用客户端,可以建设在性能较好地物理服务器上,搭建分布式网关。最外层网关的服务数据管理控制通道接口模块、服务调用数据通道接口模块、服务接口管控数据存储模块3个组件均部署在物理服务器上。在需要横向扩展时,通过增加物理主机实现。

2)靠近服务端的网关,可以部署在云平台或微服务平台上,实现较灵活的扩展。

3)服务注册时,分两级注册,从后端服务——>后端网关——>后端网关开放服务——>外层网关——>最终开放服务,实现服务的开放。

4)具体地,从后端服务——>后端网关——>后端网关开放服务的后端服务发布流程,可以根据不同业务、并发量、和服务访问策略等设定原则,将同类服务注册到特定的后端网关,实现所发布服务间的隔离。通过,可根据后端网关服务的服务访问域名、服务用户、服务类型等来决定将某一服务注册到那个后端网关。实现所开放服务的隔离,以及可以按并发访问量、网关因访问控制策略校验的延迟等实现特定后端网关的扩展。

5)后端服务在最内层网关发布后,然后在注册到外层网关,实现从后端网关开放服务——>外层网关——>最终开放服务的服务开放。

6)可以设置服务访问策略时,可以将特定服务的不通过访问控制策略,在外层网关、内层网关分别实现,达到访问控制的快速校验。比如对服务访问IP黑白名单、用户访问流量控制、身份校验、访问授权、服务调用数据采集等策略控制,可以在不同层级的网关进行校验。通产地,对于全局实现,比如服务调用数据采集、服务访问IP黑白名单、用户访问流量控制等在外层网关实现策略校验;身份校验、访问授权因各服务创建时设置的判断类型略有不同,且有一定的计算量,将其放到后端网关实现。

通过上述网关的分层建设,可以针对不同的策略处理和计算代价,实现不同层级的网关组件扩展,以实现网关高效得将后端服务的响应快速返回。

作为优选方案,根据访问限定的策略进行分层分级设置。

具体的,统一服务的不同访问控制策略,可以在不同层级实现;服务调用采集的实现可在最接近后端服务的该层网关实现,较好地解决多服务开放管理、多用户、多服务并发时的效率问题。对不同的访问控制策略在不同层次进行判断,提升处理效率,降低服务访问经网关控制带来的延时。

通过分层建设服务网关,将服务调用访问数据通道分层建设,将服务访问IP黑白名单、服务访问限流等计算代价较小的服务放置在最外层,将对服务调用用户身份认证、服务请求权限判断、服务调用日志解析等计算代价较高的功能实现在内层网关,降低后端服务开放因网关访问控制和数据采集等造成的时延。

其服务调用数据通道接口模块和服务数据管理控制通道接口模块,均可进行独立部署,面对高并发场景时的服务调用请求和服务管理操作进行隔离,并且可以实现服务调用数据通道和服务开放管理数据控制通道彼此的分布式横向扩展。

服务数据管理控制通道接口模块对服务、用户、权限管理的数据均可写入到外部存储,通常为外部数据库和文件,供多个服务调用数据通道接口模块进行读取。然后服务调用数据通道接口模块对服务管控相关数据进行缓存,并周期性地从服务管理控制外部存储中读取、更新,实现不同服务调用数据通道对服务管控相关数据的更新。

为增加服务开放分布式网关的安全性,可以将服务数据管理控制通道接口模块的服务管理的接口注册到服务调用数据通道接口模块中,并授予特定管理账号的访问控制权限,实现服务数据管理控制通道接口模块作为服务,通过服务调用数据通道接口模块进行访问,简化分布式网关的管理以及增强服务数据管理控制通道接口访问的安全性。

服务数据管理控制通道接口模块多个实例和服务调用数据通道接口模块多个实例均可注册到注册中心组件,注册中心可通过zookeeper、Etcd等实现,实现服务数据管理控制通道接口模块以及服务调用数据通道接口模块的高可用性。对该两个组件的请求,通过注册中心注册服务的负载到后端可用的数据控制通道实例或者服务数据调用管理实例上。

实施例一

图1示出了根据本发明的一个实施例的一种用于服务开放的分布式网关系统的框图。图2示出了根据本发明的一个实施例的一种用于服务开放的分布式网关系统的分级分层设置示意图。

结合图1和图2所示,该用于服务开放的分布式网关系统,包括:服务数据管理控制通道接口模块102,服务数据管理控制通道接口模块102生成对外服务管控相关信息;服务接口管控数据存储模块104,与服务数据管理控制通道接口模块102连接,服务接口管控数据存储模块104存储对外服务管控相关信息;服务调用数据通道接口模块106,与服务接口管控数据存储模块104连接,服务调用数据通道接口模块106基于对外服务管控相关信息判断调用服务请求的访问权限,完成服务请求的响应。

其中,对外服务管控相关信息包括创建的对外发布服务基本信息、创建的用户方基本信息、访问策略的数据信息和访问权限信息;服务数据管理控制通道接口模块102创建对外发布服务,并将创建的对外发布服务基本信息存储在服务接口管控数据存储模块104中;创建对外发布服务的用户方,并将创建的用户方基本信息存储在服务接口管控数据存储模块104中;根据对外发布服务的策略需求,设置访问策略;将访问策略按类别与对外发布服务进行关联,并将访问策略的数据信息存储到服务接口管控数据存储模块104中;将用户方和访问策略进行关联,生成访问权限信息,并将访问权限信息存储到服务接口管控数据存储模块104中。

其中,服务调用数据通道接口模块106每间隔预设时段从服务接口管控数据存储模块104读取对外服务管控相关信息。

其中,服务调用数据通道接口模块106基于对外服务管控相关信息判断调用服务请求的访问权限包括:服务调用数据通道接口模块106基于调用服务请求的信息和对外服务管控相关信息,对调用服务请求的用户身份认证校验;对调用服务请求的用户身份认证校验通过后,对调用服务请求的访问权限进行校验;对调用服务请求的访问权限校验通过后,对调用服务请求的访问限定的策略进行校验。

其中,对调用服务请求的访问限定的策略校验通过后,将调用服务请求传递至后端服务,完成服务请求响应。

其中,使用JWT验证标准进行用户身份认证;使用控制列表ACL及JWT验证标准进行用户的访问权限的判断。

其中,使用OAUTH2验证标准进行访问权限的判断。

其中,访问限定的策略包括服务访问流量限制、服务访问数据包大小限制以及服务访问黑白名单控制。

其中,将服务数据管理控制通道接口模块、服务调用数据通道接口模块和服务接口管控数据存储模块整进行分层分级设置。

其中,根据访问限定的策略进行分层分级设置。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。

相关技术
  • 一种用于服务开放的分布式网关系统
  • 一种防护API接口配置安全策略数据的方法及基于网关调用开放平台服务的方法及系统
技术分类

06120112202458