CN109857409A - 基于微服务网关的数据处理方法、装置及计算机设备 - Google Patents
基于微服务网关的数据处理方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN109857409A CN109857409A CN201910040740.0A CN201910040740A CN109857409A CN 109857409 A CN109857409 A CN 109857409A CN 201910040740 A CN201910040740 A CN 201910040740A CN 109857409 A CN109857409 A CN 109857409A
- Authority
- CN
- China
- Prior art keywords
- micro services
- jar packet
- preset
- services gateway
- latest edition
- 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
Abstract
本发明公开一种基于微服务网关的数据处理方法,包括如下步骤:根据预置位置信息判断是否存在JAR包,所述JAR包中包括配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序,所述预置位置用于存储所述JAR包;在存在所述JAR包的情况下,判断所述JAR包的版本是否为最新版本;在存在最新版本的JAR包的情况下,将所述最新版本的JAR包加载到微服务网关中;基于所述最新版本的JAR包中的配置文件和/或应用程序,执行预置路由转发规则对应的路由转发和/或预置过滤规则对应的过滤。本发明可解决现有技术针对微服务网关功能扩展的效率较低的问题,可提高实现微服务网关功能扩展的效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种基于微服务网关的数据处理方法、装置及计算机设备。
背景技术
随着移动应用与企业间互联需求的兴起,微服务的应用越来越广泛,API网关(也可称为微服务网关)作为微服务架构中的标配组件也随之被广泛应用。例如,在银行、证券等领域所使用的相关系统中,可通过API网关解决访问认证、报文转换、访问统计等问题。
目前,比较常用的微服务网关主要是Zuul(基于Srping Cloud体系的组件)和Kong(基于Open Resty体系的组件),但是,上述微服务网关本身的功能是有限的,若想扩展微服务网关的功能(如过滤器功能等),都需要通过硬编码的方式(也即需要由开发人员编写相关的脚本)才能实现,比如,Zuul需要使用Groovy语言编写脚本来实现,Kong则需要将Lua嵌入Nginx中并使用Lua语言编写脚本来实现。也就是说,在上述功能扩展的实现过程中,很多开发人员往往需要掌握一门新的脚本语言才能实现相关功能的扩展,从而导致实现功能扩展的效率较低。
相关技术中针对微服务网关功能扩展的效率较低的问题,目前尚未提出有效的解决方案。
发明内容
本发明的目的在于提供一种基于微服务网关的数据处理方法、装置、计算机设备及可读存储介质,进而在一定程度上克服上述现有技术中存在的问题,可提高实现微服务网关功能扩展的效率。
本发明是通过下述技术方案来解决上述技术问题:
根据本发明的一个方面,提供了一种基于微服务网关的数据处理方法,包括如下步骤:
S01,根据预置位置信息判断是否存在JAR包,所述JAR包中包括配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序,所述预置位置用于存储所述JAR包;
S02,在存在所述JAR包的情况下,判断所述JAR包的版本是否为最新版本;
S03,在存在最新版本的JAR包的情况下,将所述最新版本的JAR包加载到微服务网关中;
S04,基于所述最新版本的JAR包中的配置文件和/或应用程序,执行预置路由转发规则对应的路由转发和/或预置过滤规则对应的过滤。
进一步的,所述方法还包括:先将所述JAR包存储于预置位置;
S01根据预置位置信息判断是否存在JAR包,包括:
启动针对JAR包的轮询程序;
通过所述轮询程序基于预置位置信息检测所述JAR包是否存在。
进一步的,S03中将所述最新版本的JAR包加载到微服务网关中,包括:
对现有版本的JAR包进行清理;
将所述最新版本的JAR包中的类文件加载到新建的类加载器中;
将所述最新版本的JAR包中配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序加载到微服务网关中。
进一步的,所述方法还包括:
将微服务网关连接的微服务所对应服务器的地址信息存储于所述JAR包中;
当微服务网关接收到针对任一微服务的调用请求时,通过所述JAR包获取该微服务所对应服务器的地址信息并将所述调用请求转发至对应服务器。
进一步的,所述方法还包括:
将微服务网关连接的微服务所对应服务器的地址信息注册到注册中心;
当微服务网关接收到针对任一微服务的调用请求时,通过所述注册中心获取该微服务所对应服务器的地址信息并将所述调用请求转发至对应服务器。
进一步的,在预置灰度策略中预先存储与微服务网关连接的所有微服务对应的灰度版本号。
基于此,所述方法还包括:
接收针对微服务的灰度请求;
从预置灰度策略中获取与所述灰度请求对应微服务的目标灰度版本号;
通过注册中心确定具有目标灰度版本号的微服务所对应的目标服务器的地址信息;
根据所述目标服务器的地址信息将所述灰度请求转发至目标服务器,以便目标服务器对所述灰度请求进行处理。
其中,上述接收针对微服务的灰度请求,包括:
在接收到针对微服务的调用请求后,采用预置灰度前置过滤器基于预置灰度策略确定该针对微服务的调用请求是否为灰度请求。
为了实现上述目的,本发明还提供一种基于微服务网关的数据处理装置,包括:
第一判断模块,用于根据预置位置信息判断是否存在JAR包,所述JAR包中包括配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序,所述预置位置用于存储所述JAR包;
第二判断模块,用于在所述第一判断模块的判断结果为存在所述JAR包的情况下,判断所述JAR包的版本是否为最新版本;
加载模块,用于在第二判断模块的判断结果为存在最新版本的JAR包的情况下,将所述最新版本的JAR包加载到微服务网关中;
执行模块,用于基于所述最新版本的JAR包中的配置文件和/或应用程序,执行预置路由转发规则对应的路由转发和/或预置过滤规则对应的过滤。
进一步的,所述装置还包括:存储模块,用于预先将所述JAR包存储于预置位置;
基于此,所述第一判断模块,具体用于:
启动针对JAR包的轮询程序;
通过所述轮询程序基于预置位置信息检测所述JAR包是否存在。
进一步的,加载模块,具体包括:
清理单元,用于对现有版本的JAR包进行清理;
第一加载单元,用于将所述最新版本的JAR包中的类文件加载到新建的类加载器中;
第二加载单元,用于将所述最新版本的JAR包中配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序加载到微服务网关中。
进一步的,所述装置还包括:
地址信息存储模块,用于将微服务网关连接的微服务所对应服务器的地址信息存储于所述JAR包中;
请求转发模块,用于当微服务网关接收到针对任一微服务的调用请求时,通过所述JAR包获取该微服务所对应服务器的地址信息并将所述调用请求转发至对应服务器。
进一步的,所述装置还包括:
注册模块,用于将微服务网关连接的微服务所对应服务器的地址信息注册到注册中心;
请求转发模块,还用于当微服务网关接收到针对任一微服务的调用请求时,通过所述注册中心获取该微服务所对应服务器的地址信息并将所述调用请求转发至对应服务器。
进一步的,在预置灰度策略中预先存储与微服务网关连接的所有微服务对应的灰度版本号。
基于此,所述装置还包括:
请求接收模块,用于接收针对微服务的灰度请求;
目标版本号获取模块,用于从预置灰度策略中获取与所述灰度请求对应微服务的目标灰度版本号;
目标服务器确定模块,用于通过注册中心确定具有目标灰度版本号的微服务所对应的目标服务器的地址信息;
请求转发模块,还用于根据所述目标服务器的地址信息将所述灰度请求转发至目标服务器,以便目标服务器对所述灰度请求进行处理。
其中,请求接收模块,具体用于:
在接收到针对微服务的调用请求后,采用预置灰度前置过滤器基于预置灰度策略确定该针对微服务的调用请求是否为灰度请求。
为了实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。
为了实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述方法的步骤。
本发明提供的基于微服务网关的数据处理方法、装置、计算机设备及可读存储介质,可根据预置位置信息判断是否存在包括配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序的JAR包,若存在JAR包,则可继续判断JAR包的版本是否为最新版本,若该JAR包为最新版本,则将该最新版本的JAR包加载到微服务网关中,然后基于该最新版本的JAR包中的配置文件和/或应用程序,执行预置路由转发规则对应的路由转发和/或预置过滤规则对应的过滤。通过此方案,可改变现有微服务网关在动态扩展额外功能时,需要依赖于Groovy等脚本语言编写代码的方式,而是可提供基于外置JAR包的热部署功能,也即在无需使用Groovy等脚本语言编写代码且无需重启微服务网关的情况下,借助于外置的包括可实现相关功能的配置文件及应用程序等内容的JAR包,实现对微服务网关的额外功能(比如自定义的路由转发、自定义过滤器等功能)的扩展,以此,无需开发人员学习新的脚本语言,而是通过使用较为熟练的Java语言编写可实现相关功能的配置文件、应用程序等并压缩成JAR包即可,可保证实现相关功能的JAR包的生成速度,降低针对微服务网关功能扩展的难度,从而可提高实现微服务网关功能扩展的效率。
附图说明
图1是根据本发明实施例的基于微服务网关的数据处理方法的一种可选的流程示意图;
图2是根据本发明实施例的基于微服务网关的数据处理装置的一种可选的程序模块示意图;
图3是根据本发明实施例的基于微服务网关的数据处理装置的另一种可选的程序模块示意图;
图4是根据本发明实施例的基于微服务网关的数据处理装置的又一种可选的程序模块示意图;
图5是根据本发明实施例的计算机设备的一种可选的硬件架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
下面结合附图对本发明提供的基于微服务网关的数据处理方法进行说明。
图1为本发明基于微服务网关的数据处理方法的一种可选的流程示意图。
在背景技术中,提到了在现有微服务领域中,比较常用的微服务网关主要是Zuul和Kong,其中,Zuul作为spring cloud体系中的网关基础组件,能很方便的与Eureka(Netflix开发的服务发现组件)、Ribbon(Netflix公司开源的负载均衡组件)等组件集成,以实现微服务的注册、负载均衡等功能,但是,在其他功能的动态扩展上则需要通过使用Groovy语言编写脚本后动态加载才能实现。
在本实施例中,涉及的微服务网关比如可为应用于Spring cloud框架下的基于Zuul的微服务网关。为了解决实现上述功能扩展时对Groovy等脚本语言依赖的问题,本方案可采用外置JAR包(也可称为JAR档案文件,Java Archive File),通过预置的类加载器进行动态加载以实现微服务网关的功能扩展。
在实际应用中,为了实现针对微服务网关的预置路由转发功能(可理解为本实施例中自定义的路由转发功能)、预置过滤器功能(可理解为本实施例中自定义的过滤器功能)的扩展,可由开发人员预先配置包括预置路由转发规则的配置文件,且可预先通过Java语言开发出用于实现预置过滤规则的过滤器所对应的应用程序,然后将上述配置文件及应用程序压缩成JAR包,并将该JAR包存储于预置位置,比如可将JAR包存储于一个指定的路径上。
基于此,如图1所示,该基于微服务网关的数据处理方法可包括如下步骤:
S01,根据预置位置信息判断是否存在JAR包,其中,JAR包中包括配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序,预置位置用于存储JAR包。
在本实施例中,可预先将JAR包预先存储于预置位置上,因此,可直接根据预置位置信息(比如路径信息等)来查找JAR包。具体实现时,可预先设置一个针对JAR包的轮询程序,在需要判断JAR是否存在时,可先启动该针对JAR包的轮询程序。本实施例中可以长轮询的方式实现,比设置该轮询程序可基于预置位置信息定时发出“询问”请求(如基于路径信息每隔60秒发出一次“询问”请求),当服务器接收到该“询问”请求后,判断预置位置是否存在JAR包,当判断结果为预置位置存在JAR包时,则会针对“询问”请求做出响应,在轮询程序接收到响应的情况,即可对应为检测到JAR包;当判断结果为预置位置不存在JAR包,则可不做出任何响应,在轮询程序未接收到任何响应的情况,即可对应为未检测到JAR包。
若通过轮询程序未检测到JAR包,则可继续轮询,直到检测到JAR包为止;若通过轮询程序检测到JAR包,则执行后续步骤。
S02,在存在JAR包的情况下,判断JAR包的版本是否为最新版本。
也就是说,在S01中比如通过轮询程序根据预置的路径信息等检测到JAR包的情况下,则可获取该检测到的JAR包的版本信息(比如版本号),并进一步判断该JAR包的版本是否为最新版本。
针对JAR包版本的判断,以上述通过轮询程序检测JAR包的方式为例,当每次检测到JAR包后,都可对该检测到的JAR包的相关信息进行记录(如,可以覆盖存储的方式进行记录),比如该JAR包的版本号、该JAR包的名称、检测到该JAR包的时间等。由此,可根据上述记录中的信息来判断每次检测到的JAR包的版本,比如将当前检测到的JAR包的版本号与记录中的JAR包的版本号进行比对以判断是否为更新的版本号,如果不是(比如两版本号相同),则可判定当前检测到的JAR包不是最新版本,即当前检测到的JAR包可能还是之前曾经检测到的JAR包,则可先不执行后续步骤;如果是(比如当前检测到的JAR包版本号高于记录中的JAR包的版本号),则可判定当前检测到的JAR包的版本为最新版本,即当前检测到的JAR包为最新版本的JAR包,则可执行后续步骤。
S03,在存在最新版本JAR包的情况下,将最新版本的JAR包加载到微服务网关中。
也就是说,在S02的判断结果为存在最新版本JAR包的情况下,可将该最新版本的JAR包加载到本地(也即微服务网关中)。
在本实施例中,针对上述加载过程,比如可先对现有版本的JAR包进行清理,再将最新版本的JAR包中的类文件加载到新建的类加载器中,然后再将最新版本的JAR包中配置有预置路由转发规则的配置文件及用于实现预置过滤器功能的应用程序,也加载到微服务网关中,也就是说,可通过上述先清理再加载的过程以完成针对最新版本的JAR包的加载。
S04,基于最新版本的JAR包中的配置文件和/或应用程序,执行预置路由转发规则对应的路由转发和/或预置过滤规则对应的过滤。
在S03将最新版本的JAR包加载到本地(也即微服务网关)后,可在接收到微服调用请求时,一方面,可根据最新版本的JAR包中的配置文件,执行配置文件中包括的预置路由转发规则所对应的路由转发,另一方面,可通过执行最新版本的JAR包中的应用程序以实现执行预置过滤规则对应的过滤。
以此,可改变现有Zuul等微服务网关在动态扩展额外功能时,需要依赖于Groovy等语言编写代码的方式,而是可提供基于外置JAR包的热部署功能,也即在无需使用Groovy等语言编写代码且无需重启微服务网关的情况下,借助于外置的包括可实现相关功能的配置文件及应用程序等内容的JAR包,实现对微服务网关的额外功能(比如自定义的路由转发、自定义过滤器等功能)的扩展,以此,无需开发人员学习新的脚本语言,而是通过使用较为熟练的Java语言编写可实现相关功能的配置文件、应用程序等并压缩成JAR包即可,可保证相关JAR包的生成速度,降低针对微服务网关功能扩展的难度,从而可提高实现微服务网关功能扩展的效率。
此外,在本实施例中,微服务网关可选择与注册中心连接,也可选择不与注册中心连接,因此,针对微服务调用请求的转发,可对应不同的实现方式。
比如,在一种实现方式下,可对应于微服务网关不与注册中心连接的情况,在此种情况下,由于微服务网关无法从注册中心获得服务器的地址信息,因此,可将微服务网关连接的微服务(在本实施例中,也可理解为微服务网关下挂的微服务)所对应服务器的地址信息(在本实施例中,地址信息可包括IP地址和端口号等)存储于JAR包中,比如,可存储于JAR包的配置文件中。
基于此,当微服务网关接收到针对任一微服务的调用请求时(该任一微服务包含于微服务网关下挂的微服务中),则可通过JAR包(比如可通过读取JAR包中的配置文件)获取该微服务所对应服务器的地址信息,并可根据获取到的地址信息将该调用请求转发至对应的服务器,以便该对应的服务器对针对微服务的调用请求进行处理。
在另一种实现方式下,可对应于微服务网关与注册中心连接的情况,在此种情况下,可将微服务网关连接的微服务所对应服务器的地址信息注册到注册中心,同时,也可将微服务网关本身的地址信息也注册到注册中心。
基于此,当微服务网关接收到针对任一微服务的调用请求时(该任一微服务包含于微服务网关下挂的微服务中),可通过注册中心获取该微服务所对应服务器的地址信息,并可根据获取到的地址信息将该调用请求转发至对应的服务器,以便该对应的服务器对针对微服务的调用请求进行处理。
需要说明的是,由于微服务网关本身通常需要以集群形式部署,而网关会在注册中心注册自己的IP地址等地址信息,此时一旦发生微服务网关扩容或微服务网关地址变更等情况,会涉及到大量的开墙操作,因此,微服务网关向注册中心注册自己的IP地址等地址信息的同时,还需要向注册中心提供连接于微服务网关及客户端之间的负载均衡器(比如F5)的地址信息。
此外,在本实施例中,还可提供基于微服务网关的灰度发布功能,所谓灰色发布是指在黑与白之间能够平滑过渡的一种发布方式,其目的是为了在初始灰度时期即可发现问题并调整问题,以保证服务的稳定性。
在具体实现时,可预先设置灰度策略,在预置灰度策略中可配置与灰度发布相关的规则等内容,比如可包括:每个微服务对应的灰度版本信息(如版本名称、版本号等)、每个微服务对应的灰度发布时间信息、每个微服务灰度发布时所占用的流量等,当然,可根据实际需要配置任何与灰度发布相关的内容。
在本实施例中,预置的灰度策略比如可包括如下内容(在n个微服务的情况下):
微服务1对应的灰度版本号为微服务1_0001,微服务1_0005;微服务2对应的灰度版本号为微服务2_0004,......,微服务n对应的灰度版本号为微服务n_0002,微服务n_0006;
微服务1对应的灰度发布时间为20180611,微服务2对应的发布时间为20180830,......,微服务n对应的灰度发布时间为20181010;
微服务1灰度发布时所占用的流量为10%,微服务2灰度发布时所占用的流量为40%,......,微服务n灰度发布时所占用的流量为30%。
基于此,本实施例中的恢复发布功能可通过如下步骤实现:
首先,可接收针对微服务的灰度请求,具体的,可在接收到针对微服务的调用请求后,采用预置的灰度前置过滤器基于预置灰度策略判断该针对微服务的请求是否为灰度请求,也即根据预置灰度策略进行灰度请求的识别,并可根据识别出的灰度请求构建服务灰度版本清单。
当判定接收到的针对微服务的调用请求为灰度请求后,则可从预置灰度策略中获取与该灰度请求对应的灰度版本号。具体的,可先获取预置灰度策略(在本实施例,预置灰度策略可存储于Redis缓存中),可并可将获取到的灰度策略保存到识别出的灰度请求的头文件(Header)中。然后,可进一步在预置的灰度策略中查询与该灰度请求对应的微服务的灰度版本号(在本实施例中,可称为目标灰度版本号)。
接下来,可通过注册中心确定具有上述目标灰度版本号的微服务所对应的服务器(在本实施例中,可称为目标服务器)的地址信息(比如,目标服务器的IP地址和端口号等信息)。
最后,可根据目标服务器的地址信息将该灰度请求转发至该目标服务器,以便目标服务器对灰度请求进行处理,以实现灰度发布。
以此,可在Zuul原有功能的基础上,进一步扩展了灰度发布功能,以在与微服务网关相关的系统发布新功能时,可快速切换到灰度环境以进行功能验证,以便可及时发现新功能存在的问题并及时解决问题,从而可保证系统稳定性。
根据本实施例的各个实施方式,可根据预置位置信息判断是否存在包括配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序的JAR包,若存在JAR包,则可继续判断JAR包的版本是否为最新版本,若该JAR包为最新版本,则将该最新版本的JAR包加载到微服务网关中,然后基于该最新版本的JAR包中的配置文件和/或应用程序,执行预置路由转发规则对应的路由转发和/或预置过滤规则对应的过滤。通过此方案,可改变现有微服务网关在动态扩展额外功能时,需要依赖于Groovy等脚本语言编写代码的方式,而是可提供基于外置JAR包的热部署功能,也即在无需使用Groovy等脚本语言编写代码且无需重启微服务网关的情况下,借助于外置的包括可实现相关功能的配置文件及应用程序等内容的JAR包,实现对微服务网关的额外功能(比如自定义的路由转发、自定义过滤器等功能)的扩展,以此,无需开发人员学习新的脚本语言,而是通过使用较为熟练的Java语言编写可实现相关功能的配置文件、应用程序等并压缩成JAR包即可,可保证实现相关功能的JAR包的生成速度,降低针对微服务网关功能扩展的难度,从而可提高实现微服务网关功能扩展的效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
实施例二
基于上述实施例一中提供的基于微服务网关的数据处理方法,本实施例中还提供可一种基于微服务网关的数据处理装置,具体地,图2至4示出了该基于微服务网关的数据处理装置的可选的结构框图,该基于微服务网关的数据处理装置被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明。本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合描述基于微服务网关的数据处理装置在存储介质中的执行过程,以下描述将具体介绍本实施例各程序模块的功能。
在本实施例中,可预先将包括配置有预置路由转发规则的配置文件及用于实现预置过滤器功能的应用程序的JAR包存储于预置位置。
如图2所示,该基于微服务网关的数据处理装置20可包括:
第一判断模块21,可用于根据预置位置信息判断是否存在JAR包,其中,JAR包中可包括配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序,预置位置用于存储JAR包;
第二判断模块22,可用于在第一判断模块21的判断结果为存在JAR包的情况下,判断JAR包的版本是否为最新版本;
加载模块23,可用于在第二判断模块22的判断结果为存在最新版本的JAR包的情况下,将最新版本的JAR包加载到微服务网关中;
执行模块24,用于基于最新版本的JAR包中的配置文件和/或应用程序,执行预置路由转发规则对应的路由转发和/或预置过滤规则对应的过滤。
进一步的,该装置还可包括:存储模块,用于预先将JAR包存储于预置位置。
基于此,第一判断模块21,可具体用于:
启动针对JAR包的轮询程序;
通过轮询程序基于预置位置信息检测JAR包是否存在。
在具体实现时,参看图3所示,加载模块23,可具体包括:
清理单元231,可用于对现有版本的JAR包进行清理;
第一加载单元232,可用于将最新版本的JAR包中的类文件加载到新建的类加载器中;
第二加载单元233,可用于将最新版本的JAR包中配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序加载到微服务网关中。
在本实施例中,一种实现方式下,该装置还可包括:
地址信息存储模块,可用于将微服务网关连接的微服务所对应服务器的地址信息存储于JAR包中;
请求转发模块,可用于当微服务网关接收到针对任一微服务的调用请求时,通过JAR包获取该微服务所对应服务器的地址信息并将调用请求转发至对应服务器。
在另一种实现方式下,该装置还可包括:
注册模块,可用于将微服务网关连接的微服务所对应服务器的地址信息注册到注册中心;
基于此,请求转发模块,还可用于当微服务网关接收到针对任一微服务的调用请求时,通过注册中心获取该微服务所对应服务器的地址信息并将调用请求转发至对应服务器。
在具体实现时,可在预置灰度策略中预先存储与微服务网关连接的所有微服务对应的灰度版本号。
参看图4所示,该装置还可包括:
请求接收模块41,可用于接收针对微服务的灰度请求;
目标版本号获取模块42,可用于从预置灰度策略中获取与灰度请求对应微服务的目标灰度版本号;
目标服务器确定模块43,可用于通过注册中心确定具有目标灰度版本号的微服务所对应的目标服务器的地址信息;
请求转发模块44,还可用于根据目标服务器的地址信息将灰度请求转发至目标服务器,以便目标服务器对灰度请求进行处理。
其中,请求接收模块41,可具体用于:
在接收到针对微服务的调用请求后,采用预置灰度前置过滤器基于预置灰度策略确定该针对微服务的调用请求是否为灰度请求。
关于上述实施例中的装置,其中各个单元、模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
通过本实施例的各个实施方式,可根据预置位置信息判断是否存在包括配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序的JAR包,若存在JAR包,则可继续判断JAR包的版本是否为最新版本,若该JAR包为最新版本,则将该最新版本的JAR包加载到微服务网关中,然后基于该最新版本的JAR包中的配置文件和/或应用程序,执行预置路由转发规则对应的路由转发和/或预置过滤规则对应的过滤。通过此方案,可改变现有微服务网关在动态扩展额外功能时,需要依赖于Groovy等脚本语言编写代码的方式,而是可提供基于外置JAR包的热部署功能,也即在无需使用Groovy等脚本语言编写代码且无需重启微服务网关的情况下,借助于外置的包括可实现相关功能的配置文件及应用程序等内容的JAR包,实现对微服务网关的额外功能(比如自定义的路由转发、自定义过滤器等功能)的扩展,以此,无需开发人员学习新的脚本语言,而是通过使用较为熟练的Java语言编写可实现相关功能的配置文件、应用程序等并压缩成JAR包即可,可保证实现相关功能的JAR包的生成速度,降低针对微服务网关功能扩展的难度,从而可提高实现微服务网关功能扩展的效率。
实施例三
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图5所示,本实施例的计算机设备50至少包括但不限于:可通过系统总线相互通信连接的存储器51、处理器52,如图5所示。需要指出的是,图5仅示出了具有组件51-52的计算机设备50,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器51(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器51可以是计算机设备50的内部存储单元,例如该计算机设备50的硬盘或内存。在另一些实施例中,存储器51也可以是计算机设备50的外部存储设备,例如该计算机设备50上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器51还可以既包括计算机设备50的内部存储单元也包括其外部存储设备。本实施例中,存储器51通常用于存储安装于计算机设备50的操作系统和各类应用软件,例如实施例二的基于微服务网关的数据处理装置的程序代码等。此外,存储器51还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器52在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器52通常用于控制计算机设备50的总体操作。本实施例中,处理器52用于运行存储器51中存储的程序代码或者处理数据,例如基于微服务网关的数据处理装置等。
实施例四
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于基于微服务网关的数据处理装置,被处理器执行时实现实施例一的基于微服务网关的数据处理方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于微服务网关的数据处理方法,其特征在于,包括如下步骤:
S01,根据预置位置信息判断是否存在JAR包,所述JAR包中包括配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序,所述预置位置用于存储所述JAR包;
S02,在存在所述JAR包的情况下,判断所述JAR包的版本是否为最新版本;
S03,在存在最新版本的JAR包的情况下,将所述最新版本的JAR包加载到微服务网关中;
S04,基于所述最新版本的JAR包中的配置文件和/或应用程序,执行预置路由转发规则对应的路由转发和/或预置过滤规则对应的过滤。
2.根据权利要求1所述的基于微服务网关的数据处理方法,其特征在于,还包括:预先将所述JAR包存储于预置位置;
S01根据预置位置信息判断是否存在JAR包,包括:
启动针对JAR包的轮询程序;
通过所述轮询程序基于预置位置信息检测所述JAR包是否存在。
3.根据权利要求1所述的基于微服务网关的数据处理方法,其特征在于,S03中将所述最新版本的JAR包加载到微服务网关中,包括:
对现有版本的JAR包进行清理;
将所述最新版本的JAR包中的类文件加载到新建的类加载器中;
将所述最新版本的JAR包中配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序加载到微服务网关中。
4.根据权利要求1所述的基于微服务网关的数据处理方法,其特征在于,还包括:
将微服务网关连接的微服务所对应服务器的地址信息存储于所述JAR包中;
当微服务网关接收到针对任一微服务的调用请求时,通过所述JAR包获取该微服务所对应服务器的地址信息并将所述调用请求转发至对应服务器。
5.根据权利要求1所述的基于微服务网关的数据处理方法,其特征在于,还包括:
将微服务网关连接的微服务所对应服务器的地址信息注册到注册中心;
当微服务网关接收到针对任一微服务的调用请求时,通过所述注册中心获取该微服务所对应服务器的地址信息并将所述调用请求转发至对应服务器。
6.根据权利要求5所述的基于微服务网关的数据处理方法,其特征在于,在预置灰度策略中预先存储与微服务网关连接的所有微服务对应的灰度版本号;
所述方法还包括:
接收针对微服务的灰度请求;
获取与所述灰度请求对应微服务的目标灰度版本号;
通过注册中心确定具有目标灰度版本号的微服务所对应的目标服务器的地址信息;
根据所述目标服务器的地址信息将所述灰度请求转发至目标服务器,以便目标服务器对所述灰度请求进行处理。
7.根据权利要求6所述的基于微服务网关的数据处理方法,其特征在于,所述接收针对微服务的灰度请求,包括:
在接收到针对微服务的调用请求后,采用预置灰度前置过滤器基于预置灰度策略确定该针对微服务的调用请求是否为灰度请求。
8.一种基于微服务网关的数据处理装置,其特征在于,包括:
第一判断模块,用于根据预置位置信息判断是否存在JAR包,所述JAR包中包括配置有预置路由转发规则的配置文件及用于实现预置过滤规则的过滤器所对应的应用程序,所述预置位置用于存储所述JAR包;
第二判断模块,用于在所述第一判断模块的判断结果为存在所述JAR包的情况下,判断所述JAR包的版本是否为最新版本;
加载模块,用于在第二判断模块的判断结果为存在最新版本的JAR包的情况下,将所述最新版本的JAR包加载到微服务网关中;
执行模块,用于基于所述最新版本的JAR包中的配置文件和/或应用程序,执行预置路由转发规则对应的路由转发和/或预置过滤规则对应的过滤。
9.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910040740.0A CN109857409A (zh) | 2019-01-16 | 2019-01-16 | 基于微服务网关的数据处理方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910040740.0A CN109857409A (zh) | 2019-01-16 | 2019-01-16 | 基于微服务网关的数据处理方法、装置及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109857409A true CN109857409A (zh) | 2019-06-07 |
Family
ID=66894788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910040740.0A Pending CN109857409A (zh) | 2019-01-16 | 2019-01-16 | 基于微服务网关的数据处理方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109857409A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110351190A (zh) * | 2019-06-17 | 2019-10-18 | 深圳壹账通智能科技有限公司 | 路由控制方法、装置以及计算机设备 |
CN111355743A (zh) * | 2020-03-11 | 2020-06-30 | 成都卓杭网络科技股份有限公司 | 一种基于api网关的管理方法及其系统 |
CN111580846A (zh) * | 2020-05-15 | 2020-08-25 | 厦门靠谱云股份有限公司 | 一种基于混合框架的微服务灰度发布方法 |
CN111586092A (zh) * | 2020-03-25 | 2020-08-25 | 深圳壹账通智能科技有限公司 | 全链路监控方法、系统及cat客户端 |
CN111818158A (zh) * | 2020-07-08 | 2020-10-23 | 京东方科技集团股份有限公司 | 网关控制方法、装置、电子设备及存储介质 |
CN112260876A (zh) * | 2020-10-26 | 2021-01-22 | 欧冶云商股份有限公司 | 动态网关路由配置方法、平台、计算机设备及存储介质 |
CN112379640A (zh) * | 2019-09-29 | 2021-02-19 | 北京城建设计发展集团股份有限公司 | 分布式智能感知控制器 |
CN112653579A (zh) * | 2020-12-16 | 2021-04-13 | 中国人寿保险股份有限公司 | 一种基于OpenResty的灰度发布方法及相关设备 |
CN113495747A (zh) * | 2020-04-07 | 2021-10-12 | 北京京东振世信息技术有限公司 | 一种灰度发布方法和装置 |
CN113572689A (zh) * | 2021-09-24 | 2021-10-29 | 深圳市信润富联数字科技有限公司 | 微服务网关管理方法、系统、设备、可读存储介质及产品 |
CN114745382A (zh) * | 2022-04-07 | 2022-07-12 | 中国邮政储蓄银行股份有限公司 | 任务分片方法、任务分片装置和业务系统 |
CN115225641A (zh) * | 2022-07-08 | 2022-10-21 | 浪潮云信息技术股份公司 | 一种Kong适配Nacos的客户端负载均衡方法及系统 |
-
2019
- 2019-01-16 CN CN201910040740.0A patent/CN109857409A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110351190A (zh) * | 2019-06-17 | 2019-10-18 | 深圳壹账通智能科技有限公司 | 路由控制方法、装置以及计算机设备 |
CN110351190B (zh) * | 2019-06-17 | 2022-10-28 | 深圳壹账通智能科技有限公司 | 路由控制方法、装置以及计算机设备 |
CN112379640A (zh) * | 2019-09-29 | 2021-02-19 | 北京城建设计发展集团股份有限公司 | 分布式智能感知控制器 |
CN112379640B (zh) * | 2019-09-29 | 2021-06-22 | 北京城建设计发展集团股份有限公司 | 分布式智能感知控制器 |
CN111355743A (zh) * | 2020-03-11 | 2020-06-30 | 成都卓杭网络科技股份有限公司 | 一种基于api网关的管理方法及其系统 |
CN111586092A (zh) * | 2020-03-25 | 2020-08-25 | 深圳壹账通智能科技有限公司 | 全链路监控方法、系统及cat客户端 |
CN113495747A (zh) * | 2020-04-07 | 2021-10-12 | 北京京东振世信息技术有限公司 | 一种灰度发布方法和装置 |
CN113495747B (zh) * | 2020-04-07 | 2023-09-26 | 北京京东振世信息技术有限公司 | 一种灰度发布方法和装置 |
CN111580846A (zh) * | 2020-05-15 | 2020-08-25 | 厦门靠谱云股份有限公司 | 一种基于混合框架的微服务灰度发布方法 |
CN111818158A (zh) * | 2020-07-08 | 2020-10-23 | 京东方科技集团股份有限公司 | 网关控制方法、装置、电子设备及存储介质 |
CN112260876A (zh) * | 2020-10-26 | 2021-01-22 | 欧冶云商股份有限公司 | 动态网关路由配置方法、平台、计算机设备及存储介质 |
CN112653579A (zh) * | 2020-12-16 | 2021-04-13 | 中国人寿保险股份有限公司 | 一种基于OpenResty的灰度发布方法及相关设备 |
CN112653579B (zh) * | 2020-12-16 | 2023-05-23 | 中国人寿保险股份有限公司 | 一种基于OpenResty的灰度发布方法及相关设备 |
CN113572689A (zh) * | 2021-09-24 | 2021-10-29 | 深圳市信润富联数字科技有限公司 | 微服务网关管理方法、系统、设备、可读存储介质及产品 |
CN114745382A (zh) * | 2022-04-07 | 2022-07-12 | 中国邮政储蓄银行股份有限公司 | 任务分片方法、任务分片装置和业务系统 |
CN115225641A (zh) * | 2022-07-08 | 2022-10-21 | 浪潮云信息技术股份公司 | 一种Kong适配Nacos的客户端负载均衡方法及系统 |
CN115225641B (zh) * | 2022-07-08 | 2024-04-16 | 浪潮云信息技术股份公司 | 一种Kong适配Nacos的客户端负载均衡方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857409A (zh) | 基于微服务网关的数据处理方法、装置及计算机设备 | |
CN110311790B (zh) | 一种跨链发送可认证消息的方法和装置 | |
CN110443704B (zh) | 一种跨链发送资源的方法和装置 | |
CN109547570B (zh) | 服务注册方法、装置、注册中心管理设备及存储介质 | |
CN110430162B (zh) | 一种跨链发送可认证消息的方法和装置 | |
CN107911421B (zh) | 用于配置区块链中跨网络通信的方法、设备和计算机存储介质 | |
US9572025B2 (en) | Method, server, computer program and computer program product for communicating with secure element | |
CN103744686B (zh) | 智能终端中应用安装的控制方法和系统 | |
CN112491604A (zh) | 物联网设备的远程管理实现方法、装置及系统 | |
US20200257776A1 (en) | Request authorization using recipe-based service coordination | |
US20180218368A1 (en) | Data transformation engine | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN108549542A (zh) | 一种文件部署方法、装置及设备 | |
CN111796860A (zh) | 微前端方案实现方法及装置 | |
CN112882792A (zh) | 信息加载方法、计算机设备及存储介质 | |
CN112162925A (zh) | 一种基于服务虚拟化的测试方法和系统 | |
CN102197390B (zh) | 通过实现和绑定合约向客户机服务提供功能 | |
CN111651140A (zh) | 基于工作流的服务方法及装置 | |
CN111586022A (zh) | 防火墙开墙验证方法、电子装置、计算机设备及存储介质 | |
CN109840103A (zh) | 应用程序容器的更新方法、装置和存储介质 | |
CN108664343A (zh) | 一种微服务的有状态调用方法及装置 | |
CN113190287A (zh) | 外部设备对接方法、装置、计算机设备及可读存储介质 | |
CN111726328A (zh) | 用于对第一设备进行远程访问的方法、系统以及相关设备 | |
US6862614B2 (en) | Adaptation of service applications to heterogeneous execution context by means of smart cards | |
CN111651169B (zh) | 基于web容器的区块链智能合约运行方法及系统 |
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 |