Spring Cloud-Eureka 服務註冊中心

Eureka 是 Netflix 開發的,一個基於 REST 服務的,服務註冊與發現的組件git

它主要包括兩個組件:Eureka Server 和 Eureka Clientgithub

Eureka Client:一個Java客戶端,用於簡化與 Eureka Server 的交互(一般就是微服務中的客戶端和服務端)
Eureka Server:提供服務註冊和發現的能力(一般就是微服務中的註冊中心)spring

各個微服務啓動時,會經過 Eureka Client 向 Eureka Server 註冊本身,Eureka Server 會存儲該服務的信息緩存

也就是說,每一個微服務的客戶端和服務端,都會註冊到 Eureka Server,這就衍生出了微服務相互識別的話題spring-boot

同步:每一個 Eureka Server 同時也是 Eureka Client(邏輯上的)
   多個 Eureka Server 之間經過複製的方式完成服務註冊表的同步,造成 Eureka 的高可用
識別:Eureka Client 會緩存 Eureka Server 中的信息
   即便全部 Eureka Server 節點都宕掉,服務消費者仍可以使用緩存中的信息找到服務提供者(筆者已親測)
續約:微服務會週期性(默認30s)地向 Eureka Server 發送心跳以Renew(續約)信息(相似於heartbeat)
續期:Eureka Server 會按期(默認60s)執行一次失效服務檢測功能
   它會檢查超過必定時間(默認90s)沒有Renew的微服務,發現則會註銷該微服務節點
Spring Cloud 已經把 Eureka 集成在其子項目 Spring Cloud Netflix 裏面微服務

關於 Eureka 配置的最佳實踐,可參考:https://github.com/spring-cloud/spring-cloud-netflix/issues/203fetch

更多介紹,可參考:http://cloud.spring.io/spring-cloud-static/Camden.SR4/#spring-cloud-eureka-serverspa

單個Eureka Server配置部署實例

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

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

註冊中心,啓動類code

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

註冊中心配置文件server

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://localhost:${server.port}/eureka/

spring.cloud.config.discovery.enabled: true
相關文章
相關標籤/搜索