案例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上执行脚本。确保所有代码都更新了。

总结&升华

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


相关文章
|
6月前
|
Java API Spring
SpringBoot项目调用HTTP接口5种方式你了解多少?
SpringBoot项目调用HTTP接口5种方式你了解多少?
601 2
|
3月前
|
Dubbo JavaScript Java
SpringBoot 调用外部接口的三种方式
SpringBoot不仅继承了Spring框架原有的特性,还简化了应用搭建与开发流程。在SpringBoot项目中,有时需要访问外部接口或URL。本文介绍三种不使用Dubbo的方式:一是利用原生`httpClient`发起请求;二是使用`RestTemplate`,支持GET和POST请求,包括`getForEntity`、`getForObject`及`postForEntity`等方法;三是采用`Feign`客户端简化HTTP请求,需引入相关依赖并在启动类上启用Feign客户端。这三种方式均能有效实现对外部服务的调用。
168 0
|
消息中间件 Java Kafka
SpringBoot中使用异步方法优化Service逻辑,提高接口响应速度
异步方法适用于逻辑与逻辑之间可以相互分割互不影响的业务中, 如生成验证码和发送验证码组成的业务, 其实无需等到真正发送成功验证码才对客户端进行响应, 可以让短信发送这一耗时操作转为异步执行, 解耦耗时操作和核心业务;
|
6月前
|
Java API Maven
SpringBoot 调用外部接口的三种方式--学习总结
SpringBoot 调用外部接口的三种方式--学习总结
129 1
|
存储 网络协议 Java
SpringBoot在自定义实现类中调用service层等Spring其他层报错为null的解决办法
SpringBoot在自定义实现类中调用service层等Spring其他层报错为null的解决办法
601 0
|
Java API Apache
springboot 调用外部接口的21种方式
springboot 调用外部接口的21种方式
765 0
|
JSON Java Apache
SpringCloud - Feign 调用服务及传递参数踩坑记录(上)
SpringCloud - Feign 调用服务及传递参数踩坑记录(上)
2492 0
|
负载均衡 Java 数据处理
案例03-fegin调用报404问题
fegin调用报404问题
156 0
|
负载均衡 Java jenkins
28个案例问题分析---03---fegin调用404--fegin的使用
28个案例问题分析---03---fegin调用404--fegin的使用
382 0