天天看點

springcloud學習---服務發現——Netflix Eureka

Eureka是Netflix開發的服務發現架構,SpringCloud将它內建在自己的子項目spring-cloud-netflix中,實作SpringCloud的服務發現功能。Eureka包含兩個元件:Eureka Server和Eureka Client。Eureka Server提供服務注冊服務,各個節點啟動後,會在Eureka Server中進行注冊,這樣EurekaServer中的服務系統資料庫中将會存儲所有可用服務節點的資訊,服務節點的資訊可以在界面中直覺的看到。

       Eureka Client是一個java用戶端,用于簡化與Eureka Server的互動,用戶端同時也就别一個内置的、使用輪詢(round-robin)負載算法的負載均衡器。在應用啟動後,将會向Eureka Server發送心跳,預設周期為30秒,如果Eureka Server在多個心跳周期内沒有接收到某個節點的心跳,Eureka Server将會從服務系統資料庫中把這個服務節點移除(預設90秒)。

 Eureka Server之間通過複制的方式完成資料的同步,Eureka還提供了用戶端緩存機制,即使所有的Eureka Server都挂掉,用戶端依然可以利用緩存中的資訊消費其他服務的API。綜上,Eureka通過心跳檢查、用戶端緩存等機制,確定了系統的高可用性、靈活性和可伸縮性。

将cloud版本鎖定到父pom中

dependencyManagement 鎖版本

 <dependencyManagement> 
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring‐cloud‐dependencies</artifactId>
                <version>Finchley.M9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
 </dependencyManagement>
           

 Eureka 服務端配置:

1  pom配置:

<dependencies>
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring‐cloud‐starter‐netflix‐eureka‐server</artifactId>
     </dependency>
</dependencies>
           
2  application.yml:
server:
  port: 5858 #服務端口
eureka:
  client:
    register-With-Eureka: false #是否将自己注冊到Eureka服務中,本身就是伺服器是以無需注冊
    fetch-registry: false #是否從Eureka服務中擷取注冊資訊
    service-url: #Eureka用戶端與Eureka服務端進行互動的位址
        defaultZone: http://127.0.0.1:${server.port}/eureka/  #釋出完成後,這個位址就是eureka通路位址
           
3. 啟動類
@SpringBootApplication
@EnableEurekaServer
public class EurekaServer {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer.class, args);
    }
}
           

服務調用-Netflix Feign

将所有的微服務都注冊到Eureka中,這樣所有的微服務之間都可以互相調用.

1. pom.xml配置
<dependency>        
    <groupId>org.springframework.cloud</groupId>            
    <artifactId>spring‐cloud‐starter‐netflix‐eureka‐client</artifactId>       
</dependency> 
           
2. 在application.ym添加注冊eureka服務的配置
eureka:
  client:
    service‐url:
      defaultZone: http://localhost:5858/eureka
  instance:
    prefer‐ip‐address: true  #這個不寫,隻能在本地測試,線上有可能調不通
           

3. 啟動類添加注解

@EnableEurekaClient

4. 啟動測試:将每個微服務啟動起來,會發現eureka的注冊清單中就能看到這些微服務.

繼續閱讀