黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術(shù)文章
文章詳情頁

Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟

瀏覽:2日期:2023-06-26 13:39:46
目錄前言一、Nacos環(huán)境準(zhǔn)備1、啟動(dòng)Nacos配置中心并創(chuàng)建路由配置2、連接Nacos配置中心二、項(xiàng)目構(gòu)建1、項(xiàng)目結(jié)構(gòu)2、編寫測(cè)試代碼三、測(cè)試動(dòng)態(tài)網(wǎng)關(guān)配置1、啟動(dòng)服務(wù),觀察注冊(cè)中心2、訪問網(wǎng)關(guān),觀察服務(wù)日志四、總結(jié)前言

Nacos最近項(xiàng)目一直在使用,其簡(jiǎn)單靈活,支持更細(xì)粒度的命令空間,分組等為麻煩復(fù)雜的環(huán)境切換提供了方便;同時(shí)也很好支持動(dòng)態(tài)路由的配置,只需要簡(jiǎn)單的幾步即可。在國(guó)產(chǎn)的注冊(cè)中心、配置中心中比較突出,容易上手,本文通過gateway、nacos-consumer、nacos-provider三個(gè)簡(jiǎn)單模塊來展示:Nacos下動(dòng)態(tài)路由配置。

 博文中源碼已上傳至github(https://github.com/Jian0110/learning-cloudalibaba),歡迎小伙伴們star

一、Nacos環(huán)境準(zhǔn)備1、啟動(dòng)Nacos配置中心并創(chuàng)建路由配置

具體的Nacos怎么配置就不介紹了,可以參考阿里巴巴的官方介紹,這里通過windows直接本地啟動(dòng)開啟單機(jī)模式,登錄Nacos Console,創(chuàng)建dev的namespace,在dev下的默認(rèn)分組下創(chuàng)建gateway-router的dataId

Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟

gateway-router的主要初始化配置如下:關(guān)于gateway的組成(id,order、predicates斷言,uri)這里就不詳細(xì)說明的了,可以自行百度下

Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟

[{ 'id': 'consumer-router', 'order': 0, 'predicates': [{'args': { 'pattern': '/consume/**'},'name': 'Path' }], 'uri': 'lb://nacos-consumer'},{ 'id': 'provider-router', 'order': 2, 'predicates': [{'args': { 'pattern': '/provide/**'},'name': 'Path' }], 'uri': 'lb://nacos-provider'}]2、連接Nacos配置中心

通常在項(xiàng)目中配置“配置中心”往往都是在bootstrap.propertis(yaml)中配置,這樣才能保證項(xiàng)目中路由配置從Nacos Config中讀取。

# nacos配置中心配置建議在bootstrap.properties中配置spring.cloud.nacos.config.server-addr=127.0.0.1:8848#spring.cloud.nacos.config.file-extension=properties# 配置中心的命名空間:dev 的命名空間(環(huán)境)spring.cloud.nacos.config.namespace=08ecd1e5-c042-410a-84d5-b0a8fbeed8ea

Application啟動(dòng)類中增加注解@EnableDiscoveryClient,才能保證連接到Nacos Config

@SpringBootApplication@EnableDiscoveryClientpublic class GatewayApplication{ public static void main( String[] args ) {SpringApplication.run(GatewayApplication.class, args); }}二、項(xiàng)目構(gòu)建1、項(xiàng)目結(jié)構(gòu)

創(chuàng)建簡(jiǎn)單的springboot多模塊結(jié)構(gòu),推薦使用idea創(chuàng)建

1)Nacos父模塊:

<groupId>com.springcloud</groupId><artifactId>nacos</artifactId><version>0.0.1-SNAPSHOT</version><name>nacos</name><description>Nacos Demo</description>

首先pom文件引入Spring Cloud Alibaba Nacos組件:注冊(cè)中心nacos-discovery與配置中心nacos-config

<!--nacos 客戶端 注冊(cè)中心--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>${alibaba-nacos.version}</version> </dependency> <!--nacos 客戶端 配置中心--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>${alibaba-nacos.version}</version> </dependency>

其次再引入Spring Cloud相關(guān)組件依賴

<dependencyManagement><dependencies> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope> </dependency> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope> </dependency></dependencies></dependencyManagement>

其它組件依賴引入(修正:如果引入了nacos-api相關(guān)的JSON依賴,那么fastjson就不需要再引入了,否則可能沖突):

<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version></dependency><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope></dependency><dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>

注意,這里有個(gè)坑,spring cloud gateway使用的web框架為webflux,和springMVC不兼容。所以不要引入(修正:只有g(shù)ateway服務(wù)不用引入springMVC,其他需要引入)

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>

2)三個(gè)子模塊:gateway、nacos-consumer、nacos-provider

<modules><module>nacos-provider</module><module>nacos-consumer</module><module>gateway</module></modules>

結(jié)構(gòu)截圖如下所示:

Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟

3)三個(gè)服務(wù)的端口分別為:

nacos-consume:6001

nacos-provider:6002

gateway:6003

4)服務(wù)架構(gòu)如下:

Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟

2、編寫測(cè)試代碼

(1)在gateway模塊中主要實(shí)現(xiàn)以下功能:

第一,從Nacos配置中心中加載動(dòng)態(tài)路由的相關(guān)配置,就需要讀取Nacos的命名空間namespace,通過dataId獲取配置

/** * 路由類配置 */@Configurationpublic class GatewayConfig { public static final long DEFAULT_TIMEOUT = 30000; public static String NACOS_SERVER_ADDR; public static String NACOS_NAMESPACE; public static String NACOS_ROUTE_DATA_ID; public static String NACOS_ROUTE_GROUP; @Value('${spring.cloud.nacos.discovery.server-addr}') public void setNacosServerAddr(String nacosServerAddr){NACOS_SERVER_ADDR = nacosServerAddr; } @Value('${spring.cloud.nacos.discovery.namespace}') public void setNacosNamespace(String nacosNamespace){NACOS_NAMESPACE = nacosNamespace; } @Value('${nacos.gateway.route.config.data-id}') public void setNacosRouteDataId(String nacosRouteDataId){NACOS_ROUTE_DATA_ID = nacosRouteDataId; } @Value('${nacos.gateway.route.config.group}') public void setNacosRouteGroup(String nacosRouteGroup){NACOS_ROUTE_GROUP = nacosRouteGroup; }}

properties配置關(guān)于Nacos下讀取gateway-router的配置:

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848spring.cloud.nacos.discovery.namespace=08ecd1e5-c042-410a-84d5-b0a8fbeed8eanacos.gateway.route.config.data-id=gateway-routernacos.gateway.route.config.group=DEFAULT_GROUP

第二,初始化路由,監(jiān)聽動(dòng)態(tài)路由配置的數(shù)據(jù)源變化(2020.12.28解決刪除路由不生效問題);

/** * * 通過nacos下發(fā)動(dòng)態(tài)路由配置,監(jiān)聽Nacos中g(shù)ateway-route配置 * */@Component@Slf4j@DependsOn({'gatewayConfig'}) // 依賴于gatewayConfig beanpublic class DynamicRouteServiceImplByNacos { @Autowired private DynamicRouteServiceImpl dynamicRouteService; private ConfigService configService; @PostConstruct public void init() {log.info('gateway route init...');try{ configService = initConfigService(); if(configService == null){log.warn('initConfigService fail');return; } String configInfo = configService.getConfig(GatewayConfig.NACOS_ROUTE_DATA_ID, GatewayConfig.NACOS_ROUTE_GROUP, GatewayConfig.DEFAULT_TIMEOUT); log.info('獲取網(wǎng)關(guān)當(dāng)前配置:rn{}',configInfo); List<RouteDefinition> definitionList = JSON.parseArray(configInfo, RouteDefinition.class); for(RouteDefinition definition : definitionList){log.info('update route : {}',definition.toString());dynamicRouteService.add(definition); }} catch (Exception e) { log.error('初始化網(wǎng)關(guān)路由時(shí)發(fā)生錯(cuò)誤',e);}dynamicRouteByNacosListener(GatewayConfig.NACOS_ROUTE_DATA_ID,GatewayConfig.NACOS_ROUTE_GROUP); } /** * 監(jiān)聽Nacos下發(fā)的動(dòng)態(tài)路由配置 * @param dataId * @param group */ public void dynamicRouteByNacosListener (String dataId, String group){try { configService.addListener(dataId, group, new Listener() {@Overridepublic void receiveConfigInfo(String configInfo) { log.info('進(jìn)行網(wǎng)關(guān)更新:nr{}',configInfo); List<RouteDefinition> definitionList = JSON.parseArray(configInfo, RouteDefinition.class); log.info('update route : {}',definitionList.toString()); dynamicRouteService.updateList(definitionList);}@Overridepublic Executor getExecutor() { log.info('getExecutornr'); return null;} });} catch (NacosException e) { log.error('從nacos接收動(dòng)態(tài)路由配置出錯(cuò)!!!',e);} } /** * 初始化網(wǎng)關(guān)路由 nacos config * @return */ private ConfigService initConfigService(){try{ Properties properties = new Properties(); properties.setProperty('serverAddr',GatewayConfig.NACOS_SERVER_ADDR); properties.setProperty('namespace',GatewayConfig.NACOS_NAMESPACE); return configService= NacosFactory.createConfigService(properties);} catch (Exception e) { log.error('初始化網(wǎng)關(guān)路由時(shí)發(fā)生錯(cuò)誤',e); return null;} }}

第三,刷新最新的動(dòng)態(tài)路由變化,實(shí)現(xiàn)動(dòng)態(tài)增刪改路由(2020.12.28解決刪除路由不生效問題)

/** * 動(dòng)態(tài)更新路由網(wǎng)關(guān)service * 1)實(shí)現(xiàn)一個(gè)Spring提供的事件推送接口ApplicationEventPublisherAware * 2)提供動(dòng)態(tài)路由的基礎(chǔ)方法,可通過獲取bean操作該類的方法。該類提供新增路由、更新路由、刪除路由,然后實(shí)現(xiàn)發(fā)布的功能。 */@Slf4j@Servicepublic class DynamicRouteServiceImpl implements ApplicationEventPublisherAware { @Autowired private RouteDefinitionWriter routeDefinitionWriter; @Autowired private RouteDefinitionLocator routeDefinitionLocator; /** * 發(fā)布事件 */ @Autowired private ApplicationEventPublisher publisher; @Override public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {this.publisher = applicationEventPublisher; } /** * 刪除路由 * @param id * @return */ public String delete(String id) {try { log.info('gateway delete route id {}',id); this.routeDefinitionWriter.delete(Mono.just(id)).subscribe(); this.publisher.publishEvent(new RefreshRoutesEvent(this)); return 'delete success';} catch (Exception e) { return 'delete fail';} } /** * 更新路由 * @param definitions * @return */ public String updateList(List<RouteDefinition> definitions) {log.info('gateway update route {}',definitions);// 刪除緩存routerDefinitionList<RouteDefinition> routeDefinitionsExits = routeDefinitionLocator.getRouteDefinitions().buffer().blockFirst();if (!CollectionUtils.isEmpty(routeDefinitionsExits)) { routeDefinitionsExits.forEach(routeDefinition -> {log.info('delete routeDefinition:{}', routeDefinition);delete(routeDefinition.getId()); });}definitions.forEach(definition -> { updateById(definition);});return 'success'; } /** * 更新路由 * @param definition * @return */ public String updateById(RouteDefinition definition) {try { log.info('gateway update route {}',definition); this.routeDefinitionWriter.delete(Mono.just(definition.getId()));} catch (Exception e) { return 'update fail,not find route routeId: '+definition.getId();}try { routeDefinitionWriter.save(Mono.just(definition)).subscribe(); this.publisher.publishEvent(new RefreshRoutesEvent(this)); return 'success';} catch (Exception e) { return 'update route fail';} } /** * 增加路由 * @param definition * @return */ public String add(RouteDefinition definition) {log.info('gateway add route {}',definition);routeDefinitionWriter.save(Mono.just(definition)).subscribe();this.publisher.publishEvent(new RefreshRoutesEvent(this));return 'success'; }}三、測(cè)試動(dòng)態(tài)網(wǎng)關(guān)配置1、啟動(dòng)服務(wù),觀察注冊(cè)中心

分別啟動(dòng)gateway、nacos-consumer、nacos-provider三個(gè)服務(wù),觀察是否已經(jīng)在Nacos上正確注冊(cè)

Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟

注意:需要指定注冊(cè)中心的namespace為dev的空間,即spring.cloud.nacos.discovery.namespace=08ecd1e5-c042-410a-84d5-b0a8fbeed8ea

2、訪問網(wǎng)關(guān),觀察服務(wù)日志

(1)查看gateway服務(wù)的初始化啟動(dòng)日志:會(huì)發(fā)現(xiàn)可以正常從Nacos獲取配置gateway-router網(wǎng)關(guān)配置文件內(nèi)容,并進(jìn)行正確路由加載...

2020-05-10 14:33:44.557 INFO 1272 --- [ main] c.g.r.DynamicRouteServiceImplByNacos : gateway route init...2020-05-10 14:33:44.578 INFO 1272 --- [ main] c.g.r.DynamicRouteServiceImplByNacos : 獲取網(wǎng)關(guān)當(dāng)前配置:[{ 'id': 'consumer-router', 'order': 0, 'predicates': [{'args': { 'pattern': '/consume/**'},'name': 'Path' }], 'uri': 'lb://nacos-consumer'},{ 'id': 'provider-router', 'order': 2, 'predicates': [{'args': { 'pattern': '/provide/**'},'name': 'Path' }], 'uri': 'lb://nacos-provider'}]2020-05-10 14:33:44.691 INFO 1272 --- [ main] c.g.r.DynamicRouteServiceImplByNacos : update route : RouteDefinition{id=’consumer-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/consume/**}}], filters=[], uri=lb://nacos-consumer, order=0, metadata={}}2020-05-10 14:33:44.691 INFO 1272 --- [ main] c.g.service.DynamicRouteServiceImpl : gateway add route RouteDefinition{id=’consumer-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/consume/**}}], filters=[], uri=lb://nacos-consumer, order=0, metadata={}}2020-05-10 14:33:45.192 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [After]2020-05-10 14:33:45.192 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Before]2020-05-10 14:33:45.192 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Between]2020-05-10 14:33:45.193 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Cookie]2020-05-10 14:33:45.193 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Header]2020-05-10 14:33:45.193 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Host]2020-05-10 14:33:45.194 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Method]2020-05-10 14:33:45.194 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Path]2020-05-10 14:33:45.194 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Query]2020-05-10 14:33:45.194 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [ReadBodyPredicateFactory]2020-05-10 14:33:45.194 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [RemoteAddr]2020-05-10 14:33:45.194 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [Weight]2020-05-10 14:33:45.194 INFO 1272 --- [ main] o.s.c.g.r.RouteDefinitionRouteLocator : Loaded RoutePredicateFactory [CloudFoundryRouteService]2020-05-10 14:33:45.335 INFO 1272 --- [ main] c.g.r.DynamicRouteServiceImplByNacos : update route : RouteDefinition{id=’provider-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/provide/**}}], filters=[], uri=lb://nacos-provider, order=2, metadata={}}2020-05-10 14:33:45.335 INFO 1272 --- [ main] c.g.service.DynamicRouteServiceImpl : gateway add route RouteDefinition{id=’provider-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/provide/**}}], filters=[], uri=lb://nacos-provider, order=2, metadata={}}2020-05-10 14:33:45.336 INFO 1272 --- [ main] c.g.r.DynamicRouteServiceImplByNacos : update route : RouteDefinition{id=’github-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/github}}], filters=[], uri=https://github.com, order=3, metadata={}}2020-05-10 14:33:45.336 INFO 1272 --- [ main] c.g.service.DynamicRouteServiceImpl : gateway add route RouteDefinition{id=’github-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/github}}], filters=[], uri=https://github.com, order=3, metadata={}}

但這只能說明是初始化靜態(tài)路由,下面我們改變gateway-router網(wǎng)關(guān)配置內(nèi)容,追加github-router路由

[{ 'id': 'consumer-router', 'order': 0, 'predicates': [{'args': { 'pattern': '/consume/**'},'name': 'Path' }], 'uri': 'lb://nacos-consumer'},{ 'id': 'provider-router', 'order': 2, 'predicates': [{'args': { 'pattern': '/provide/**'},'name': 'Path' }], 'uri': 'lb://nacos-provider'},{ 'id': 'github-router', 'order': 2, 'predicates': [{'args': { 'pattern': '/github/**'},'name': 'Path' }], 'uri': 'https://github.com'}]

之后點(diǎn)擊發(fā)布更新路由配置

Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟

觀察gateway服務(wù)日志,有沒有監(jiān)聽,并且進(jìn)行正確的路由更新:如下日志所示,最新路由配置立馬被打印,并且進(jìn)行正確路由更新

2020-05-10 14:42:27.576 INFO 1272 --- [d5-b0a8fbeed8ea] c.g.r.DynamicRouteServiceImplByNacos : 進(jìn)行網(wǎng)關(guān)更新:[{ 'id': 'consumer-router', 'order': 0, 'predicates': [{'args': { 'pattern': '/consume/**'},'name': 'Path' }], 'uri': 'lb://nacos-consumer'},{ 'id': 'provider-router', 'order': 2, 'predicates': [{'args': { 'pattern': '/provide/**'},'name': 'Path' }], 'uri': 'lb://nacos-provider'},{ 'id': 'github-router', 'order': 2, 'predicates': [{'args': { 'pattern': '/github/**'},'name': 'Path' }], 'uri': 'https://github.com'}]2020-05-10 14:42:27.576 INFO 1272 --- [d5-b0a8fbeed8ea] c.g.r.DynamicRouteServiceImplByNacos : update route : RouteDefinition{id=’consumer-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/consume/**}}], filters=[], uri=lb://nacos-consumer, order=0, metadata={}}2020-05-10 14:42:27.576 INFO 1272 --- [d5-b0a8fbeed8ea] c.g.service.DynamicRouteServiceImpl : gateway update route RouteDefinition{id=’consumer-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/consume/**}}], filters=[], uri=lb://nacos-consumer, order=0, metadata={}}2020-05-10 14:42:27.578 INFO 1272 --- [d5-b0a8fbeed8ea] c.g.r.DynamicRouteServiceImplByNacos : update route : RouteDefinition{id=’provider-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/provide/**}}], filters=[], uri=lb://nacos-provider, order=2, metadata={}}2020-05-10 14:42:27.578 INFO 1272 --- [d5-b0a8fbeed8ea] c.g.service.DynamicRouteServiceImpl : gateway update route RouteDefinition{id=’provider-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/provide/**}}], filters=[], uri=lb://nacos-provider, order=2, metadata={}}2020-05-10 14:42:27.580 INFO 1272 --- [d5-b0a8fbeed8ea] c.g.r.DynamicRouteServiceImplByNacos : update route : RouteDefinition{id=’github-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/github/**}}], filters=[], uri=https://github.com, order=2, metadata={}}2020-05-10 14:42:27.580 INFO 1272 --- [d5-b0a8fbeed8ea] c.g.service.DynamicRouteServiceImpl : gateway update route RouteDefinition{id=’github-router’, predicates=[PredicateDefinition{name=’Path’, args={pattern=/github/**}}], filters=[], uri=https://github.com, order=2, metadata={}}

其實(shí),還有辦法可以知道我們的gateway服務(wù)有沒有監(jiān)聽Nacos的gateway-router配置,那就是在Nacos Console--->監(jiān)聽查詢----->選擇配置---->輸入配置文件的namespace與Group:可以發(fā)現(xiàn)我本地IP地址127.0.0.1對(duì)配置文件gateway-router進(jìn)行了監(jiān)聽

Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟

(2)訪問gateway網(wǎng)關(guān)服務(wù):http://localhost:6003/consume/sayHello/nacos

Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟

查看consumer服務(wù)日志:

2020-05-10 14:55:07.257 INFO 6552 --- [nio-6001-exec-2] c.n.c.controller.ConsumeController : I’m calling nacos-consumer service by dynamic gateway...

發(fā)現(xiàn)跳轉(zhuǎn)至consumer服務(wù),并且訪問了consumer服務(wù)的CosnumerController

(3)訪問gateway網(wǎng)關(guān)服務(wù):http://localhost:6003/provider/sayHello/nacos

Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟

查看provider服務(wù)日志:

2020-05-10 14:56:56.144 INFO 10024 --- [nio-6002-exec-1] c.n.p.controller.ProviderController : I’m calling nacos-provider service by dynamic gateway...

發(fā)現(xiàn)跳轉(zhuǎn)至consumer服務(wù),并且訪問了provider服務(wù)的ProviderController

(4)訪問訪問gateway網(wǎng)關(guān)服務(wù):http://localhost:6003/github,正確跳轉(zhuǎn)至github頁面

Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟

四、總結(jié)

1)Spring Cloud Gateway作用不光只是簡(jiǎn)單的跳轉(zhuǎn)重定向,還可以實(shí)現(xiàn)用戶的驗(yàn)證登錄,解決跨域,日志攔截,權(quán)限控制,限流,熔斷,負(fù)載均衡,黑名單和白名單機(jī)制等。是微服務(wù)架構(gòu)不二的選擇;

2)Nacos的配置中心支持動(dòng)態(tài)獲取配置文件,可以將一些全局的經(jīng)常變更的配置文件放在Nacos下,需要到微服務(wù)自行獲取。

2020.12.28解決刪除路由不生效問題,主要是利用RouteDefinitionLocator先讀取變化之前的RouteDefinition,之后刪除重新再更新,或者可以實(shí)現(xiàn)routeDefinitionWriter、RouteDefinitionLocator重寫如下方法:

Mono<Void> save(Mono<RouteDefinition> route);Mono<Void> delete(Mono<String> routeId);Flux<RouteDefinition> getRouteDefinitions();

到此這篇關(guān)于Nacos+Spring Cloud Gateway動(dòng)態(tài)路由配置實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Spring Cloud Gateway動(dòng)態(tài)路由內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 欧美亚洲国产精品久久 | 免费毛片一区二区三区亚女同 | 国产丝袜网站 | 800av凹凸视频在线观看 | 人善交精品播放 | wwww亚洲熟妇久久久久 | 日本亲与子乱人妻hd | 欧美日韩在线a | 成人免费视频网站在线观看 | 亚洲精品毛片一区二区 | 久久人国产 | 日韩欧美在线观看一区二区 | 欧美色一区二区三区在线观看 | 国产原创在线视频 | 乱淫a欧美裸体超级xxxⅹ | 免费无码不卡视频在线观看 | 日本少妇被黑人猛cao | 国产精品女同一区二区久久夜 | 永久免费看啪啪的网站 | 日本精品视频一区二区三区 | 日韩中文字幕免费看 | 国产欧美精品区一区二区三区 | 99久久99久久精品国产片果冻 | 45分钟免费真人视频 | 久久er99热精品一区二区 | 91久久久精品国产一区二区蜜臀 | 一色桃子jul622中文字幕 | 天天综合网天天综合狠狠躁 | www.国产91| 国产精品传媒麻豆hd | 日本a级在线播放 | 亚洲精品123区 | 国产精品19乱码一区二区三区 | 青青草成人在线 | 色偷偷欧美 | 国产一区二区精品久久 | 国产乱人伦偷精品视频免下载 | 欧美成人四级hd版 | 久草手机在线 | 自拍av在线 | 毛片无限看 | 337p粉嫩大胆色噜噜噜 | 亚洲日韩视频 | 一个人看的www免费视频在线观看 | 无码人妻少妇伦在线电影 | 精品国产第一国产综合精品 | 久久久99久久久国产自输拍 | 女人色极品影院 | 99re视频精品 | 精品少妇一区二区三区在线观看 | 四虎成人精品永久免费av九九 | 男女的隐私视频播放 | 中文字幕一区在线播放 | 亚洲日韩视频免费观看 | 亚洲19禁大尺度做爰无遮挡 | 久久99精品久久久久久久青青日本 | 久久黄色免费视频 | 曰本黄色片 | 深爱五月综合网 | 久久超| a国产免费 | 成人在线h | 国产成人综合久久精品免费 | 久久久久国产一区二区三区小说 | 99re热精品视频 | 第四色影音先锋 | 久久一本精品 | 岛国av网址 | 精品国产乱码久久久久软件 | 国产午夜精品一区二区三区视频 | 少妇和小鲜肉高潮毛片 | 日韩理论在线观看 | 色哟哟官网 | 天天曰夜夜曰 | 农村末发育av片一区二区 | 亚洲桃色综合影院 | 欧美日韩精品一区 | 国产福利小视频在线 | 国产精品一级二级三级 | 成年人在线播放视频 | 久久婷婷色一区二区三区asmr | 手机看片国产一区 | 免费毛片小视频 | 国人精品视频在线观看 | 久久精品国产99久久无毒不卡 | 男人亚洲天堂 | 国产另类ts人妖高潮 | 亚洲精品成人悠悠色影视 | 精品国产精品国产偷麻豆 | 黄色一级录像片 | 极品尤物在线观看 | 亚洲精品成av人片天堂无码 | 日韩久久网 | 夜夜夜夜bbbbbb欧美 | 操韩国美女 | 无码少妇一区二区三区芒果 | 久操中文 | 久久99精品久久久久子伦 | 日本少妇aaa | 国产一区二区三区小说 | 高辣h文乱乳h文男男双性视频 | 国产丰满农村老妇女乱 | 欧美性生活网 | www嫩草蜜桃| 欧美色鬼 | 拍拍拍产国影院在线观看 | 97婷婷狠狠成为人免费视频 | 日韩精品免费一区二区三区 | 亚洲资源av无码日韩av无码 | 久久人人爽人人爽人人片av免费 | 国产女主播视频 | 色悠久久综合 | 国产精品一区二区免费视频 | 久久午夜福利无码1000合集 | 久久男人的天堂 | 在线日韩国产 | 国产啪精品视频网站 | 大陆偷拍av | 国产高潮好爽受不了了夜色 | 国产一级视频在线 | 国产精品亚洲欧美大片在线看 | 18在线观看视频网站 | 青青草97国产精品免费观看 | 91午夜在线 | 欧美视频在线观看一区二区三区 | 国产高清网站 | 日韩毛片中文字幕 | 99久久亚洲精品日本无码 | 乱妇乱女熟妇熟女网站 | 91九色蝌蚪 | 日本爽爽爽爽爽爽在线观看免 | 台湾全黄色裸体视频播放 | 欧美播放器 | 麻豆精品一区二区 | 亚洲 日韩 欧美 成人 在线 | 热舞福利精品大尺度视频 | 色呦呦一区 | 日韩a级片在线观看 | 手机在线一区 | 一区二区乱子伦在线播放 | 国产无套粉嫩白浆内谢网站 | 天天狠天天插 | 亚洲三级在线播放 | 在线精品视频一区二区三四 | 国产无遮挡猛进猛出免费软件 | 国产一区日本 | 日韩黄色网络 | 午夜精品久久久久久久无码 | 亚洲女人久久久 | 久久精品人妻一区二区蜜桃 | 又大又硬又黄的免费视频 | 7777精品久久久大香线蕉小说 | 少妇搡bbbb搡bbb搡古装 | 夜夜骚视频| 大尺度做爰床戏呻吟沙漠 | 调教重口xx区一精品网站 | 男人猛躁进女人免费视频夜月 | 欧美日韩一区二区三区视频 | 成人性生交大片免费视频 | 青草成人 | 国产伦精品一区二区三区男技 | heyzo亚洲| 高潮的毛片激情久久精品 | 久草资源在线 | 韩国日本在线 | 日韩欧美三区 | 国产精品美女久久久久久久久 | 欧美精品一级在线观看 | 国产手机av在线 | 亚洲精品乱码久久久久久花季 | 久久精品国产99久久无毒不卡 | 国产三区在线播放 | 97视频久久| 大肉大捧一进一出好爽 | 日本我不卡 | 国产99在线| 成年人免费毛片 | 国产精品一区二区在线观看 | 黄色的网站在线免费观看 | 九色精品 | 日韩国产欧美一区 | 亚洲三级影视 | 国产成人欧美一区二区三区八 | 国产女同视频 | 国产区网址 | 污片在线免费看 | 日本高潮视频 | 欧美黑人大战白嫩在线 | 国产亚洲成av人片在线观看下载 | 丝袜脚交一区二区三区 | 任你操这里只有精品 | 免费观看一区二区三区视频 | 欧美在线观看视频一区二区 | 69影院少妇在线观看 | 亚洲一区二区中文字幕 | 亚a洲v中文字幕2023 | 婷婷色九月 | 国产中文字幕在线视频 | 午夜天堂av天堂久久久 | 亚洲女同疯狂舌吻唾液口水美女 | 伊人av在线免费观看 | 久久的久久爽亚洲精品aⅴ 久久第一页 | 色婷婷亚洲六月婷婷中文字幕 | 九色国产精品入口 | 国产小视频你懂的 | 亚洲男人的天堂在线视频 | 狠狠操一区 | hd最新国产人妖ts视频仙踪林 | 免费成人福利视频 | 男人解开女人乳罩吃奶 | 中字幕人妻一区二区三区 | 国产精品99久久久精品无码 | 五月婷婷开心中文字幕 | 筱田优全部av免费观看 | 日韩久久视频 | 曰批全过程免费视频在线观看无码 | 8x8ⅹ国产精品一区二区二区 | 亚洲无线码在线一区观看 | 免费在线播放毛片 | 日本牲交大片免费观看 | 亚洲欲色| 天天色天天干天天色 | 国产精品网页 | 日韩在线精品强乱中文字幕 | 国产精品区在线观看 | 久久永久视频 | 免费无码又黄又爽又刺激 | 三叶草欧洲码在线 | 熟妇人妻无码xxx视频 | 国产精品成人99一区无码 | 免费一区二区视频 | 三个少妇的按摩69xx | 欧美最猛黑人xxxx | 男女做那个的全过程 | 噜噜噜亚洲色成人网站 | 成人乱人乱一区二区三区 | 天干天干天啪啪夜爽爽99 | 50部乳奶水在线播放 | 国产真人做爰毛片视频直播 | 九草视频在线 | 欧美顶级metart裸体全部自慰 | 好吊色在线视频 | 国产精品欧美一区二区 | 日韩伦理一区二区三区 | 国产精品96久久久久久 | 131做爰少妇裸体写真 | 国产精品va在线观看无码不卡 | 欧美日韩激情在线一区二区三区 | 三级在线观看 | 成人亚洲性情网站www在线观看 | 免费看一级黄色大全 | 亚洲字幕在线观看 | 一级一片免费播放 | 久久久黄色一级片 | 日韩av无码久久一区二区 | 日韩人妻系列无码专区 | brazzers欧美大波霸 | 99精品视频免费热播在线观看 | www.九九热.com| 久久免| 少妇大叫太大太粗太爽了a片小说 | 在线看福利影 | 亚洲精品国偷拍自产在线观看 | 免费观看羞羞视频网站 | 一级片在线播放 | 思思久久96热在精品国产 | 丝袜美腿中文字幕 | 天天躁日日躁狠狠躁喷水 | 男女无遮挡做爰猛烈黄文 | 韩国三级中文字幕hd久久精品 | 97无码人妻福利免费公开在线视频 | 国产精品99蜜臀久久不卡二区 | 亚洲爱爱图 | 精品欧美乱码久久久久久1区2区 | 手机av中文字幕 | 91精品国产综合久久国产大片 | 97精品国产97久久久久久粉红 | 欧美一级大片免费 | 久久五 | а√天堂资源官网在线资源 | 青草视频污 | 亚洲在av极品无码天堂手机版 | 中文字幕在线播放一区 | 在线成人精品国产区免费 | 人妻中出无码一区二区三区 | 超碰女 | 久久久久女人精品毛片 | 天天伊人网| 91精品国产色综合久久不卡98口 | 亚洲综合社区 | 少妇饥渴xxhd天美xxhd | 亚洲成a人v欧美综合天堂下载 | 色欲久久久天天天综合网 | 欧洲性生活片 | 亚洲在线观看视频 | 伊人久久大香线蕉综合网站 | 91久久精品一区二区 | 欧美精品18videos性欧美 | 1级黄色毛片 | 国产色婷婷久久99精品91 | 欧美日韩精品一区二区三区在线 | 天天做天天爱天天综合网2021 | 婷婷成人综合激情在线视频播放 | 国产天天操 | 国产成人欧美综合在线影院 | 奶大交一乱一乱一视一频 | 久久九九国产精品 | 裸体女人高潮毛片 | 午夜免费看视频 | 五十路丰满中年熟女中出 | 羞羞视频网站免费 | 欧美性色网 | 狂野欧美性猛交xxxxhd | 色综合久久无码五十路人妻 | 亚洲精品一区二区久久 | 黄色一级免费视频 | 国产精品久久国产精品99 | 少妇高潮喷水久久久久久久久久 | 91精品久久天干天天天按摩 | 中文字幕 视频一区 | 精品国产乱子伦 | 亚洲中文字幕第一页在线 | 噜噜噜视频 | 我和岳m愉情xxxx国产91 | 成人av自拍 | 成人免费看片39 | 国内精品写真在线观看 | 国产一区二区三区四区五区精品 | 男人的天堂av网 | 国产成人av在线婷婷不卡九色 | 羞羞的视频网站 | 三级在线国产 | 一二三区在线视频 | 阿v免费视频 | 国产男女猛烈无遮挡免费网站 | 国产激情久久久久影院 | 国产做a视频 | 色婷婷色婷婷 | 国产一区久久久 | 乱淫a欧美裸体超级xxxⅹ | 99精品国产99久久久久久97 | 欧美视频性| 国产精品久久久久久久白丝制服 | 一级黄色网 | 白嫩少妇激情无码 | 免费看片91 | 看一级黄色片 | 亚洲国产成人综合精品 | 九九色视频| 国产精品国产三级国产专播品爱网 | 91成人短视频在线观看 | 成人高清 | 三男玩一个饥渴少妇爽叫视频播放 | 一区二区在线播放视频 | 亚洲xxxx做受欧美 | 久久久久久久久嫩草精品乱码 | a级大片免费看 | 色综合自拍 | 欧美成人精品一区二区三区在线看 | 国产精品白浆无码流出 | 国产在线精品一区在线观看 | 日韩视频网站在线观看 | 亚洲欧洲成人 | 午夜精品网 | 播五月婷婷 | 色综合视频一区二区三区44 | 奶波霸巨乳一二三区乳 | 国产区图片区小说区亚洲区 | 男人天堂一区 | 日本xxxxxxxxxx天美 | 久久视频在线观看 | 国产精品久久久久白丝呻吟 | 日韩成人精品在线 | 88av视频| 欧美性一级 | 少妇性l交大片欧洲热妇乱xxx | 大陆极品少妇内射aaaaa | 成人性生交大片免费看r链接 | 亚洲人在线视频 | 成人免费视频毛片 | 北岛玲一区二区 | 久久精品国产网红主播 | 久久伊人成人 | 国产精品理论片 | 少妇高潮尖叫黑人激情在线 | 一边cao一边粗话打奶视频 | tushy欧美激情在线观看 | 亚洲成a人片在线观看日本 国产精品无码成人午夜电影 | 国产精品激情在线观看 | 日韩欧美一区二区在线视频 | 天堂中文在线观看 | 国产极品jk白丝喷白浆图片 | 国产乱肥老妇女精品视频网站 | 好吊操这里只有精品 | 自拍新婚之夜初交视频1 | 欧美性jizz18性欧美 | 99视屏| 中文字幕亚洲乱码 | 亚洲日本va午夜在线电影 | 欧美三级影院 | av片网站| 欧美日韩精品人妻狠狠躁免费视频 | 91传媒理伦片在线观看 | 日韩一区二区三区在线视频 | 少妇人妻av无码专区 | 久久tv| 99福利影院 | 日韩少妇内射免费播放 | 老熟女乱子伦 | 亚洲另类色综合网站 | 国产免费无遮挡吸乳视频 | 99久久久99久久国产片鸭王 | 99精品欧美| 青春草网站 | 91视频最新入口 | 波多野结衣家庭主妇 | 国产剧情久久久 | 亚洲精品一级片 | 欧美日韩精品一区二区三区四区 | 成人做爰高潮片免费看 | 国内精品人妻无码久久久影院蜜桃 | 精品国产第一国产综合精品 | 成人午夜在线播放 | 丰满人妻熟妇乱又伦精品视 | 国产亚洲精久久久久久蜜臀 | 欧美精品久久久久久久多人混战 | 台湾一级视频 | 性欧美17一18内谢 | 日本污污网站 | 亚洲女人初尝黑人巨大 | 国产成人夜色高潮福利影视 | 亚洲精品成人久久久 | 最新91在线| 免费无码又爽又刺激网站 | 亚洲jlzzjizz少妇 | 午夜精品久久久久久久久久 | 国产精品久久久久久久久免小说 | 亚洲国产日韩欧美一区二区三区 | 青青热久免费精品视频在线播放 | 久久精品在这里 | 色综合视频网 | 日韩免费无码人妻波多野 | 亚洲三级免费 | 精品人妻系列无码专区 | 九色首页 | www久久爱白液流出h | 91久久久一线二线三线品牌 | 4438x在线观看 | 少妇被多人c夜夜爽爽 | 国产精品九九热 | 中文字幕第1页第69 中文字幕第22页 | 亚洲另类激情专区小说图片 | 99久久精品无码一区二区三区 | 天天拍夜夜拍 | 欧美丰满大乳大屁股毛片图片 | 国产成人亚洲精品 | 国产小屁孩cao大人 亚洲国产精品久久精品 | 亚洲h在线播放在线观看h | 四虎8848精品| 九九九久久国产免费 | 成人做爰66片免费看网站 | 成年人在线免费观看视频网站 | 欧美人与性动交ccoo | 午夜丰满寂寞少妇精品 | 97精品人妻一区二区三区香蕉 | 中文字幕狠狠 | 久久婷婷亚洲 | 亚洲黄色网址大全 | 二级黄色大片 | 九九国产精品无码免费视频 | 天堂久久爱资源站www | 国产乱人伦中文无无码视频试看 | 久久婷婷国产麻豆91 | 麻豆一区二区在线观看 | mm视频在线观看 | 国产农村一国产农村无码毛片 | 极品少妇xxxx精品少妇 | 一本色综合亚洲精品蜜桃冫 | 乱人伦人妻精品一区二区 | 国产高清无套内谢免费 | 污视频网站在线 | av一级黄色 | 亚洲黄色片视频 | 国产成人精品女人久久久 | 国产最爽乱淫视频免费 | 免费在线观看黄色网址 | 久久婷婷综合色 | 日韩欧美午夜 | 精品国产青草久久久久福利 | 亚洲一二三区视频 | av网站亚洲 | 国产成人亚洲在线观看 | 日本特黄特刺激一级猛片 | 无码人妻精品一区二区蜜桃百度 | 亚洲小说图区综合在线 | 日本aa大片 | 亚洲欧美日韩久久 | 久久精品国产精品国产精品污 | 日韩视频一区二区三区在线播放免费观看 | 黄色激情网站 | 国产福利不卡 | 日韩娇小xxxxhd | 亚洲中文字幕无码天然素人在线 | 一区二区三区四区精品 | 无码东京热一区二区三区 | 久草色香蕉 | 日韩另类在线 | 国产破苞第一次 | 国产尤物在线视频 | 中文字幕 视频一区 | x7x7x7成人免费视频 | 婷婷影院在线 | 黑人巨大精品欧美黑白配亚洲 | 亚洲做爰日本做爰 | 久久成人亚洲 | 无码精品黑人一区二区三区 | 久久久精品国产免费观看一区二区 | 中文字幕av在线一二三区 | 国产丝袜一区视频在线观看 | 99er热精品视频国产 | 亚洲精品成a人ⅴ香蕉片 | 高清无码一区二区在线观看吞精 | 91偷拍富婆spa盗摄在线 | 欧美精品亚洲精品 | 男人的天堂av网 | 国产在线视频www色 日韩精品av一区二区三区 | 久久久欧美国产精品人妻噜噜 | 辽宁熟女高潮狂叫视频 | 亚洲色成人一区二区三区小说 | 九色网站在线观看 | 久久免费小视频 | 大陆日韩欧美 | 国产一区二区三区内射高清 | 91丨九色丨国产丨porny | 天堂√在线中文官网在线 | 亚洲精品~无码抽插 | 日本欧美一区二区 | 日韩综合夜夜香内射 | 少妇人妻大乳在线视频 | 久久精品一区二区国产 | 亚洲乱妇熟女爽到高潮的片 | 吻胸摸腿揉屁股娇喘视频网站小说 | 欧美性猛交乱大交 | 沈阳熟女露脸对白视频 | 二级黄色毛片 | 成人亚洲| 国产后入清纯学生妹 | 国产日韩一区二区三免费高清 | 变态美女紧缚一区二区三区 | 成人性生交大片免费4 | 免费中文字幕av | 亚洲 一区二区 在线 | 国产精品亚洲第一 | 九九久久国产精品 | 亚洲精品国产精品乱码不66 | 国产裸体视频bbbbb | 日韩欧洲亚洲 | 日本人毛片 | 国产一区调教91鞭打 | 国产成人精品久久 | 特级毛片在线观看 | 长河落日电视连续剧免费观看 | 国产呻吟久久久久久久92 | 一级做a爱片久久毛片a高清 | 天天躁狠狠躁狠狠躁性色牛牛影视 | 日本a级片网站 | 四虎国产精品一区二区 | 亚洲精品乱码久久久久久国产主播 | 无尽3d精品hentai在线视频 | 特级无码毛片免费视频 | 国产对白刺激真实精品91 | 国产做受69高潮 | 欧美日韩免费在线观看 | 午夜在线网站 | 在线尤物| 日韩免费播放 | 成人激情视频网站 | 久久亚洲高潮流白浆av软件 | 美丽姑娘免费观看在线观看 | 涩涩网站免费 | 18禁毛片无遮挡嫩草视频 | 在线黄色大片 | 国语对白一区二区 | 一本之道综合在线 | 啦啦啦www在线观看免费视频 | 亚洲三区av | av丝袜在线| 国产日韩欧美视频在线 | 日本欧美一区二区 | 成人毛片网站 | 中文字幕人成乱码在线观看 | jlzzjlzz亚洲女人 | 亚洲成a人片在线www | 好吊妞这里有精品 | 欧美黑丝少妇 | 大香伊人中文字幕精品 | 久久久久久蜜桃一区二区 | 欧美日韩在线高清 | 亚洲国产成人91精品 | 亚洲国产欧美日韩在线精品一区 | 国模精品一区 | 四虎永久免费 | 自拍偷在线精品自拍偷无码专区 | 日韩精品乱码久久久久久 | 国产精品入口麻豆原神 | 黑人巨大跨种族video | 亚洲激情久久久 | 轻点太深了射的好满视频 | 精品国产免费久久久久久桃子图片 | 天天色综合天天 | 久久精品色欧美aⅴ一区二区 | 国产一区精品在线 | 国产黄在线观看免费观看不卡 | 亚洲人成人网站色www | 国产三级黄色 |