琼黔贺 2024-06-23 20:40 采纳率: 0%
浏览 12

微服务nacos和Feign问题

微服务问题,用的是nacos和Feign,服务者video的接口正常,order模块调video模块接口访问数据库的时候访问的是order的库,一直报错找不到video表(cloud_video),我两个模块的数据库也是独立的,
为什么会出现 消费者模块 调用 服务者模块接口的时候,在mapper进行数据交换的时候,使用的是消费者的数据库order,最后找不到cloud_video表(这个表在video模块配置的数据库中)
有人可以解答一下吗

img


Feign接口(order模块)

img


order启动类

img


video模块Mapper和启动类

img


两个模块yml配置

img

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-06-23 20:47
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    从你提供的信息来看,问题出在微服务架构中,Feign客户端在调用服务时,并没有使用目标服务(video模块)的数据库连接,而是错误地使用了发起调用的服务(order模块)的数据库连接。这通常是由于配置错误或不当的数据库连接管理造成的。以下是一些可能的解决方案和检查点:

    1. 确保Feign客户端配置正确:检查IVideoServiceFeign接口中的@FeignClient注解是否正确配置,确保它指向正确的服务名。

    2. 检查数据库连接配置:在application.yml配置文件中,确保每个服务模块的数据库连接配置是独立的,并且没有相互干扰。

    3. 检查MyBatis配置:确保VideoMapper使用的是video模块的数据库连接,而不是order模块的。这可能需要在MyBatis配置中指定数据源。

    4. 使用服务发现:通过Nacos服务发现确保Feign客户端能够正确地调用远程服务。

    5. 检查服务间调用:确保order模块在调用video模块接口时,是通过Feign客户端进行的,而不是直接访问数据库。

    6. 检查日志和错误信息:错误日志显示尝试从order数据库中查询cloud_video表,这表明可能存在数据库路由问题。需要检查是否有数据库路由规则错误地将请求路由到了order模块的数据库。

    7. 检查服务端口和启动类:确保每个服务模块的端口不同,并且启动类中没有配置错误的数据库连接。

    8. 检查配置文件:根据你提供的配置文件截图,检查application.yml文件中的数据库连接、服务名和Nacos配置是否正确。

    9. 检查服务注册和发现:确保服务在Nacos中正确注册,并且Feign客户端能够通过服务名发现并调用正确的服务实例。

    10. 考虑使用断路器:在服务调用中使用Hystrix等断路器机制,以防止服务间调用失败时对系统稳定性的影响。

    如果上述检查和调整后问题仍然存在,可能需要更深入地检查代码和配置,或者考虑是否需要重新设计服务间的调用和数据库访问模式。

    至于参考链接,以下是一些可能有用的资源:

    希望这些信息能帮助你解决问题。如果需要更具体的帮助,请提供更多的配置细节或错误日志。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月23日