Spring cloud day(3) Eureka自我保护机制和服务发现

一、Eureka的自我保护机制

1.1 自我保护机制

  • 某时刻一个微服务不可用了,eureka不会立即清理,而是会对该微服务的信息进行保存。
  • 默认,EurekaServer在一段时间内没有接收到某个微服务的心跳,EurekaServer将会注销该实例(默认90秒),如果是网络拥堵的情况下这就很危险,Eureka通过自我保护机模式来解决这个问题,当EurekaServer节点在短时间内丢失过多客户端时,那么这个节点就会进入自我保护模式,一旦进入该模式,EurekaServer就会保护服务注册表中的信息,不会删除服务注册表中的信息。当它收到的心跳数重新恢复到阀值以上时,(比如网络故障恢复后),该EurekaServer节点会自动退出自我保护模式。

1.2 禁用自我保护模式

eureka.server.enable-self-preservation=false

二、服务发现

2.1 概念

对于注册进eureka里面的服务,可以用通过服务发现来获得该服务的信息。

2.2 主启动类添加注解

  • 向注册中心注册服务
@EnableDiscoveryClient

2.3 controller层

  • 添加到提供服务的一端
  • controller层
@RestController
public class RubbishControler {
    @Autowired
    DiscoveryClient discoveryClient;
    @RequestMapping("/get/discovery")
    public Object discovery(){
        List<String> services = discoveryClient.getServices();
        System.out.println("出现的服务的名称" + services);
        List<ServiceInstance> service = discoveryClient.getInstances("serverice_name");
        for(ServiceInstance serviceInstance : service){
            System.out.println(serviceInstance.getHost() + " " + serviceInstance.getInstanceId() + " " + serviceInstance.getPort() + " " + serviceInstance.getUri());
        }
        return discoveryClient;
    }
}
  • 需要倒入的包
import org.springframework.cloud.client.discovery.DiscoveryClient;

2.4 运行结果

  • web端
    在这里插入图片描述* idea端
    在这里插入图片描述

2.5 custom模块发现的实现

  • 返回值是Object类型的
@RequestMapping("/custom/get/discovery")
    public Object getDiscovery(){
        return restTemplate.getForObject(URL + "/get/discovery",Object.class);
    }

2.6 custom模块发现测试

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值