CN112039780B - 基于Zuul的持久化动态路由实现方法、电子设备及存储介质 - Google Patents

基于Zuul的持久化动态路由实现方法、电子设备及存储介质 Download PDF

Info

Publication number
CN112039780B
CN112039780B CN202010901099.8A CN202010901099A CN112039780B CN 112039780 B CN112039780 B CN 112039780B CN 202010901099 A CN202010901099 A CN 202010901099A CN 112039780 B CN112039780 B CN 112039780B
Authority
CN
China
Prior art keywords
routing
route
zuul
database
routing information
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
CN202010901099.8A
Other languages
English (en)
Other versions
CN112039780A (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.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology 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 Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202010901099.8A priority Critical patent/CN112039780B/zh
Publication of CN112039780A publication Critical patent/CN112039780A/zh
Application granted granted Critical
Publication of CN112039780B publication Critical patent/CN112039780B/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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery

Landscapes

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

Abstract

本发明公开了一种基于Zuul的持久化动态路由实现方法、电子设备及存储介质,属于云计算技术领域,本发明要解决的技术问题为如何在无需停止服务的条件下进行服务动态路由的刷新,并提供持久化功能,采用的技术方案为:该方法是通过继承开源组件Zuul的路由定位器公共类SimpleRouteLocator实现自定义路由定位器CommonRouteLocator,并使用接口RefreshableRouteLocator为路由定位器添加路由刷新功能;再通过将路由信息存入数据库的方式实现路由持久化,并添加定时任务定时从数据库读取路由信息并触发事件刷新路由,服务工程不仅能从Spring的配置文件properties加载路由信息,还能从数据库加载配置的路由信息,进而实现动态刷新内存中的路由信息,达到不停机维护路由信息的效果。

Description

基于Zuul的持久化动态路由实现方法、电子设备及存储介质
技术领域
本发明涉及云计算技术领域,具体地说是一种基于Zuul的持久化动态路由实现方法、电子设备及存储介质。
背景技术
Zuul是Netflix提供的一个开源组件,致力于在云平台上提供动态路由、监控、弹性、安全等边缘服务的框架。
从Zuul组件类的接口关系来看,有考虑到了路由刷新的需求,但是默认实现的SimpleRouteLocator类没有实现路由刷新接口RefreshableRouteLocator,虽然DiscoveryClientRouteLocator类继承了接口RefreshableRouteLocator实现了刷新路由功能,但eureka属于侵入式的网关模块,侵入式让用户代码产生对框架的依赖,以致不能在框架外使用,不利于代码的复用,此处放弃使用DiscoveryClientRouteLocator类,通过改造SimpleRouteLocator类可以使其具备刷新能力。
sprig通过使用Zuul组件的@EnableZuulProxy注解,在容器初始化时,会将Zuul的相关配置初始化,其中包含一个Spring Boot的BeanServletRegist rationBean,该类主要用于注册Servlet,在Servlet的service方法中,执行各种Zuul过滤器。
对于传统的服务工程项目配置路由主要有两种方式,要么用yml配置文件,要么写在代码里。而无论是用配置文件还是代码配置,服务工程启动后将无法修改路由的配置。如果有新的路由要求上线,则需要修改yml位置文件后重启工程。然而这有损于服务的时效性与连续性,对于路由更新比较频繁的项目更是不切实际。
故如何在无需停止服务的条件下进行服务动态路由的刷新,并提供持久化功能是目前亟待解决的技术问题。
专利号为CN111314226A的专利文献公开了一种可在zuul网关动态配置多协议下游服务转发的方法。该方法:首先,通过自定义路由定位器,改变拦截分发服务根路径,同时修改刷新策略以及路由的加载初始化和刷新策略;而后,通过自定义过滤器,实现包括签名、路由请求包装、协议分发控制、异常处理、结果处理对应的操作。该技术方案是实现了分发控制与异常处理,不能实现在无需停止服务的条件下进行服务动态路由的刷新,也无法实现持久化功能。
发明内容
本发明的技术任务是提供一种基于Zuul的持久化动态路由实现方法、电子设备及存储介质,来解决如何在无需停止服务的条件下进行服务动态路由的刷新,并提供持久化功能的问题。
本发明的技术任务是按以下方式实现的,一种基于Zuul的持久化动态路由实现方法,该方法是通过继承开源组件Zuul的路由定位器公共类SimpleRoute Locator实现自定义路由定位器CommonRouteLocator,并使用接口Refreshabl eRouteLocator为路由定位器添加路由刷新功能;再通过将路由信息存入数据库的方式实现路由持久化,并添加定时任务定时从数据库读取路由信息并触发事件刷新路由,服务工程不仅能从Spring的配置文件properties加载路由信息,还能从数据库加载配置的路由信息,进而实现动态刷新内存中的路由信息,达到不停机维护路由信息的效果。
作为优选,该方法具体如下:
S1、数据库建表dynamic_route:保存服务工程中的路由信息,通过路由信息的入库操作,提供路由持久化功能;
S2、在服务工程中添加对应Zuul版本的依赖:org.springframework.clo ud中的spring-cloud-starter-netflix-Zuul;
S3、在Spring配置文件中添加所需要的静态路由信息;
S4、在服务工程的启动类上添加注解@EnableZuulProxy;
S5、新建类ZuulRouteService:提供对路由信息的刷新操作以及业务层面上对路由信息的增加删除以及查询操作;
S6、新建类DbZuulRouteService:为ZuulRouteService的依赖,对数据库的操作与业务逻辑解耦,并提供在数据库层面上对数据库内路由信息的增删改查;
S7、新建类CommonRouteLocator继承Zuul的路由定位器SimpleRouteLoc ator类,并继承Zuul中用来刷新路由信息的接口RefreshableRouteLocator;
S8、新建类CommonZuulConfig:为Springboot注入CommonRouteLocator的实例化Bean;
S9、对路由信息的增加与删除操作:在有新增路由信息或者删除路由信息的业务需求时,调用ZuulRouteService的create或者delete方法对数据库进行修改;
S10、添加定时任务,定时从数据库读取新的路由信息并刷新路由信息。
更优地,所述步骤S1中数据库建表dynamic_route具体如下:
S101、表的字段参照Zuul组件ZuulProperties类中用来描述路由信息的内部类ZuulRoute,表的字段包括成员变量id(作为主键)、path、serviceId、url、stripPrefix及retryable;
S102、根据需要添加name、create_time和update_time字段。
更优地,所述步骤S2中在服务工程中添加对应Zuul版本的依赖具体如下:
数据库中保存路由信息的表的对象关系映射类为org.springframework.c loud.netflix.zuul.filters.ZuulProperties.ZuulRoute。
更优地,所述步骤S5中新建类ZuulRouteService时,需要注入的依赖有Zuul组件的ApplicationEventPublisher和RouteLocator,并添加自定义类D bZuulRouteService的依赖来实现数据库层面上对路由信息的增删改查;具体如下:
S501、添加方法函数refreshRoute():通过routeLocator对象触发Zuul的路由信息刷新事件,具体如下:
①、由routeLocator生成RoutesRefreshedEvent对象;
②、调用publishEvent函数来实现工程项目内的路由更新,具体为:
routesRefreshedEvent=new RoutesRefreshedEvent(routeLocator);
publisher.publishEvent(routesRefreshedEvent);
S502、添加方法函数List<Route>getRoutes():获取当前项目中存在的有效路由信息列表;并通过调用函数routeLocator.getRoutes()来直接获取,函数返回值为List<Zuul.filters.Route>;
S503、添加函数create(ZuulRoute route):在数据库中,调用DbZuulRouteService类的增加新建路由信息功能;
S504、添加函数boolean delete(String id):在数据库中,调用DbZuulRouteService类的删除路由信息功能;
S505、添加函数List<ZuulRoute>findRoutesFromDB():在数据库中,调用DbZuulRouteService类的查询路由信息功能。
更优地,所述步骤S6中新建类DbZuulRouteService中添加的方法有List<ZuulRoute>findAll(),ZuulRoute save(ZuulRoute router)以及boolean de lete(String id)。
更优地,所述步骤S7中CommonRouteLocator重写父类SimpleRouteLocat or的方法locateRoutes(),并实现接口RefreshableRouteLocator中的refre sh()方法,具体如下:
S701、locateRoutes()方法作用是为Zuul读取路由配置信息,函数返回值是LinkedHashMap<String,ZuulProperties.ZuulRoute>;其中,路由配置信息包括配置文件中的静态路由信息以及数据库中的动态路由信息,具体如下:
①、对于配置文件中的静态路由信息:调用父类的locateRoutes()方法;
②、对于数据库内的动态路由信息:调用类ZuulRouteService中查询路由的findRoutesFromDB()方法;
S702、refresh()方法调用父类SimpleRouteLocator加载路由配置信息的方法doRefresh();doRefresh()调用locateRoutes()方法,通过java的多态机制实现CommonRouteLocator类调用自己locateRoutes()方法来加载路由配置信息的过程,通过RoutesRefreshedEvent事件触发到locator的刷新路由信息功能。
更优地,所述步骤S10中添加定时任务,定时从数据库读取新的路由信息并刷新路由信息具体如下:
S1001、通过调用ZuulRouteService的方法refreshRoute(),使用Route Locator接口的所有路由定位器routeLocator生成RoutesRefreshedEvent对象;
S1002、调用ApplicationEventPublisher的publishEvent(routesRefreshedEvent)方法实现服务工程内的动态路由信息刷新。
一种电子设备,包括:存储器和至少一个处理器;
其中,所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上述的基于Zuul的持久化动态路由实现方法。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行时,实现如上述的基于Zuul的持久化动态路由实现方法。
本发明的基于Zuul的持久化动态路由实现方法、电子设备及存储介质具有以下优点:
(一)本发明通过Zuul组件动态刷新内存中的路由信息,达到了不停机维护路由信息的效果,即在无需停止服务的条件下进行服务动态路由刷新,并提供了持久化功能;
(二)通过使用本发明,服务工程不仅能从Spring的配置文件propertie s加载静态路由信息,还能从数据库加载我们配置的动态路由信息,同时将路由信息存入数据库实现路由持久化保存,达到了持久化功能;
(三)本发明自定义路由定位器通过继承SimpleRouteLocator类和接口RefreshableRouteLocator,在保留Zuul路由定位器功能的基础上添加了路由刷新功能;
(四)本发明通过添加定时任务定时读取并刷新路由,解耦了添加路由的业务操作与Spring的路由刷新操作;
(五)本发明通过RouteLocator接口的所有实现类对象routeLocator即路由定位器来生成RoutesRefreshedEvent对象并调用ApplicationEventPubli sher的publishEvent(routesRefreshedEvent)方法来实现服务工程的路由刷新。
附图说明
下面结合附图对本发明进一步说明。
附图1为基于Zuul的持久化动态路由实现方法的流程框图。
具体实施方式
参照说明书附图和具体实施例对本发明的基于Zuul的持久化动态路由实现方法、电子设备及存储介质作以下详细地说明。
实施例1:
如附图1所示,本发明的基于Zuul的持久化动态路由实现方法,该方法是通过继承开源组件Zuul的路由定位器公共类SimpleRouteLocator实现自定义路由定位器CommonRouteLocator,并使用接口RefreshableRouteLocator为路由定位器添加路由刷新功能;再通过将路由信息存入数据库的方式实现路由持久化,并添加定时任务定时从数据库读取路由信息并触发事件刷新路由,服务工程不仅能从Spring的配置文件properties加载路由信息,还能从数据库加载配置的路由信息,进而实现动态刷新内存中的路由信息,达到不停机维护路由信息的效果;具体如下:
S1、数据库建表dynamic_route:保存服务工程中的路由信息,通过路由信息的入库操作,提供路由持久化功能;具体如下:
S101、表的字段参照Zuul组件ZuulProperties类中用来描述路由信息的内部类ZuulRoute,表的字段包括成员变量id(作为主键)、path、serviceId、url、stripPrefix及retryable;
S102、根据需要添加name、create_time和update_time字段。
S2、在服务工程中添加对应Zuul版本的依赖:org.springframework.clo ud中的spring-cloud-starter-netflix-Zuul;具体如下:
数据库中保存路由信息的表的对象关系映射类为org.springframework.c loud.netflix.zuul.filters.ZuulProperties.ZuulRoute。
S3、在Spring配置文件中添加所需要的静态路由信息;
S4、在服务工程的启动类上添加注解@EnableZuulProxy;
S5、新建类ZuulRouteService:提供对路由信息的刷新操作以及业务层面上对路由信息的增加删除以及查询操作;新建类ZuulRouteService时,需要注入的依赖有Zuul组件的ApplicationEventPublisher和RouteLocator,并添加自定义类DbZuulRouteService的依赖来实现数据库层面上对路由信息的增删改查;具体如下:
S501、添加方法函数refreshRoute():通过routeLocator对象触发Zuul的路由信息刷新事件,具体如下:
①、由routeLocator生成RoutesRefreshedEvent对象;
②、调用publishEvent函数来实现工程项目内的路由更新,具体为:
routesRefreshedEvent=new RoutesRefreshedEvent(routeLocator);
publisher.publishEvent(routesRefreshedEvent);
S502、添加方法函数List<Route>getRoutes():获取当前项目中存在的有效路由信息列表;并通过调用函数routeLocator.getRoutes()来直接获取,函数返回值为List<Zuul.filters.Route>;
S503、添加函数create(ZuulRoute route):在数据库中,调用DbZuulRouteService类的增加新建路由信息功能;
S504、添加函数boolean delete(String id):在数据库中,调用DbZuulRouteService类的删除路由信息功能;
S505、添加函数List<ZuulRoute>findRoutesFromDB():在数据库中,调用DbZuulRouteService类的查询路由信息功能。
S6、新建类DbZuulRouteService:为ZuulRouteService的依赖,对数据库的操作与业务逻辑解耦,并提供在数据库层面上对数据库内路由信息的增删改查;新建类DbZuulRouteService中添加的方法有List<ZuulRoute>findAll(),ZuulRoute save(ZuulRoute router)以及boolean delete(String id)。
S7、新建类CommonRouteLocator继承Zuul的路由定位器SimpleRouteLoc ator类,并继承Zuul中用来刷新路由信息的接口RefreshableRouteLocator;CommonRouteLocator重写父类SimpleRouteLocator的方法locateRoutes(),并实现接口RefreshableRouteLocator中的refresh()方法,具体如下:
S701、locateRoutes()方法作用是为Zuul读取路由配置信息,函数返回值是LinkedHashMap<String,ZuulProperties.ZuulRoute>;其中,路由配置信息包括配置文件中的静态路由信息以及数据库中的动态路由信息,具体如下:
①、对于配置文件中的静态路由信息:调用父类的locateRoutes()方法;
②、对于数据库内的动态路由信息:调用类ZuulRouteService中查询路由的findRoutesFromDB()方法;
S702、refresh()方法调用父类SimpleRouteLocator加载路由配置信息的方法doRefresh();doRefresh()调用locateRoutes()方法,通过java的多态机制实现CommonRouteLocator类调用自己locateRoutes()方法来加载路由配置信息的过程,通过RoutesRefreshedEvent事件触发到locator的刷新路由信息功能。
S8、新建类CommonZuulConfig:为Springboot注入CommonRouteLocator的实例化Bean;
S9、对路由信息的增加与删除操作:在有新增路由信息或者删除路由信息的业务需求时,调用ZuulRouteService的create或者delete方法对数据库进行修改;
S10、添加定时任务,定时从数据库读取新的路由信息并刷新路由信息:具体如下:
S1001、通过调用ZuulRouteService的方法refreshRoute(),使用Route Locator接口的所有路由定位器routeLocator生成RoutesRefreshedEvent对象;
S1002、调用ApplicationEventPublisher的publishEvent(routesRefreshedEvent)方法实现服务工程内的动态路由信息刷新。
实施例2:
本发明实施例还提供了一种电子设备,包括:存储器和至少一个处理器;
其中,所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如实施例1中基于Zuul的持久化动态路由实现方法。
实施例3:
本发明实施例还提供了一种计算机可读存储介质,其中存储有多条指令,指令由处理器加载,使处理器执行本发明任一实施例中的基于Zuul的持久化动态路由实现方法方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-R基于Zuul的持久化动态路由实现方法、电子设备及存储介质M、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (9)

1.一种基于Zuul的持久化动态路由实现方法,其特征在于,该方法是通过继承开源组件Zuul的路由定位器公共类SimpleRouteLocator实现自定义路由定位器CommonRouteLocator,并使用接口RefreshableRouteLocator为路由定位器添加路由刷新功能;再通过将路由信息存入数据库的方式实现路由持久化,并添加定时任务定时从数据库读取路由信息并触发事件刷新路由,服务工程不仅能从Spring的配置文件properties加载路由信息,还能从数据库加载配置的路由信息,进而实现动态刷新内存中的路由信息,达到不停机维护路由信息的效果;该方法具体如下:
S1、数据库建表dynamic_route:保存服务工程中的路由信息,通过路由信息的入库操作,提供路由持久化功能;
S2、在服务工程中添加对应Zuul版本的依赖:org.springframework.cloud中的spring-cloud-starter-netflix-Zuul;
S3、在Spring配置文件中添加所需要的静态路由信息;
S4、在服务工程的启动类上添加注解@EnableZuulProxy;
S5、新建类ZuulRouteService:提供对路由信息的刷新操作以及业务层面上对路由信息的增加删除以及查询操作;
S6、新建类DbZuulRouteService:为ZuulRouteService的依赖,对数据库的操作与业务逻辑解耦,并提供在数据库层面上对数据库内路由信息的增删改查;
S7、新建类CommonRouteLocator继承Zuul的路由定位器SimpleRouteLocator类,并继承Zuul中用来刷新路由信息的接口RefreshableRouteLocator;
S8、新建类CommonZuulConfig:为Springboot注入CommonRouteLocator 的实例化Bean;
S9、对路由信息的增加与删除操作:在有新增路由信息或者删除路由信息的业务需求时,调用ZuulRouteService的create或者delete方法对数据库进行修改;
S10、添加定时任务,定时从数据库读取新的路由信息并刷新路由信息。
2.根据权利要求1所述的基于Zuul的持久化动态路由实现方法,其特征在于,所述步骤S1中数据库建表dynamic_route具体如下:
S101、表的字段参照Zuul组件ZuulProperties类中用来描述路由信息的内部类ZuulRoute,表的字段包括成员变量id、path、serviceId、url、stripPrefix及retryable;
S102、根据需要添加name、create_time和update_time字段。
3.根据权利要求1所述的基于Zuul的持久化动态路由实现方法,其特征在于,所述步骤S2中在服务工程中添加对应Zuul版本的依赖具体如下:数据库中保存路由信息的表的对象关系映射类为org.springframework.cloud.netflix.zuul.filters.ZuulProperties.ZuulRoute。
4.根据权利要求1所述的基于Zuul的持久化动态路由实现方法,其特征在于,所述步骤S5中新建类ZuulRouteService时,需要注入的依赖有Zuul组件的ApplicationEventPublisher和RouteLocator,并添加自定义类DbZuulRouteService的依赖来实现数据库层面上对路由信息的增删改查;具体如下:
S501、添加方法函数refreshRoute():通过routeLocator对象触发Zuul的路由信息刷新事件,具体如下:
①、由routeLocator生成RoutesRefreshedEvent对象;
②、调用publishEvent函数来实现工程项目内的路由更新,具体为:
routesRefreshedEvent = new RoutesRefreshedEvent(routeLocator);
publisher.publishEvent(routesRefreshedEvent);
S502、添加方法函数List<Route>getRoutes():获取当前项目中存在的有效路由信息列表;并通过调用函数routeLocator.getRoutes()来直接获取,函数返回值为List<Zuul.filters.Route>;
S503、添加函数create(ZuulRoute route):在数据库中,调用DbZuulRouteService类的增加新建路由信息功能;
S504、添加函数boolean delete(String id):在数据库中,调用DbZuulRouteService类的删除路由信息功能;
S505、添加函数List<ZuulRoute>findRoutesFromDB():在数据库中,调用DbZuulRouteService类的查询路由信息功能。
5.根据权利要求1所述的基于Zuul的持久化动态路由实现方法,其特征在于,所述步骤S6中新建类DbZuulRouteService中添加的方法有List<ZuulRoute>findAll(),ZuulRoutesave(ZuulRoute router)以及boolean delete(String id)。
6.根据权利要求1所述的基于Zuul的持久化动态路由实现方法,其特征在于,所述步骤S7中CommonRouteLocator重写父类SimpleRouteLocator的方法locateRoutes(),并实现接口RefreshableRouteLocator中的refresh()方法,具体如下:
S701、locateRoutes()方法作用是为Zuul读取路由配置信息,函数返回值是LinkedHashMap<String, ZuulProperties.ZuulRoute>;其中,路由配置信息包括配置文件中的静态路由信息以及数据库中的动态路由信息,具体如下:
①、对于配置文件中的静态路由信息:调用父类的locateRoutes()方法;
②、对于数据库内的动态路由信息:调用类ZuulRouteService中查询路由的findRoutesFromDB()方法;
S702、refresh()方法调用父类SimpleRouteLocator加载路由配置信息的方法doRefresh(); doRefresh()调用locateRoutes()方法,通过java的多态机制实现CommonRouteLocator类调用自己locateRoutes()方法来加载路由配置信息的过程,通过RoutesRefreshedEvent事件触发到locator的刷新路由信息功能。
7.根据权利要求1-6中任一所述的基于Zuul的持久化动态路由实现方法,其特征在于,所述步骤S10中添加定时任务,定时从数据库读取新的路由信息并刷新路由信息具体如下:
S1001、通过调用ZuulRouteService的方法refreshRoute(),使用RouteLocator接口的所有路由定位器routeLocator生成RoutesRefreshedEvent对象;
S1002、调用ApplicationEventPublisher的publishEvent(routesRefreshedEvent)方法实现服务工程内的动态路由信息刷新。
8.一种电子设备,其特征在于,包括:存储器和至少一个处理器;
其中,所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述的基于Zuul的持久化动态路由实现方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行时,实现如权利要求1至7中任一项所述的基于Zuul的持久化动态路由实现方法。
CN202010901099.8A 2020-09-01 2020-09-01 基于Zuul的持久化动态路由实现方法、电子设备及存储介质 Active CN112039780B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010901099.8A CN112039780B (zh) 2020-09-01 2020-09-01 基于Zuul的持久化动态路由实现方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010901099.8A CN112039780B (zh) 2020-09-01 2020-09-01 基于Zuul的持久化动态路由实现方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN112039780A CN112039780A (zh) 2020-12-04
CN112039780B true CN112039780B (zh) 2022-03-15

Family

ID=73585909

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010901099.8A Active CN112039780B (zh) 2020-09-01 2020-09-01 基于Zuul的持久化动态路由实现方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112039780B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115150316A (zh) * 2021-03-15 2022-10-04 上海博泰悦臻网络技术服务有限公司 基于动态路由的网关控制方法、装置、介质及网关设备
CN113918263B (zh) * 2021-11-11 2023-09-05 盐城天眼察微科技有限公司 视图组件的虚拟路由方法、装置、设备及计算机存储介质
CN114567586A (zh) * 2022-03-04 2022-05-31 中国农业银行股份有限公司 网关路由动态添加方法、装置、电子设备以及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109672553A (zh) * 2018-10-23 2019-04-23 平安科技(深圳)有限公司 网关动态配置方法、系统、计算机设备及存储介质
CN111181727A (zh) * 2019-12-16 2020-05-19 北京航天智造科技发展有限公司 一种基于微服务的开放api全生命周期管理方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101242371B (zh) * 2008-03-14 2010-11-10 杭州华三通信技术有限公司 基于PCIe交换架构路由器堆叠的方法、系统和装置
CN102075361A (zh) * 2011-01-19 2011-05-25 中兴通讯股份有限公司 一种恢复环网业务的方法及节点设备
CN108446111A (zh) * 2018-03-26 2018-08-24 国家电网公司客户服务中心 一种基于Spring cloud的微服务构建方法
CN109101334A (zh) * 2018-06-29 2018-12-28 中译语通科技股份有限公司 一种面向Zuul网关的微服务并发控制方法
CN111181860A (zh) * 2020-01-07 2020-05-19 苏宁云计算有限公司 基于zuul网关的路由转发方法、装置及系统
CN111314141B (zh) * 2020-02-21 2023-01-06 腾讯云计算(北京)有限责任公司 路由更新方法及装置
CN111314226A (zh) * 2020-03-04 2020-06-19 厦门靠谱云股份有限公司 一种可在zuul网关动态配置多协议下游服务转发的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109672553A (zh) * 2018-10-23 2019-04-23 平安科技(深圳)有限公司 网关动态配置方法、系统、计算机设备及存储介质
CN111181727A (zh) * 2019-12-16 2020-05-19 北京航天智造科技发展有限公司 一种基于微服务的开放api全生命周期管理方法

Also Published As

Publication number Publication date
CN112039780A (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
CN112039780B (zh) 基于Zuul的持久化动态路由实现方法、电子设备及存储介质
KR102313476B1 (ko) 멀티테넌트 어플리케이션 서버 환경에서 단대단 라이프사이클을 제공하기 위한 시스템 및 방법
US9038046B2 (en) Deploying and distributing content management code
CN102413022B (zh) 一种应用调试方法和系统
US7962527B2 (en) Custom management system for distributed application servers
US20070083378A1 (en) Secure application programming interface
US20080071805A1 (en) File indexing framework and symbolic name maintenance framework
RU2003101395A (ru) Предоставление расширений программного обеспечения на основе использования сети
CN109684282B (zh) 一种构建元数据缓存的方法及装置
US8490077B2 (en) Runtime versioning and distribution of dynamic web-elements
CN108616599A (zh) 应用服务注册、更新的方法及装置
CA2412611A1 (en) Network-based software extensions
US11595299B2 (en) System and method of suppressing inbound payload to an integration flow of an orchestration based application integration
CN106802817A (zh) SQLite数据库的升级方法及装置
WO2017193765A1 (zh) 一种参数配置方法和装置
US8650288B2 (en) Runtime usage analysis for a distributed policy enforcement system
CN111881473B (zh) 隐私文件保护方法、装置、计算机设备和可读存储介质
CN112035216A (zh) 一种Kubernetes集群网络和OpenStack网络的打通方法
JP2008519361A (ja) 記憶デバイスをアドレスしたコンテンツにおいてアプリケーション特有のマネージメント・ポリシーを実行する方法
CN114327239A (zh) 存储和访问数据的方法、电子设备和计算机程序产品
US11018938B1 (en) Auditing metadata representation of a cloud-computing platform based datacenter
US7784047B2 (en) Common management model for distributed server network
JP2017532620A (ja) ランタイム設定を介して持続性挙動を動的にインターセプト及び調整するシステム及び方法
CN110609731A (zh) 用于管理虚拟机的方法、设备和计算机程序产品
WO2015196524A1 (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