springCloud Eureka 注冊中心原理及配置理解


Eureka 原理與步驟
比擬場景:餐廳吃飯
1、先向收銀員(注冊中心)要個號牌(IP地址)。
2、飯菜到場就根據你號牌(IP地址)將飯菜端到你面前。
3、在整個就餐過程中,你隨時可以與收銀員進行互相溝通(監聽客戶端心跳)。
4、最后你吃完跑路了號牌回收(剔除服務器)。

原理: 與比擬場景序號對應理解。
    1、服務提供方啟動后將注冊到 注冊中心,提供IP, 名字,什么服務等信息,
    2、服務調用方作為客戶端注冊到注冊中心后,拉取注冊中心的服務列表,在通過負載均衡調用對應的服務提供方。
    3、注冊中心可以建立集群,生成多台eureka,注冊中心為了監測各個服務的心跳,將在每30S 向所注冊的服務發起請求判斷
    4、服務是否掛掉,如果掛掉90S后將會將服務從注冊中心剔除。
    一個服務可以監測多台服務實例,從而可實現均衡負載。
 
SpringBoot和Spring Cloud之間的版本依賴比較嚴格:可查(json格式化) https://start.spring.io/actuator/info
 
配置步驟:  注意 以下的客戶端說的是作為注冊到注冊中心的微服務,他相對於注冊中心就是客戶端,注冊中心就是服務端
 一、加依賴 以下指POM文件
<!--注冊中心:-->
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
     </dependency>
    <!--客戶端:-->
 <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
     </dependency>

 

二、加注解 以下在啟動器上加注解

注冊中心 : @EnableEurekaServer  
服務提供客戶端方:@EnableDiscoveryClient   此注解支持多種服務中心,如eureka,zk,等等,所以一般使用這個。
                                @EnableEurekaClient 只支持eureka所以用上一種
 
三、加配置 以下指application.yml配置文件
 
#注冊中心:
server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    register-with-eureka: false # 是否注冊自己的信息到EurekaServer,默認是true
    fetch-registry: false # 是否拉取其它服務的信息,默認是true
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka
      #注冊到當前地址中,實現eureka 集群后面描述
  instance:
    lease-renewal-interval-in-seconds: 30 #每30S給其他服務發次請求,監測心跳
    lease-expiration-duration-in-seconds: 90 #如果其他服務沒心跳,90S后剔除該服務
#客戶端:
server:
  port: 8081
spring:
  application:
    name: user-server
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka
    registry-fetch-interval-seconds: 50 #客戶端拉取注冊中心的服務列表

 

關於Eureka 高可用的配置及講解:
     為了使eureka高可用,掛掉后依然可以使用所以將配置多台eureka注冊中心實現集群。
實現原理:如果需配置3台注冊中心,那么應該是A注冊到B、C ,B注冊到C、A  C注冊到A,B
這樣互相注冊即可實現集群配置。也就是上圖配置的多台地址
 
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka
    registry-fetch-interval-seconds: 50 #客戶端拉取注冊中心的服務列表

 

 

關於Eureka 的自我保護機制與剔除服務機制:
剔除服務機制:當服務提供方(客戶端)注冊到Eureka后,每30S將會向Eureka發起一次請求表示自己有心跳
服務器正常,當90S都沒有發請求時候Eureka會認為服務器宕機了,則會在60S后統一清除所有宕機的服務器。
 
自我保護機制:當服務沒有按每30S按時發請求時,Eureka將會統計15分鍾內心跳的請求成功概率,如果低於85%
則可能服務提供方有延遲問題或者網絡故障,這樣會將服務提供方保護起來不會剔除。
eureka:
    server:
        enable-self-preservation: false # 關閉自我保護模式(缺省為打開)
        eviction-interval-timer-in-ms: 1000 # 掃描失效服務的間隔時間(缺省為60*1000ms)
 
 
https://files.cnblogs.com/files/lanSeGeDiao/springCloud-demo.zip 
以上是springCloud的DEMO例子 請自行復制路徑到瀏覽器

 

 

相似的技術Nacos: https://nacos.io/zh-cn/docs/quick-start.html

 

轉: https://www.cnblogs.com/lanSeGeDiao/p/10801804.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM