You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

微服务UserService调用DepartmentService报Servlet.service I/O错误如何解决

问题排查与解决方案

1. 检查DepartmentService基础配置

  • 确认DepartmentService的spring.application.name配置值为DEPARTMENT-SERVICE,大小写必须和RestTemplate调用URL中的服务名完全一致,Eureka服务名匹配为大小写敏感。
  • 打开Eureka控制台http://localhost:8761,确认DEPARTMENT-SERVICE实例已经成功注册到注册中心。
  • 直接通过IP+端口调用DepartmentService的接口验证可用性,比如访问http://localhost:[DepartmentService服务端口]/departments/2,确认接口可以正常返回数据,排除服务本身故障的可能性。

2. 修正UserService的配置错误

你当前UserService的application.yml存在缩进错误,instance节点错误归到了eureka.client.service-url层级下,正确的配置格式如下:

server:
  port: 9092

spring:
  application:
    name: USER-SERVICE

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    hostname: localhost

该缩进错误会导致Eureka实例配置不生效,影响服务发现的地址解析逻辑。

3. 检查依赖与版本兼容性

如果你使用的是Spring Cloud 2020.0及以上版本(Ilford版本),官方已经默认移除了Ribbon组件,@LoadBalanced注解需要配合Spring Cloud LoadBalancer依赖才能实现服务名解析,需要确认项目中已引入对应依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

缺少该依赖会导致RestTemplate无法将服务名解析为实际的IP+端口,最终抛出连接超时错误。

4. 快速验证定位问题

可以先将RestTemplate调用的URL替换为DepartmentService的IP+端口直接调用,如果调用成功即可确认问题出在服务发现或负载均衡组件层面,再针对性排查上面的配置和依赖问题即可。


内容的提问来源于stack exchange,提问作者Rafael Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 20:15:04