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
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章