Spring Cloud Eureka 服務註冊中心怎麼配置

「Spring Cloud Eureka 入門系列」
Spring Cloud Eureka 入門 (一)服務註冊中心詳解
Spring Cloud Eureka 入門 (二)服務提供者詳解
Spring Cloud Eureka 入門 (三)服務消費者詳解java

本文提綱

  1. Eureka 服務治理

1.1 什麼是 Eureka
1.2 Eureka 集羣架構git

  1. 運行 Eureka 工程 springcloud-eureka-server
  2. 詳解 Eureka 工程 springcloud-eureka-server

1、Eureka 服務治理

1.1 什麼是 Eureka

Eureka,這裏是 Spring Cloud Eureka 的簡稱,是 Spring Cloud Netflix 組件之一。Spring Cloud Netflix 中核心的組件包括了服務治理(Eureka),服務容斷(Hystrix),路由(Zuul)和客戶端負載均衡(Ribbon)。在系列第三篇,服務消費者講解會涉及到 Ribbon 的使用。github

回到 Spring Cloud Eureka,是基於 Netflix Eureka (Netflix 是 Java 實現的開源軟件)。服務治理(Eureka)包括服務註冊、服務發現和服務檢測監控等,天然本文介紹下 Eureka 做爲服務註冊中心。spring

1.2 Eureka 架構

Eureka 做爲服務治理,必然知足下面幾點:apache

  • 服務自己不存在單點故障,
  • 支持集羣,即高可用性
  • 服務與服務之間經過服務註冊中心找到彼此實例

做爲服務端(即服務註冊中心),包括瀏覽器

  • 管理服務實例
  • 提供服務註冊或下線
  • 提供服務發現
  • 提供服務註冊表至兩類客戶端(即服務提供者和消費者)

做爲客戶端(即服務提供者和消費者),包括緩存

  • 鏈接服務註冊中心
  • 向服務註冊中心註冊或者下線服務實例
  • 向服務註冊中心或服務註冊緩存列表查詢服務

2、運行 Eureka 工程 springcloud-eureka-server

運行環境:JDK 7 或 8,Maven 3.0+
技術棧:Spring Cloud Dalston.SR一、 spring-cloud-netflix 1.3.一、Spring Boot 1.5.4springboot

  1. git clone 下載工程 springcloud-learning-example

項目地址見 GitHub - https://github.com/JeffLi1993...
git clone https://github.com/JeffLi1993...架構

  1. Maven 編譯安裝這個工程:

cd springcloud-learning-example
mvn clean installapp

  1. 運行 springcloud-eureka-server Eureka 工程

右鍵 Main 函數 Run Eureka Server 啓動類 EurekaServerApplication,啓動服務註冊中心工程。
EurekaServerApplication 類地址:/springcloud-learning-example/springcloud-eureka-sample/springcloud-eureka-server/src/main/java/org/spring/springboot/EurekaServerApplication.java

控制檯 Console 看到這類信息,表明啓動成功:

2017-06-30 10:32:47.549  INFO 2977 --- [      Thread-11] e.s.EurekaServerInitializerConfiguration : Started Eureka Server
2017-06-30 10:32:47.625  INFO 2977 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8888 (http)
2017-06-30 10:32:47.626  INFO 2977 --- [           main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8888
2017-06-30 10:32:47.632  INFO 2977 --- [           main] o.s.springboot.EurekaServerApplication   : Started EurekaServerApplication in 23.168 seconds
  1. 訪問 Eureka 註冊中心可視化界面

打開瀏覽器,訪問 http://localhost:8888/

能夠看到主體信息包括:

  • 系統狀態:環境、運行時間、更新時間等
  • 註冊信息:服務名、服務地址、服務狀態
  • 基本信息:環境、內存、副本信息
  • 實例信息:IP、端口

3、詳解 Eureka 工程 springcloud-eureka-server

1.springcloud-eureka-server 工程目錄結構

├── pom.xml
└── src
    └── main
        ├── java
        │   └── org
        │       └── spring
        │           └── springcloud
        │               ├── EurekaServerApplication.java
        └── resources
            └── application.yml

EurekaServerApplication.java Eureka Server 啓動類
application.yml 配置文件

  1. pom.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>springcloud</groupId>
    <artifactId>springcloud-eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloud-eureka-server :: Spring Cloud Eureka 服務註冊中心</name>

    <!-- Spring Boot 啓動父依賴 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
    </parent>

    <dependencies>
        <!-- Spring Cloud Netflix Eureka Server 依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>

        <!-- Spring Boot Test 依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!-- Spring Cloud Netflix 依賴 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-netflix</artifactId>
                <version>1.3.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

使用的依賴是

  • spring-cloud-netflix 1.3.1 是 Spring Cloud Dalston.SR1 版本。
  • spring-cloud-starter-eureka-server Eureka Server 模塊依賴

上面提到的客戶端負載均衡 Ribbon ,能夠依賴樹中看出 spring-cloud-starter-eureka-server 依賴了 Ribbon 相關的庫。由於通常 eureka 自己做爲服務自注冊實現高可用,也能夠做爲客戶端調用其餘服務。

  1. application.yml 配置
server:
  port: 8888 # 服務端口

eureka:
  instance:
    hostname: localhost # 設置主機名
  client:
    registerWithEureka: false # 是否向 Eureka 註冊服務。該應用爲服務註冊中心,不須要自注冊,設置爲 false
    fetchRegistry: false      # 是否檢索服務。該應用爲服務註冊中心,職責爲註冊和發現服務,無需檢索服務,設置爲 false
  server:
    waitTimeInMsWhenSyncEmpty: 0 # 設置同步爲空時的等待時間。默認 5 * MINUTES
  • server.port 設置工程服務端口
  • eureka.instance.hostname Eureka 實例主機名
  • eureka.client.registerWithEureka 是否向 Eureka 註冊服務。服務註冊中心服務,沒有做爲集羣,因此不須要自注冊,設置爲 false
  • eureka.client.fetchRegistry 是否檢索服務。該應用爲服務註冊中心,職責爲註冊和發現服務,無需檢索服務,設置爲 false
  • eureka.server.waitTimeInMsWhenSyncEmpty 設置同步爲空時的等待時間。默認 5 * MINUTES

4.註冊中心應用啓動類

/**
 * Spring Boot Eureka Server 應用啓動類
 *
 * Created by bysocket on 21/06/17.
 */
@EnableEurekaServer     // Eureka Server 標識
@SpringBootApplication  // Spring Boot 應用標識
public class EurekaServerApplication {

    public static void main(String[] args) {
        // 程序啓動入口
        // 啓動嵌入式的 Tomcat 並初始化 Spring 環境及其各 Spring 組件
        SpringApplication.run(EurekaServerApplication.class,args);
    }
}

@EnableEurekaServer 標誌該應用做爲 Eureka Server ,並會自動化讀取相關配置。

4、小結

此小章節介紹瞭如何 Eureka 做爲服務註冊中心 Server,下一小結講下 服務提供者詳解 具體是如何向服務註冊中心註冊本身的。系列目錄以下:

本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈
相關文章
相關標籤/搜索