1. 程式人生 > >SpringCloud五大神獸之Eureka

SpringCloud五大神獸之Eureka

基本概念和方案

    Eureka是基於REST(Representational State Transfer,代表性狀態傳輸)的服務,主要用於AWS雲中定位服務,以實現中間層伺服器的負載平衡和故障轉移。我們稱這個服務為Eureka伺服器。Eureka還帶有一個基於Java的客戶端元件,即Eureka客戶端,它使與服務的互動更容易。

Eureka-Server

1.pom引入依賴:

 <dependencies>
        <!--eureka-server服務端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
        <!-- 修改後立即生效,熱部署 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.配置檔案application.yml編寫

server:
  port: 7001

eureka:
  instance:
    hostname: eureka7001.com #eureka服務端的例項名稱
  client:
    register-with-eureka: false     #false表示不向註冊中心註冊自己。
    fetch-registry: false     #false表示自己端就是註冊中心,我的職責就是維護服務例項,並不需要去檢索服務
    service-url:
#       defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #設定與Eureka Server互動的地址查詢服務和註冊服務都需要依賴這個地址(單機)。
        defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

如果為單機的話則defaultZone那邊只需要一條即可,這邊為叢集環境。叢集環境下的其餘EurekaServer唯一不同在於配置檔案中的hostname和defaultZone,hostname為各自唯一,defaultZone為除了自身外的另外EurekaServer地址。

7002的application.yml:

server:
  port: 7002

eureka:
  instance:
    hostname: eureka7002.com #eureka服務端的例項名稱
  client:
    register-with-eureka: false     #false表示不向註冊中心註冊自己。
    fetch-registry: false     #false表示自己端就是註冊中心,我的職責就是維護服務例項,並不需要去檢索服務
    service-url:
#       defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #設定與Eureka Server互動的地址查詢服務和註冊服務都需要依賴這個地址(單機)。
        defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/

7003的application.yml:

server:
  port: 7003

eureka:
  instance:
    hostname: eureka7003.com #eureka服務端的例項名稱
  client:
    register-with-eureka: false     #false表示不向註冊中心註冊自己。
    fetch-registry: false     #false表示自己端就是註冊中心,我的職責就是維護服務例項,並不需要去檢索服務
    service-url:
#       defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #設定與Eureka Server互動的地址查詢服務和註冊服務都需要依賴這個地址(單機)。
       defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7001.com:7001/eureka/

注意:3個application.yml的hostname都可用域名來表示,此例子在本機127.0.0.1測試,需要在host檔案做下域名對映:

127.0.0.1  eureka7001.com
127.0.0.1  eureka7002.com
127.0.0.1  eureka7003.com

3.啟動類編寫

package com.zhanghf;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

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

4.檢視效果: