28个案例问题分析---03---fegin调用404--fegin的使用
创始人
2025-05-28 16:49:39

fegin的使用

  • 背景
  • 实操
    • fegin调用准备
      • 概念
      • 怎么做
        • 1. 首先准备一个使用了nacos的springCloud项目。为这个项目创建两个模块。
        • 2. 被调用方操作步骤
        • 3. 调用方操作步骤
        • 4. 测试一下
    • 部署多个服务
    • 服务部署
    • 服务修改
    • 重启后测试
  • 如何解决
  • 总结&升华

背景

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

实操

fegin调用准备

想要复现上文所述问题,就要先了解什么是fegin调用,如何使用fegin调用。

概念

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

怎么做

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

在这里插入图片描述
这里我们将服务一作为调用方,服务二作为被调用方。(往往我们的项目中,一个服务可能即是调用方,又是被调用方。)

2. 被调用方操作步骤

被调用方不需要额外增加任何操作,只要有对应的接口就可以了。下图为我的服务二controller提供对外的接口
在这里插入图片描述

3. 调用方操作步骤

3.1引入openFegin的依赖

	org.springframework.cloudspring-cloud-starter-openfeign

3.2创建fegin调用的接口
在这里插入图片描述
3.3启动类上添加@EnableFeignClients注解
在这里插入图片描述
3.4需要的地方进行注入,然后进行使用
在这里插入图片描述

4. 测试一下

在这里插入图片描述
根据结果我们可以看出。调用的serverOne的服务,serverone里通过fegin调用了serverTwo的接口。

部署多个服务

故事背景里提到。同样的服务部署了两份,更新的时候只更新了其中的一份。我们在本地进行一下模拟

服务部署

我们把上文提到的serviceTwo服务部署两份,由于是在我自己本机上操作,我们使用端口号进行一下区分。
在这里插入图片描述
这样我们就模拟出了,serverTwo服务,部署了两份。我们可以看一下nacos,现在serverTwo项目有两个实例。这两个服务的默认权重都是1,也就是如果我再次使用 serverOne对serverTwo进行fegin调用,会走一次9002端口,然后会走一次9004端口。
在这里插入图片描述

服务修改

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

重启后测试

在这里插入图片描述
第二次调用的时候,由于9004对应的serverTwo服务的接口被注销调了,无法调通。这样就复现了上文所出现的问题
一个服务更新了,另一个服务没有更新,调用到未更新的就会产生404问题

如何解决

那么我们如何才能避免这种问题呢?我暂时想到的是
将一个服务都配置到一个jenkins里,一次构建,多个服务同时都更新。
通过上线流程约束

总结&升华

做事一定要求全局观,不能丢掉任何一部分

相关内容

热门资讯

今年我省粮食产量达515.56... (来源:辽宁日报)转自:辽宁日报 图为在中储粮(盘锦)储运有限公司,装运粮食的重型卡车排起长队...
国家发展改革委部署促进投资止跌... (来源:辽宁日报)转自:辽宁日报 新华社北京12月13日电 (记者魏玉坤) 记者13日从全国发展和改...
江苏省实施《中华人民共和国森林... (来源:新华日报) 目 录 第一章 总则 第二章 森林、林木和林地权属管理...
姜堰数字化产品讲“活”理论 (来源:新华日报) □ 本报记者 卢佳乐 通讯员 姜宣 “王教授,您约我‘喝茶论道’,...
联合国维和部队在苏丹遇袭 6人... 转自:财联社【联合国维和部队在苏丹遇袭 6人死亡】财联社12月14日电,当地时间13日,苏丹武装部队...