Getaway网关访问微服务:503,Service Unavailable。请求路径:localhost:1000/user/test,请求响应结果如下

{"timestamp": "2022-10-10T06:45:35.592+00:00","path": "/user/list","status": 503,"error": "Service Unavailable","message": "","requestId": "4f1bf742-1"
}

导入的依赖为:

<!--getaway网关依赖-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency><!--Nacos注册发现-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

yml配置:

server:port: 1000
spring:application:name: service-gateway #服务名cloud: #注册到Nacosnacos:discovery:server-addr: 127.0.0.1:8848gateway:discovery:locator:enabled: false #开放服务名访问方式lower-case-service-id: true #服务名小写routes: #路由配置- id : service-user #指定服务名uri: lb://service-user #以负载均衡的方式去注册中心找这个服务名predicates:    #断言,匹配访问的路径- Path=/user/**    #服务访问路径  # 断言方式有很多,此处使用常见的URL路径断言,如访问http:localhost:1000/user/list命中

控制器接口:

package cn.cooper.song.controller;import cn.cooper.song.entity.User;
import cn.cooper.song.entity.req.ReqQueryUser;
import cn.cooper.song.service.IUserService;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;/*** <p>* 会员登录账号 前端控制器* </p>** @author cooper* @since 2022-10-07*/
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate IUserService userService;@GetMapping("/list")public List<User> list(){return userService.list();}@PostMapping("/byId")public User byId(@RequestBody User user){return userService.getById(user.getId());}@PostMapping("/test")public List<User> query(@RequestBody ReqQueryUser req){LambdaQueryChainWrapper<User> wrapper = userService.lambdaQuery().eq(req.getPhone() != null, User::getPhone, req.getPhone()).like(req.getNickName() != null && !req.getNickName().isEmpty(), User::getNickName, req.getNickName()).gt(req.getBit() != null, User::getBitState, req.getBit());return wrapper.list();}/*** 流控测试* @return 测试限流*/@GetMapping(value = "/hello")@SentinelResource(value = "hello",blockHandler = "withBlockHandler")public String hello() {return "Hello Sentinel";}public String withBlockHandler(BlockException ex){ex.printStackTrace();log.info("限流:异常{}",ex.getMessage());return "手速太快了,过会儿再试试吧!";}public String withFallback(){return "别动  断啦!";}
}

服务的yml配置:

server:port: 1010
spring:application:name: service-usercloud:nacos:discovery:server-addr: 127.0.0.1:8848# 数据库及其他相关配置已省略....

我的排错步骤:

1、根据getaway网关原理,当我们通过网关发起请求的时候,网关根据断言匹配请求路径对应的服务,然后如注册中心找到该服务,并转发请求。所以第一之间检查了配置文件,用户服务、网关配置、断言,服务名一致,请求路径也没有问题,单独访问服务是可以访问的。貌似没有什么问题!

2、登录nacos注册中心,检查服务是否已经注册上了。查看候我的服务是全部注册上去的(图省略)

3、上网查资料,有部分说是缺少两个依赖,分别是Feign和负载均衡的依赖,如下(版本我已省略,在父模块已配置spring cloud版本):

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId>
</dependency><!--openFeign依赖-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

导入之后就有新的问题,由于feign依赖导入候就需要配置+注解,尝试候并没有效果,但是getaway的配置中URI还有一种配置写法,那就是直接将服务IP地址写上,如下:

server:port: 1000
spring:application:name: service-gateway #服务名cloud: #注册到Nacosnacos:discovery:server-addr: 127.0.0.1:8848gateway:discovery:locator:enabled: false #开放服务名访问方式lower-case-service-id: true #服务名小写routes: #路由配置- id : service-user #指定服务名uri: http://127.0.0.1:1010 #以负载均衡的方式去注册中心找这个服务名predicates:    #断言,匹配访问的路径- Path=/user/**    #服务访问路径  # 断言方式有很多,此处使用常见的URL路径断言,如访问http:localhost:1000/user/list命中

结果是可以访问的,如下:

[{"id": 1,"createTime": 1493695662249,"updateTime": 1493695662249,"thirdUid": null,"phone": "13330964748","email": "111@qq.com","nickName": "yhptest","bitState": 11,"secLevel": 0,"loginId": 3},// 结果已省略.........]

于是就想,为什么不能使用负载均衡的方式找到指定的服务?查阅资料,最终导入一个负载均衡的依赖解决问题。

PS:不知道为什么,getaway依赖中其实是原本就包含负载均衡依赖包的,如下:

<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId><version>2.2.5.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-gateway-core</artifactId><version>2.2.5.RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId><version>2.3.2.RELEASE</version><scope>compile</scope></dependency><!--此处为负载均衡依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId> <version>2.2.5.RELEASE</version><scope>compile</scope><optional>true</optional></dependency></dependencies>

也许是刷包问题,或者其他原因这个目前暂不得知,不过在找到这个解决方案之前,我已尝试过多次刷包、重新编译、重启等等常规操作,但最终都以失败告终。
最终完整的getaway依赖如下:

<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--Nacos注册发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId></dependency></dependencies>

希望这篇文章能帮助正好遇到此问题的你

Getaway网关访问微服务:503,Service Unavailable相关推荐

  1. linux服务器503怎么解决,宝塔linux面板apache网站访问报错503 Service Unavailable怎么解决...

    这篇文章主要为大家详细介绍了宝塔linux面板apache网站访问报错503 Service Unavailable怎么解决,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便 ...

  2. apache php 503,宝塔linux面板 apache网站访问报错503 Service Unavailable解决

    宝塔linux面板 apache网站访问报错: 503 Service Unavailable Service Unavailable The server is temporarily unable ...

  3. 转)VCSA 6.5重启无法访问,报错“503 Service Unavailable”的解决方法

    转)VCSA 6.5重启无法访问,报错"503 Service Unavailable"的解决方法 1. 问题 重启vcenter,登陆vsphere client,提示 &quo ...

  4. ESXi 6.7 的https服务挂掉处理方法 503 Service Unavailable (Failed to connect to endpoint: [N7Vmacore4Http16Loc

    ESXi 6.7 的https服务挂掉处理方法 503 Service Unavailable (Failed to connect to endpoint: [N7Vmacore4Http16Loc ...

  5. 解决重启VCSA 6.0,访问vsphere web client提示:503 Service Unavailable错误

    解决重启VCSA 6.0,访问vsphere web client提示:503 Service Unavailable错误 https://www.pianshen.com/article/93205 ...

  6. VCSA 上的 vmware-vpxd 服务失败,Web端提示503 服务不可用 (503 Service Unavailable)

    昨晚VCSA碰到一个很诡异的问题: 使用 vSphere Web Client 连接到 vCenter Server Appliance时失败,提示: 503 服务不可用 (503 Service U ...

  7. VCSA访问web报错 503 Service Unavailable

    问题描述: 运行好好的VCSA突然无法访问,web页面报错: 503 Service Unavailable (Failed to connect to endpoint: [[N7Vmacore4H ...

  8. 解决gateway使用nacos重启报503 Service Unavailable问题

    问题描述 项目使用spring cloud gateway作为网关,nacos作为微服务注册中心,项目搭建好后正常访问都没问题,但是有个很烦人的小瑕疵: 当某个微服务重启后,通过网关调用这个服务时有时 ...

  9. 马蜂窝如何利用 APISIX 网关实现微服务架构升级

    作者:董红帅,马蜂窝微服务体系建设以及基础服务能力建设专家. 马蜂窝作为旅行社交平台,是数据驱动的新型旅行电商.基于十余年的内容积累,马蜂窝通过 AI 技术与大数据算法,将个性化旅行信息与来自全球各地 ...

最新文章

  1. 第一次 C语言课程设计
  2. 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
  3. Data Augmentation
  4. 公司的故事之老板的平衡术
  5. SQL ORDER BY Clause
  6. Roundcube Webmail跨站脚本漏洞(CVE-2015-5381 )
  7. oracle用中文linux,linux+oracle中文乱码
  8. Linux远程秘钥登录方式
  9. Security+ 学习笔记25 硬件与数据安全
  10. 单片机内部弱上拉_有继电器引发对单片机驱动能力的思考!
  11. 荔枝直播助手无法连接到服务器,荔枝FM直播助手pc客户端
  12. freeCAD transform stepamp;amp; stp to stl logging py2exe 打包
  13. linux mysql免安装版配置_Linux下MySQL免安装版安装配置记录
  14. LNMP详解(九)——Nginx虚拟IP实战
  15. Android 画圆
  16. Flink滚动窗口函数的开窗起始时间计算规则
  17. 外贸版ChatGPT,每天节省5小时开发客户时间,可以用来干这些事情
  18. TigerGraph首将模式匹配与高效图计算相结合,为欺诈检测、网络安全保护、人工智能等应用增砖加瓦!
  19. Auto-encoder(自编码器)的原理及最新的技术应用(李宏毅视频课整理和总结)
  20. EXCEL文件中的VBA模块名包含中文名导致打开失败的案例。

热门文章

  1. 第6章 局域网与网络连接设备
  2. 服务器部署Nginx和Vue项目
  3. 便利店行业全面爆发,“酷铺+掌合”先于京东完成百万门店布局
  4. BHO证书劫持及DLL通道(一)
  5. 无字天书之Python第十页(基本文件操作)
  6. CRD500:Modelsim仿真问题
  7. 关于JS中的prototype介绍
  8. jquery拖动DIV
  9. 神经网络模型参数辨识,神经网络模型应用实例
  10. 双因子身份认证如何保障 Windows 系统登录安全?