关于ribboon负载均衡失败的低级错误java.net.UnknownHostException: user-service

关于ribboon负载均衡失败的低级错误java.net.UnknownHostException: user-service

今天在做springCloud练习的时候,在实现负载均衡均衡时,犯了一个低级错误,下面展示下部分代码

注册中心Eureka

启动类

@SpringBootApplication
@EnableEurekaServer//声明是一个注册服务中心
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class,args);
    }
}

yam文件

server:
  port: 8761 #eureka默认端口


spring:
  application:
    name: eurekaserver


eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8762/eureka,http://127.0.0.1:8763/eureka
  instance:
    ip-address: 127.0.0.1 
    prefer-ip-address: true
    instance-id: ${eureka.instance.ip-address}:${server.port}

    lease-expiration-duration-in-seconds: 90 #服务失效时间
    lease-renewal-interval-in-seconds: 30 #轮询

  server:
      enable-self-preservation: true # 关闭自我保护模式(缺省为打开)


#- 服务的注册和发现都是可控制的,可以关闭也可以开启。默认都是开启
#- 注册后需要心跳,心跳周期默认30秒一次,超过90秒没法认为宕机
#- 服务拉取默认30秒拉取一次
#- Eureka每个60秒会剔除标记为宕机的服务
#- Eureka会有自我保护,当心跳失败比例超过阈值,那么开启自我保护,不再剔除服务。
#- Eureka高可用就是多台Eureka互相注册在对方上

客户端-提供

启动类

@SpringBootApplication
@MapperScan("cn.itcast.user.mapper")//扫描包
@EnableDiscoveryClient // 开启Eureka客户端发现功能
public class UserServiceApplicaton {

    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplicaton.class,args);
    }
}

接口

@RestController
@RequestMapping("user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("queryById/{id}")
    public User queryById(@PathVariable("id") Long id){
        User user = this.userService.queryById(id);
        return user;
    }
}

yam文件

server:
  port: 8081

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/cloud_test
    username: root
    password: admin
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: user-service

mybatis:
  type-aliases-package: cn.itcast.user.mapper
  configuration:
    aggressive-lazy-loading: true

eureka:
  client: 
    service-url: 
      defaultZone: http://127.0.0.1:8761/eureka,http://127.0.0.1:8762/eureka,http://127.0.0.1:8763/eureka
#  instance:
#    ip-address: 127.0.0.1 
#    prefer-ip-address: true 
#    instance-id: ${eureka.instance.ip-address}:${server.port} 

客户端-消费

启动类

@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class,args);
    }

    @Bean//同步客户端执行HTTP请求,公开一个简单的模板
    @LoadBalanced//表示客户端负载均衡器。
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

接口

@RestController
@RequestMapping("consumer")
public class ConsumerController {

    @Autowired
    private DiscoveryClient discoveryClient;

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("queryById/{id}")
    public User  queryById(@PathVariable("id") Long id){
        //负载均衡测试
        String url = "http://user-service/user/queryById/"+id;
        User user = restTemplate.getForObject(url, User.class);
        return user;

    }

}

yam文件

server:
  port: 8082
spring:
  application:
    name: consumer
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka,http://localhost:8762/eureka,http://localhost:8763/eureka
#  instance:
#    ip-address: 127.0.0.1 
#    prefer-ip-address: true 
#    instance-id: ${eureka.instance.ip-address}:${server.port}

基本业务逻辑没有错误,然后在通过负载均衡的方式请求的时候报错了

浏览器报错

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Mon Sep 23 00:37:48 GMT+08:00 2019

There was an unexpected error (type=Internal Server Error, status=500).

I/O error on GET request for “http://user-service/user/queryById/7”: user-service; nested exception is java.net.UnknownHostException: user-service

后台报错

java.net.UnknownHostException: user-service

at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_51]

at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_51]

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_51]

第一反应是代码哪儿写错了,可是来回找了三次之后发现并没有错误, 然后想到应该是负载均衡没有实现 , 进底层看了看,发现底层实现LoadBalancerClient的实现类RibbonLoadBalancerClient 居然报错了 , 这里没有来的级截图,

然后查了一下依赖 , 果然依赖少了一个…被自己手贱误删了…接下来就不说了…自己给自己挖了个坑…哈哈哈 …不过收获也挺多 ,任何问题的出现都是有原因的 ,

引用:Caused by: java.net.UnknownHostException: openapi.alipay.com。 引用: Springcloud-alibaba&nacos的RestTemplate使用服务名报异常java.net.UnknownHostException。 引用:基于Ribbon实现负载均衡时出现java.net.UnknownHostException: XXXXX异常。 java.net.UnknownHostException是一种Java异常,表示无法解析主机名或IP地址。它通常在网络通信中出现,当程序尝试连接到指定的主机或服务时,但无法找到主机或无法解析其IP地址时会抛出此异常。 具体针对"java.net.UnknownHostException: stock_service"的问题,由于引用内容中没有提供具体的上下文,无法准确判断股票服务(stock_service)是指的哪个具体的应用或组件。但是一般来说,这种异常发生可能是由于以下原因导致的: 1. 主机名或IP地址不正确:检查所连接的服务的主机名或IP地址是否正确,确保能够正确解析到对应的主机或IP地址。 2. 网络连接问题:确保网络连接正常,没有阻止与所连接服务进行通信的防火墙或网络配置。 3. DNS解析失败:如果使用了域名进行连接,那么可能是DNS解析失败导致无法解析主机名。可以尝试使用IP地址直接连接,或者检查DNS配置是否正确。 请根据具体的上下文和使用环境,结合上述可能的原因进行排查和解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Caused by: java.net.UnknownHostException: openapi.alipay.com](https://download.csdn.net/download/u011496822/10749662)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Springcloud-alibaba&nacos的RestTemplate使用服务名报异常java.net.UnknownHostException](https://blog.csdn.net/ChitinLoveJAVA/article/details/123260176)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [基于Ribbon实现负载均衡时出现java.net.UnknownHostException: XXXXX异常](https://blog.csdn.net/liyanlei5858/article/details/127412651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值