每日笔记8.14

eureka自我保护机制

1.默认情况下EurekaClient定时(30秒)向EurekaServer端发送心跳包(来确保EurekaClient是否停止)

2.如果Eureka在server端在一定时间内(默认90秒)没有收到EurekaClient发送心跳包,便会直接从服务注册列表中剔除该服务

3.如果Eureka 开启了自我保护模式/机制, 那么在短时间(90秒中)内丢失了大量的服务实例跳,这时候EurekaServer会开启自我保护机制,不会剔除该服务(该现象可能出现在如果网络不通或者阻塞) 因为客户端还能正常发送心跳,只是网络延迟问题,而保护机制是为了解决此问题而产生的

4.自我保护是cap里的ap分支,提高可用性和分区容错性

CAP:三者存在其二

        c:一致性  同一时间,数据保持不变

         a:可用性  正常时间,服务一直可以使用

        p:分区容错性  当出现分区故障时候,一致性或者可用性存活其一 

eg:eureka的ap保护机制,当某个客户端服务90秒后没有发送心跳,eureka server端不会立即销毁,会保留该客户端服务,并提示红字error信息

如下是关闭自我保护时,如果client端停下,就会踢掉

 取消自我保护机制,自己设置超时时间(默认90秒)和心跳时间(默认30秒)

在你的eureka server微服务模块的application.yml文件中配置

server:
  #关闭自我保护
  enable-self-preservation: false
  #设置超时时间为2秒,2秒后收不到心跳包,就表示超时
  eviction-interval-timer-in-ms: 2000

在你的eureka client微服务模块的application.yml文件中配置

instance:
  #表示client端向server端发送心跳包的时间为1秒(默认30秒)
  lease-renewal-interval-in-seconds: 1
  #表示server端从收到最后一次心跳开始等待的时间为2秒(默认90秒)
  #超时就踢出client端
  lease-expiration-duration-in-seconds: 2

配置eureka集群

只需要在对应的application.yml文件中,将eureka:client: service-url :defaultZone 中配置你要相互注册的服务模块

eg:9002与9001模块相互注册

server:
  port: 9002

#配置eureka
eureka:
  instance:
    hostname: eureka9002.com #服务实例名
  client:
    #配置 不向注册中心 注册自己
    register-with-eureka: false
    #配置 自己就是注册中心 作用是维护注册服务实例 不需要去检索服务
    fetch-registry: false
    service-url:
      #设置交互模块, 查询服务和注册服务都需要依赖这个地址
      #将该模块注册到9001 server  (相互注册)
      defaultZone: http://eureka9001.com:9001/eureka/

DiscoveryClient获取eureka server上的注册服务

对应controller层

@GetMapping("/member/consumer/discovery")
    public Object discovery(){
        //获取eureka server上的注册服务
        List<String> services = discoveryClient.getServices();

        for (String service : services) {
            log.info("服务名={}",service);
            List<ServiceInstance> instances = discoveryClient.getInstances(service);
            for (ServiceInstance instance : instances) {
                log.info("id={},host={},port={},uri={}",
                        instance.getServiceId(),instance.getHost(),instance.getPort(),instance.getUri());
            }
        }
        return discoveryClient;
    }

主要返回对应eureka server上的注册服务

 后台 对应log.info()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值