前端调用接口成功但后端没收到请求

环境描述:

​ 微服务技术栈: SpringCloud Alibaba

​ 网关: Gateway

问题描述:

​ 前台发送的请求的响应码为200

前端调用接口成功但后端没收到请求

​ 具体响应内容:

前端调用接口成功但后端没收到请求

​ 后台的Controller层方法却没有进入

​ 注: 只有启动微服务项目中的B服务时,才会出现接口概率性调用异常,关闭B服务不会出现

问题分析:

​ 因为所有的Controller层的接口都会出现此问题,可以断定与接口无关,所以决定先排查B服务与网关

排查过程:

  1. 在网关配置的Fallback类上打上断点,查看是否是接口调用失败导致问题的出现
@RestController
public class FallbackController {
    /**
     * 全局熔断处理
     * @return
     */
    @RequestMapping("/fallback")
    public Mono fallback() {
        return Mono.just("访问超时,请稍后再试!");
    }
}

果然,断点卡在第9行上,并且返回值也与前台获得的相应内容一致
2. 在网关配置的Filter类上打上断点,查看调用失败的接口信息

@Component
public class GlobalAccessTokenFilter implements GlobalFilter, Ordered
    @Override
    public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
         String url = exchange.getRequest().getURI().getPath();
    }

​ 结果发现此方法一直在被调用,速度极快,并且几乎全是/login/xx与/getXXX接口,因为业务原因,作者十分 确定这两个接口不会被频繁调用,所以判断是存在死循环在调用这两个接口
3. 继续排查B服务,重点查找调用上述两个接口的方法,果然发现存在死循环(代码就不放了)

解决方法:

​ 解决方法当然是干掉死循环了,不过还有另一种解决方法: 搭建集群。因为真实生产环境中此问题也完全有可能是并发量达到了gateway的上限造成的,那自然就需要对gateway服务做集群

​ 这里说一下openFeign如何配置gateway集群

@FeignClient(value = "gateway服务名称", contextId = "xxx", fallbackFactory = "xxx")
上述配置即可自动进行负载均衡转发到gateway服务上(注意: value属性值不可重复,否则项目会启动失败,如果需要配置多个FeignClient的话并且value值需要一样的话,请再额外配置contextId进行区分)

Original: https://www.cnblogs.com/llysc/p/15041832.html
Author: Java挖坑工程师
Title: 前端调用接口成功但后端没收到请求

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/569333/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 0007在线考试系统-java毕设

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年5月29日
    082
  • 新建项目运行会报Gradle plugin requires Java 11 to run 问题

    在高版本的AS的gradle需要java11 ,但是环境使用的却是1.8 csharp;gutter:true; An exception occurred applying pl…

    Java 2023年5月29日
    073
  • 1.欧拉算法求100以内素数个数

    class test { private static boolean[] check = new boolean[101];//这里定100会有越界错误 private stat…

    Java 2023年6月9日
    0181
  • 删除无序链表中重复节点,保留第一次出现的节点

    面试题 02.01. 移除重复节点:https://leetcode-cn.com/problems/remove-duplicate-node-lcci/ 编写代码,移除未排序链…

    Java 2023年6月5日
    081
  • String、StringBuilder和StringBuffer

    JVM(Java虚拟机) 学习String类前,先了解一下JVM,也称为Java虚拟机。 JVM内存分有几大区域,其中,常见有堆、桟、方法区、常量池。 堆是运行时数据区,类通过ne…

    Java 2023年6月5日
    097
  • java 利用freemaker模板 导出word,包含动态数据,图片

    在工作中又遇到要导出word,根据模板导出,里面有一部分内容数据事动态的,需要循环根据数据导出。 一、首先准备word模板 1、在word里面讲格式调整好,在需要导出图片的地方填充…

    Java 2023年6月13日
    089
  • Java开发学习(十三)—-基于注解开发定义第三方bean及注解开发总结

    在前面的博客中定义bean的时候都是在自己开发的类上面写个注解就完成了,但如果是第三方的类,这些类都是在jar包中,我们没有办法在类上面添加注解,这个时候该怎么办? 遇到上述问题,…

    Java 2023年5月29日
    060
  • Spring Boot 如何热加载jar实现动态插件?

    一、背景 动态插件化编程是一件很酷的事情,能实现业务功能的 解耦 便于维护,另外也可以提升 可扩展性 随时可以在不停服务器的情况下扩展功能,也具有非常好的 开放性 除了自己的研发人…

    Java 2023年6月6日
    085
  • 分布式文件存储–FastDFS

    上传交互过程 client询问tracker上传到的storage,不需要附加参数; tracker返回一台可用的storage; client直接和storage通讯完成文件上传…

    Java 2023年5月29日
    070
  • Java-驼峰命名与下划线命名互转

    package com.xsh.util; /** * String工具类 * * @author xieshua…

    Java 2023年6月5日
    083
  • Nginx作为静态文件服务器

    Nginx 服务器的一个主要任务是提供静态HTML页面、图像或文件访问。 根据请求的不同,文件将从不同的本地目录提供。 /http/www 包含HTML文件 /http/data1…

    Java 2023年5月29日
    065
  • 这个队列的思路是真的好,现在它是我简历上的亮点了。

    你好呀,我是歪歪。 前几天在一个开源项目的 github 里面看到这样的一个 pr: 光是看这个名字,里面有个 MemorySafe,我就有点陷进去了。 我先给你看看这个东西: 这…

    Java 2023年6月5日
    059
  • 分布式中灰度方案实践

    让请求在导航的服务节上点执行; 一、背景简介 分布式系统中会存在这样的开发场景,不同需求可能涉及到对同一个服务的开发,那么该服务在研发期间就会存在多个版本并行的状态,为了保持不同版…

    Java 2023年6月15日
    063
  • Windows环境MySql差异备份

    前言 备份上一次的完全备份后发生变化的所有文件。 差异备份是指在一次全备份后到进行差异备份的这段时间内 对那些增加或者修改文件的备份。在进行恢复时,我们只需对第一次全量备份和最后一…

    Java 2023年6月8日
    070
  • Java基础语法(三)

    Java基础语法(三) 不积跬步,无以至千里;不积小流,无以成江海。 ——荀子《劝学》 Java基础语法(三) – 十六、方法 十七、命令行传参(扩展) 十八、可变参数…

    Java 2023年6月9日
    090
  • Spring Cloud中Feign如何统一设置验证token

    代码地址:https://github.com/hbbliyong/springcloud.git 原理是通过每个微服务请求之前都从认证服务获取认证之后的token,然后将toke…

    Java 2023年5月30日
    0107
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球