6.微服务信息完善及Eureka自我保护机制—2020最新版周阳SpringCloud(H版&alibaba)学习笔记06

1.微服务展示名称修改

默认eureka上的服务名称前都带有主机名或IP地址
在这里插入图片描述
在eureka配置中,加入
instance:
instance-id: payment8002就可以设置显示名称。在这里插入图片描述
修改完运行:红色是修改的在这里插入图片描述

2.鼠标放在服务名称上展示ip

在这里插入图片描述
prefer-ip-address: true #访问路径可以显示IP地址
在这里插入图片描述

3.服务发现Discovery

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

3.1修改payment8001controller

加入以下代码:

@Resource
    private DiscoveryClient discoveryClient;

//    import org.springframework.cloud.client.discovery.DiscoveryClient;
    @GetMapping(value ="/payment/discovery")
    public Object discovery(){
        List<String> services = discoveryClient.getServices();
        for(String element:services){
            log.info("****element"+element);
        }

        List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
        for (ServiceInstance instance : instances) {
            log.info(instance.getServiceId()+"\t"+instance.getHost()+"\t"+instance.getPort()+"\t"+instance.getUri());
        }

        return this.discoveryClient;
    }

3.2 修改启动类

加入@EnableDiscoveryClient注解

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class PaymentMain8001 {

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

3.3 启动测试

在这里插入图片描述
在这里插入图片描述

4.eureka自我保护机制

4.1故障现象

在这里插入图片描述
一句话:某时刻 一个微服务不可用了,Eureka不会立刻清理,依旧会对该服务的信息进行保存。属于CAP里面的AP分支

4.2导致原因

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3怎样禁止自我保护

(1)修改eurekaServer端7001yml

改为单机模式,方便测试,关闭自我保护机制

server:
  port: 7001

eureka:
  instance:
    hostname: eureka7001.com  #eureka服务端的实例名字
  client:
    register-with-eureka: false    #表识不向注册中心注册自己
    fetch-registry: false   #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
    service-url:
      #集群模式
      #defaultZone: http://eureka7002.com:7002/eureka/    #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
      #单机模式
      defaultZone: http://eureka7001.com:7001/eureka/
  server:
    #关闭自我保护机制,保证不可用服务被及时剔除
    enable-self-preservation: false
    #设置2秒就剔除
    eviction-interval-timer-in-ms: 2000

(2)修改eurekaClient端8001

yml:

eureka:
  client:
    register-with-eureka: true #是否将自己注册到注册中心,默认true
    fetchRegistry: true #是否从注册中心抓取已有的注册信息,默认true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    service-url:
      defaultZone: http://localhost:7001/eureka #单机版
      #defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版
  instance:
    instance-id: payment8001
    prefer-ip-address: true  #访问路径可以显示IP地址
    #Eureka客户端向服务端发送心跳的时间间隔。单位是秒(默认是30秒)
    lease-renewal-interval-in-seconds: 1
    #Eureka服务端在收到最后一次心跳后等待时间上线,单位为秒(默认是90秒),超时将剔除服务
    lease-expiration-duration-in-seconds: 2

主启动加注解:@EnableDiscoveryClient

(3)测试

在这里插入图片描述
当客户端8001关闭时,注册中心直接将其剔除。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值