Spring Cloud - Eureka

Eureka

在Spring Cloud體系中,eureka承擔着服務註冊與發現的任務,在整個微服務架構中起着整合做用。eureka的一些概念:java

服務提供者

provider,指一個將自身的功能接口暴露出來的應用。spring

服務消費者

consumer,指須要藉助provider提供的功能完成自身業務的應用。json

服務註冊

當provider應用啓動時,會將自身的元數據,好比IP地址,端口,應用名等註冊到eureka server中。架構

服務續約

provider每擱固定的時間段(默認30秒),向eureka server彙報一次自身情況,若是eureka server在固定的時間段(默認90秒)內沒有收到某一provider的服務續約的請求,將會把這個provider實例從服務列表中剔除。app

獲取註冊信息

consumer應用會定時從eureka server獲取服務註冊列表信息以供自身進行遠程調用,consumer應用默認每30秒會更新一次註冊列表信息,默認eureka server和consumer應用使用壓縮的json進行交互。ide

服務下線

provider應用關閉時,會向eureka server發送下線請求,eureka server收到請求後會將此provider實例信息從服務註冊列表中剔除。微服務

Eureka Server

添加eureka server依賴

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

application.yml 配置

server:
  port: 8761 # 服務端口

spring:
  application:
    name: eurekaServer # 服務名
eureka:
  environment: devlopment # eureka server環境
  instance:
    lease-renewal-interval-in-seconds: 10 # 發送心跳的間隔時間
    lease-expiration-duration-in-seconds: 30 # 若這個時間段沒收到心跳則移除該instance
    prefer-ip-address: true # 實例名稱顯示IP配置

  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/ # eureka server的地址
    register-with-eureka: true # 此服務是否註冊到eureka server上
  server:
    enable-self-preservation: false # 關閉自我保護模式
    eviction-interval-timer-in-ms: 4000 # 掃描失效服務間隔(單位ms, 默認是60 * 1000)
    wait-time-in-ms-when-sync-empty: 0

debug: true # debug 模式

加入@EnableEurekaServer註解

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

只需這簡單的配置,就已經搭建了一臺eureka server應用。url

Eureka Client

添加eureka依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

application.yml 配置

server:
  port: 8080
debug: true
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true   #將本身的IP註冊到eureka server上,如不配置則表示註冊微服務所在操做系統的hostname到eureka server

加入@EnableDiscoveryClient註解

/**
 * TODO
 * Created by jinzili on 09/06/2017.
 */
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderUserApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderUserApplication.class, args);
    }
}

如今咱們已經搭建好了一臺Eureka Server 和一臺provider,訪問http://localhost:8761看看效果! image操作系統

perfect!debug

咱們的兩個服務已經註冊到了Eureka Server上,上圖的紅字是由於咱們在Eureka Server服務的application.yml配置了eureka.server.enable-self-preservation: false 關閉了自我保護模式,推薦在開發中咱們使用此配置,能夠及時刷新服務的最新狀態,可是切記在生產環境使用要開啓自我保護模式。

相關文章
相關標籤/搜索