案例03---fegin调用404--fegin的使用

简介: 案例03---fegin调用404--fegin的使用

背景

书写这篇文章的目的是告诉大家有闭环思维,使用Feign调用404的事件说明闭环思维的重要性。

具有绑定关系的服务要进行形式绑定,防止出现出现线上事故。

现状:

Feign服务在生产环境做了负载,部署了两台机器。用了同一个nacos的命名空间。上线的时候只对其中的一台做了更新,导致请求到另一台的时候产生了404的问题。

实操

fegin调用

概念

fegin是一个声明式的http客户端,使用fegin只需要创建一个接口并使用对应注解,就能支持我们服务之间的调用。

1. 首先准备一个使用了nacos的springCloud项目。为这个项目创建两个模块。

2. 被调用方操作步骤

被调用方不需要做任何操作,写正常的接口就可以。

3. 调用方操作步骤

1、引入依赖:

<!--        fengin调用-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2、使用注解实现nacos注册

3、启动类上添加@EnableFeignClients注解

4、需要的地方进行注入,使用。

5、测试

部署多个服务

上边部分只部署了一个服务,现在部署多套服务服务:

我们把上文提到的serviceTwo服务部署两份,由于是在我自己本机上操作,我们使用端口号进行一下区分。

这样我们就模拟出了,serverTwo服务,部署了两份。我们可以看一下nacos,现在serverTwo项目有两个实例。这两个服务的默认权重都是1,也就是如果我再次使用 serverOne对serverTwo进行fegin调用,会走一次9002端口,然后会走一次9004端口。

服务修改

我们将9004端口对应的服务内容进行一下更改,将serviceTwo/test 接口注释。模拟一下,两个服务不同,即是上文提到的一个服务更新了,另一个服务没有更新,调用到未更新的就会产生404问题。

重启后测试

第二次调用的时候,由于9004对应的serverTwo服务的接口被注销调了,无法调通。这样就复现了上文所出现的问题

一个服务更新了,另一个服务代码没有更新,调用到未更新的就会产生404问题

如何解决

减少人的操作,可以周期性在jenkins上执行脚本。确保所有代码都更新了。

总结&升华

我们要有连续,相对,无限,运动的思维去解决问题。能交给机器做的都不要让人做。


相关文章
|
Ubuntu Java Linux
在Spring Boot中使用iTextPDF创建动态PDF文档
iTextPDF 是一个用于创建和操作 PDF(Portable Document Format)文档的流行的 Java 库。它提供了一套全面的功能,用于处理 PDF 文件,包括创建新文档、修改现有文档以及提取信息。
1269 1
|
机器学习/深度学习 负载均衡 Java
【SpringBoot系列】微服务远程调用Open Feign深度学习
【4月更文挑战第9天】微服务远程调度open Feign 框架学习
985 2
|
7月前
|
安全 Java API
Java日期处理完全指南(新手也能轻松掌握的Java时间格式化与日期API教程)
教程来源https://www.vpshk.cn/本文介绍Java 8引入的java.time包,详解LocalDateTime、LocalDate等类的使用,涵盖获取当前时间、格式化、解析字符串及日期运算,助你轻松掌握现代Java日期处理方法,适合初学者快速上手。
|
2月前
|
人工智能 运维 监控
AI Agent开发指南:从模板到生产环境的完整路径
本文详解AI Agent开发四步法:1)用AgentRun模板快速验证(编程/电商/舆情等场景);2)低代码/高代码双模式定制;3)功能、性能、安全三重测试;4)一键部署+监控告警。阿里云函数计算提供全链路支持,助企业高效落地AI Agent。
|
6月前
|
SQL 存储 关系型数据库
PL/pgSQL 入门教程(一):语法篇
本教程为PL/pgSQL入门首篇,系统讲解其核心基础与语法规则。涵盖函数创建、块结构、变量声明、参数传递、返回类型及排序规则等关键知识点,助你掌握在PostgreSQL中编写高效存储过程与函数的必备技能,提升数据库逻辑处理能力。
|
JSON 前端开发 Java
Spring MVC——传递参数
本文介绍了在Spring框架中如何传递参数的方法,包括传递单个参数、多个参数、参数重命名、传递数组和集合以及JSON数据。对于单个参数,可以直接在方法中声明;多个参数无需关注传递顺序,只需确保参数名对应。使用`@RequestParam`注解可实现参数重命名,而传递数组和集合时需注意数据类型的转换。最后,通过`@RequestBody`注解可以处理JSON格式的数据,实现复杂对象的传递。
1230 1
Spring MVC——传递参数
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
966 0
|
负载均衡 Java 数据处理
案例03-fegin调用报404问题
fegin调用报404问题
517 0
|
应用服务中间件 网络安全 nginx
nginx配置去掉路径中的指定字符
【6月更文挑战第25天】nginx配置去掉路径中的指定字符
1073 0