问题描述
项目使用spring cloud gateway作为网关,nacos作为微服务注册中心
当某个微服务重启后,通过网关调用这个服务时会出现503 Service Unavailable(服务不可用)的错误,
项目配置 pom.xml配置文件
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
application.yml 的文件内容
cloud: gateway: routes: - id: borrow-service uri: lb://serviceborrow #uri: http://localhost:8023 predicates: - Path=/borrow/** filters: #过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改 - StripPrefix=1 #转发之前去掉1层路径 - id: book-service uri: lb://servicebook #uri: http://localhost:8023 predicates: - Path=/book/** filters: #过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改 - StripPrefix=1 #转发之前去掉1层路径
项目构建以后无法访问出现 503的报错,解决方法加入openFeign和loadbalancer,覆盖内部自带的负载策略,即可解决问题。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>