天天看點

SpringCloud元件:搭建Eureka服務注冊中心

簡介

Eureka

服務注冊中心是

netflix

開源組織提供的一個

服務高可用

的解決方案,在前端時間一直在瘋傳的

2.0開源流産

的問題,其實并不影響我們的使用,

netflix

隻不過是不再維護

2.0

分支的開源代碼,是以做出了免責聲明,不過對于我們使用者來說确實比較擔心這一點,還有不少人更換服務注冊中心,比如:

zookeeper

consul

當然對于

Eureka 2.0 流産

這件事情就當做一場鬧劇來對待吧,因為

SpringCloud.Finchley.SR1

版本依賴的

Eureka

1.9.3

,根本不需要考慮到這一點了。

我們還是來關心我們的

分布式

微服務架構系統該怎麼去設計。

建構項目

跟我們之前建構項目一樣, 使用

idea

工具直接建立一個新的

SpringBoot

項目,在選擇依賴的界面勾選

Cloud Discovert -> Eureka Server

依賴,建立完成後的

pom.xml

配置檔案内容如下:

...//省略部分
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!--SpringCloud最新穩定版本-->
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
    </properties>

    <dependencies>

        <!--Netflix Eureka依賴-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
    
    <!--SpringCloud依賴版本管理-->
    <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>
...//省略部分           

複制

我們在建立新的項目時,如果選擇了相關

SpringCloud

的依賴,則會自動在

pom.xml

配置檔案内添加

SpringCloud

最新穩定版本依賴配置。

spring-cloud-dependencies

這個依賴是

SpringCloud

内所需要依賴的

版本維護

,在

maven

項目内如果被

<dependencyManagement>

内修飾的

<dependency>

,子項目或者本項目在使用時可以不用設定版本号,預設使用

<dependencyManagement>

<dependency>

内設定的版本資訊。

正因如此,這也是為什麼我們添加了

spring-cloud-dependencies

依賴後,在使用相關

SpringCloud

插件時可以不用添加

version

标簽設定導入指定版本的依賴。

Eureka Server的配置

添加

spring-cloud-starter-netflix-eureka-server

依賴後,我們就來看看怎麼開啟

Eureka Server

服務。開啟

Eureka

的注冊中心服務端比較簡單,隻需要修改注意兩個地方。

  • 第一個地方是在入口類上添加啟用

    Eureka Server

    的注解

    @EnableEurekaServer

    ,如下所示:
@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaApplication {
    // main method
}           

複制

  • 第二個地方是application.yml/application.properties檔案内添加配置基本資訊,如下所示:
# 服務名稱
spring:
  application:
    name: hengboy-spring-cloud-eureka
# 服務端口号
server:
  port: 10000

#Eureka 相關配置
eureka:
  client:
    service-url:
      defaultZone: http://localhost:${server.port}/eureka/
    # 是否從其他的服務中心同步服務清單
    fetch-registry: false
    # 是否把自己作為服務注冊到其他服務注冊中心
    register-with-eureka: false           

複制

  • spring.application.name:服務名稱
  • server.port:服務端口号
  • eureka.client.service-url.defaultZone:Eureka預設的服務位址空間資訊配置
  • eureka.client.fetch-registry:是否從其他Eureka注冊中心同步服務清單(單節點無需配置啟用).
  • eureka.client.register-with-eureka:是否将自己作為服務注冊到其他Eureka服務注冊中心(單節點無需配置啟用).

運作測試

上面的步驟我們已經把

Eureka

服務端所需要的依賴以及配置進行了內建,接下來我們來運作測試看下效果,

Eureka

給我們提供了一個漂亮的

管理界面

,這樣我們就可以通過

管理界面

來檢視注冊的

服務清單

以及

服務狀态

等資訊。

測試步驟:
  1. 通過

    Application

    方式進行啟動

    Eureka Server

  2. 在本地浏覽器通路

    http://localhost:10000

    ,10000端口号是我們在

    application.yml

    配置檔案内設定的

    server.port

    的值。
  3. 成功通路到

    Eureka Server

    管理界面

界面如下所示:

SpringCloud元件:搭建Eureka服務注冊中心

Eureka Server 管理界面

對于界面我們可以看到一些

Eureka Server

的健康資料以及基本資訊,比如:

  • server-uptime

    :已經啟動的耗時
  • current-memory-usage

    :目前占用的記憶體總量
  • Instances currently registered with Eureka

    :注冊到該中心的服務清單
  • ipAddr

    :目前

    Eureka Server

    的IP位址,如果沒有配置

    eureka.instance.ip-address

    那麼這裡使用預設的IP位址。

    ...

總結

本章介紹了

Eureka

作為

Server

的配置,配置的步驟比較簡單,沒有那麼多繁瑣的地方,當然這隻是

Eureka

單個

服務節點

的配置方式,更多進階的使用方式請檢視後續文章。

與恒宇少年面對面

如果你喜歡

恒宇少年

的相關文章,那麼就去微信公衆号(

恒宇少年

)關注我吧!!!

當然你也可以去 SpringCloud碼雲源碼 項目底部掃描二維碼關注我,感謝閱讀!!!

學習目錄推薦

  • SpringBoot配套源碼位址:通路碼雲檢視源碼、通路GitHub檢視源碼
  • SpringCloud配套源碼位址:通路碼雲檢視源碼
  • SpringBoot相關系列文章請通路:目錄:SpringBoot學習目錄
  • QueryDSL相關系列文章請通路:QueryDSL通用查詢架構學習目錄
  • SpringDataJPA相關系列文章請通路:目錄:SpringDataJPA學習目錄

恒宇少年的開源快訊

這段時間一直在編寫開源的相關架構,緻力于公司使用的架構更新以及開源計劃,将公司使用到的

工具

以及

插件

進行更新重構并且開源。

  • 代碼生成器(Code-Builder)

    code-builder

    代碼生成器根據你提供的模闆檔案(目前支援

    freemarker

    )自動生成實體類,可以很大很有效的提高開發效率。

    Gitee位址

    :https://gitee.com/hengboy/code-builder

    Github位址

    :https://github.com/hengyuboy/code-builder
  • 持久化架構(MyBatis-Enhance)

    mybatis-enhance

    是一個對

    mybatis

    架構的增強封裝,提供一系列的内部方法來完成單表資料的操作,多表資料提供

    DSL

    方式進行操作。

    Gitee位址

    :https://gitee.com/hengboy/mybatis-enhance

    Github位址

    :https://github.com/hengyuboy/mybatis-enhance
  • 自動分頁插件

    MyBatis-Pageable

    是一款自動化分頁的插件,基于

    MyBatis

    内部的插件

    Interceptor

    攔截器編寫完成,攔截

    Executor.query

    的兩個重載方法計算出分頁的資訊以及根據配置的資料庫

    Dialect

    自動執行不同的查詢語句完成總數量的統計。

    Gitee位址

    :https://gitee.com/hengboy/mybatis-pageable