1. 程式人生 > >SpringCloud(Finchley.SR2)基礎篇:第一章、服務發現(Eureka)

SpringCloud(Finchley.SR2)基礎篇:第一章、服務發現(Eureka)

一、Eureka簡介:

Eureka是由Netflix開源的基於REST的服務發現元件,不過出於某種原因2.x以後的版本就停止開源了。Eureka包括Eureka Server(Eureka服務端)和Eucreka Client(Eureka客戶端)。
詳細的介紹將在提高篇進行說明,本篇主要是幫助大家快速實現Eureka入門案例。

二、Eureka Server搭建(服務註冊中心)

2.1搭建Maven父工程

使用idea     File->New->Project->SpringInitializr->Next->填寫Group、Artifact->Next->Next->Finish
注意:使用的SpringBoot版本為當前最穩定的最新版2.1.0.RELEASE

刪除一些用不到的檔案目錄後:
在這裡插入圖片描述

父級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>com.zou</groupId>
    <artifactId>springcloud-eureka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springcloud-eureka</name>
    <description>演示Eureka</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <!-- 子模組 -->
	<modules>
        <module>springcloud-eureka-service</module>
        <module>springcloud-eureka-client</module>
    </modules>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- jdk版本 -->
        <java.version>1.8</java.version>
        <!-- SpringCloud版本號,官方最新穩定版本 -->
        <spring-cloud.version>Finchley.SR2</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>
    <!--依賴管理,用於管理spring-cloud的依賴-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.1搭建EurekaService子工程,採用SpringBoot專案構建

在這裡插入圖片描述
新增EurekaServer依賴
在這裡插入圖片描述
EurekaService的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>com.zou</groupId>
    <artifactId>springcloud-eureka-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springcloud-eureka-service</name>
    <description>Eureka服務註冊中心</description>

    <!-- 新增父級專案依賴 -->
    <parent>
        <groupId>com.zou</groupId>
        <artifactId>springcloud-eureka</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    
    <dependencies>
        <!-- Eureka註冊中心依賴 z-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <!-- 注意名稱的改變 和F之前的版本所有區別 -->
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

</project>

啟動主類:

package com.zou.eureka;

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

@SpringBootApplication
//該註解表明應用為eureka服務,有可以聯合多個服務作為叢集,對外提供服務註冊以及發現功能
@EnableEurekaServer
public class SpringcloudEurekaServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudEurekaServiceApplication.class, args);
    }
}

application.yml配置檔案

spring:
  application:
    name: eurka-server
    
server:
  port: 8761 #啟動埠

eureka:
  instance:
    hostname: localhost
  client:
    #例項是否在eureka伺服器上註冊自己的資訊以供其他服務發現,預設為true
    registerWithEureka: false
    #此客戶端是否獲取eureka伺服器登錄檔上的註冊資訊,預設為true
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

三、Eureka Client搭建(Eureka客戶端)

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>com.zou</groupId>
    <artifactId>springcloud-eureka-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springcloud-eureka-client</name>
    <description>Eureka客戶端</description>

    <!-- 父級專案依賴-->
    <parent>
        <groupId>com.zou</groupId>
        <artifactId>springcloud-eureka</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>
        <!-- eureka client 客戶端依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

</project>

啟動檔案

package com.zou.springcloudeurekaclient;

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

@SpringBootApplication
//該註解表明應用既作為eureka例項又為eureka client 可以發現註冊的服務
@EnableEurekaClient
public class SpringcloudEurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudEurekaClientApplication.class, args);
    }
}

配置檔案application.yml:

server:
  port: 8081 #埠號
spring:
  application:
    name: eureka-client #應用名稱
eureka:
  client:
    serviceUrl:
      #註冊中心地址
      defaultZone: http://localhost:8761/eureka/

四、專案展示

4.1 目錄結構
在這裡插入圖片描述
4.2啟動流程
先啟動
springcloud-eureka-service
再啟動
springcloud-eureka-client
4.3效果展示
訪問 http://localhost:8761/eureka
在這裡插入圖片描述
出現上面的效果表示專案成功完成。

你想知道在真實專案中Eureka是怎麼配置的嗎?
你想知道EurekaServer的REST API嗎?
你想知道Eureka怎麼叢集配置嗎?
你想知道Eureka的引數調優及監控嗎?
你想知道Eureak Server線上擴容嗎?
那麼你可以來看我即將寫的 GitChat

搭建微服務輕量級腳手架

**希望您能有所收穫。**

感謝每一個讀者。
希望你們工作順利。
我也會堅持寫部落格,希望在未來能夠帶給大家更加優秀的知識分享。
我的QQ: 1351307057 
大家有什麼問題可以直接在留言區留言,也可以加我QQ發訊息給我。
我如果看到了,會第一時間進行回覆的。