Spring Cloud(随笔) - Eureka

Spring Cloud - Eureka

  • 服务注册: 服务单元向服务注册中心登记自己提供的服务,注册中心按服务名分类组织服务清单

  • 服务发现: 服务调用方向服务注册中心咨询服务,获取该服务的注册清单,根据本身负载策略选择服务节点

Eureka Server

​ 高可用、强一致性、集群式、单片故障,自我保护模式

  • IP 地址形式注册

    eureka:
      server:
        enable-self-preservation: true #自我保护
        eviction-interval-timer-in-ms: 10000 #健康检查 10s
      instance:
        #hostname: eureka-register-1
        prefer-ip-address: true # ip地址形式注册
        ip-address: 192.168.0.1
        instance-id: ${eureka.instance.ip-address}:${server.port}  
      client:
        registerWithEureka: true # 服务注册 (eureka相互注册)
        fetchRegistry: true      # 服务发现 (获取注册表信息)
        serviceUrl:
          defaultZone: http://192.168.0.1:8761/eureka/
    
  • 自我保护:统计心跳失败比例低于限定范围(15分钟内 85%) 的注册信息,保护起来,延迟过期

  • 集群式 相互注册,服务同步

  • 注册中心 双层Map 结构存储注册清单 第一层 key = service-name; 第二层 key = instanceid

    private final ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>> registry
                = new ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>>();
    

Eureka Client

​ 周期性心跳 维持 注册中心中注册服务信息且周期性续约,并将注册清单缓存到本地进行周期性刷新;

​ DiscoveryClient 启动后,会启动3个定时任务 :服务注册、服务续约、服务发现

  • IP地址形式注册

    eureka:
      client:
        serviceUrl:
          defaultZone: http://192.168.0.1:8761/eureka/
      instance:
        lease-renewal-interval-in-seconds: 5
        lease-expiration-duration-in-seconds: 10
        #health-check-url-path: /actuator/health #健康监测
        prefer-ip-address: true
        instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
    
  • 服务续约 (renewal)- 服务单元向注册中心续约自身服务

    eureka:
      instance:
        lease-renewal-interval-in-seconds: 30  #续约任务的间隔时间
        lease-expiration-duration-in-seconds: 90 #服务失效剔除时间 
    
  • 服务获取 - 服务单元缓存清单更新

    eureka:
      client:
        registry-fetch-interval-seconds:30
    
发布了73 篇原创文章 · 获赞 78 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/SHIYUN123zw/article/details/103548181