POM文件依賴
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
nacos的版本如下:
<properties> <nacos.version>2021.1</nacos.version> </properties>
gateway的application.yml文件配置如下:
//fhadmin.cn server: port: 9040 spring: application: name: gateway cloud: gateway: routes: - id: consumer uri: lb://consumer # uri: http://localhost:9010 predicates: - Path=/** nacos: discovery: server-addr: localhost:8848 metadata: preserved.heart.beat.interval: 3 #心跳間隔。時間單位:秒。心跳間隔 preserved.heart.beat.timeout: 6 #心跳暫停。時間單位:秒。 即服務端6秒收不到客戶端心跳,會將該客戶端注冊的實例設為不健康: preserved.ip.delete.timeout: 9 #Ip刪除超時。時間單位:秒。即服務端9秒收不到客戶端心跳,會將該客戶端注冊的實例刪除:
當我通過uri: http://localhost:9010去調用服務時,是可以調用的,但是當我用uri lb://consumer時就無法調用服務,報錯503. 解決辦法是: 加入feign依賴。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>3.0.2</version> </dependency> <!--fegin組件--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>3.0.2</version> </dependency> <!-- Feign Client for loadBalancing --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-loadbalancer</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
猜測原因:nacos兼容feign,feign集成ribbon,默認實現負載均衡;或許是nacos不兼容springcloud gateway自帶的ribbon。實現案例 fhadmin.cn