[菜鳥SpringCloud入門]第一章:構建多模塊的Maven項目+建立註冊中心Eureka子模塊

前言

歡迎來到菜鳥SpringCloud入門實戰系列(SpringCloudForNoob),該系列經過層層遞進的實戰視角,來一步步學習和理解SpringCloud。html

本系列適合有必定Java以及SpringBoot基礎的同窗閱讀。java

每篇文章末尾都附有本文對應的Github源代碼,方便同窗調試。git

Github倉庫地址:程序員

https://github.com/qqxx6661/springcloud_for_noobgithub

菜鳥SpringCloud入門實戰系列

你還能夠經過如下兩種途徑查看菜鳥SpringCloud入門實戰系列:web

  • 關注個人公衆號:Rude3Knife 點擊公衆號下方:技術推文——SpringCloud
  • 菜鳥SpringCloud實戰專欄(CSDN)

實戰版本

  • SpringBoot:2.0.3.RELEASE
  • SpringCloud:Finchley.RELEASE

-----正文開始-----

構建多模塊的Maven項目 + 建立註冊中心Eureka子模塊

構建多模塊的Maven項目

因爲SpringCloud中有許多組件,每一個組件都須要單獨進行開發和維護,爲了便於統一的版本維護和管理,咱們常常會用到Maven的多模塊模式。面試

結構以下:
[菜鳥SpringCloud入門]第一章:構建多模塊的Maven項目+建立註冊中心Eureka子模塊
在這裏插入圖片描述算法

建立主工程

首先建立一個Maven項目做爲主工程,類型無所謂,這裏建議使用maven-archetype-quickstart骨架,建立過程以下:spring

File-->New-->Project
-->Maven-->Create from archetype-->maven-archetype-quickstart-Next
-->GroupId={你的GroupId}-->AritifactId={你的ArtifactId}
-->Next-->Next-->Finish-->New Whindowapache

建立子模塊

在new-module裏新建模塊:
[菜鳥SpringCloud入門]第一章:構建多模塊的Maven項目+建立註冊中心Eureka子模塊
在這裏插入圖片描述

一路下一步便可:
[菜鳥SpringCloud入門]第一章:構建多模塊的Maven項目+建立註冊中心Eureka子模塊
在這裏插入圖片描述

在這裏咱們新建子模塊名爲eureka,用來放以後要用的eureka模塊,新建好後,子模塊的目錄以下:
[菜鳥SpringCloud入門]第一章:構建多模塊的Maven項目+建立註冊中心Eureka子模塊
在這裏插入圖片描述

刪除主工程多於目錄

因爲並不須要在主工程進行任何代碼開發,因此刪除其src目錄。

能夠看到如今咱們的目錄結構:
[菜鳥SpringCloud入門]第一章:構建多模塊的Maven項目+建立註冊中心Eureka子模塊

編輯主工程pom.xml

主工程的pom.xml裏作的事:

  • 配置Springboot和SpringCloud基礎組件
  • 配置子模塊:能夠看出如今有一個子模塊eureka,之後有新的子模塊被建立後,也須要到這裏添加上。
<?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.pricemonitor</groupId>
  <artifactId>springcloud</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>springcloud</name>

  <!--子模塊-->
  <modules>
    <module>eureka</module>
  </modules>

  <!--父級:Spring Boot-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
  </parent>

  <!--參數-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>

  <!--Spring Cloud 版本序列配置-->
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Finchley.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <!--Spring Boot 執行器組件-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!--Spring Cloud 基礎-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter</artifactId>
    </dependency>
    <!--Spring Cloud 服務註冊組件-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <!--此處的依賴是SpringBoot2.0之後專用的,若是您使用的SpringBoot版本低於2.0請使用spring-cloud-starter-eureka-server-->
      <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    <!--Spring Boot Web組件-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--Spring Boot 測試組件-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

建立註冊中心Eureka子模塊

Eureka介紹

服務中心又稱註冊中心,管理各類服務功能包括服務的註冊、發現、熔斷、負載、降級等,好比dubbo admin後臺的各類功能。
Spring Cloud 封裝了 Netflix 公司開發的 Eureka 模塊來實現服務註冊和發現。Eureka 採用了 C-S 的設計架構。Eureka Server 做爲服務註冊功能的服務器,它是服務註冊中心。而系統中的其餘微服務,使用 Eureka 的客戶端鏈接到 Eureka Server,並維持心跳鏈接。這樣系統的維護人員就能夠經過 Eureka Server 來監控系統中各個微服務是否正常運行。Spring Cloud 的一些其餘模塊(好比Zuul)就能夠經過 Eureka Server 來發現系統中的其餘微服務,並執行相關的邏輯。
Eureka由兩個組件組成:Eureka服務器和Eureka客戶端。Eureka服務器用做服務註冊服務器。Eureka客戶端是一個java客戶端,用來簡化與服務器的交互、做爲輪詢負載均衡器,並提供服務的故障切換支持。Netflix在其生產環境中使用的是另外的客戶端,它提供基於流量、資源利用率以及出錯狀態的加權負載均衡。

[菜鳥SpringCloud入門]第一章:構建多模塊的Maven項目+建立註冊中心Eureka子模塊
在這裏插入圖片描述

上圖簡要描述了Eureka的基本架構,由3個角色組成:

一、Eureka Server

  • 提供服務註冊和發現
    二、Service Provider

  • 服務提供方
  • 將自身服務註冊到Eureka,從而使服務消費方可以找到
    三、Service Consumer

  • 服務消費方
  • 從Eureka獲取註冊服務列表,從而可以消費服務

編輯子模塊Eureka的pom.xml

接下來咱們在子模塊Eureka中建立一個SpringCloud的註冊中心Eureka

代碼重點:

  • 繼承了父pom.xml
  • 能夠看到這裏並無引入任何新的依賴,那如何引入eureka組件依賴呢,回到上面的主pom.xml,你會發現我在其中引入了spring-cloud-starter-netflix-eureka-server,這是由於在以後的大部分模塊中,咱們都會用到Eureka-server,因此將其放在主pom中供其餘子模塊共享使用
  • 子模塊是能夠打包jar運行的:jar
<?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>

    <artifactId>eureka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka</name>
    <packaging>jar</packaging>
    <description>Demo project for Spring Boot</description>

    <!--父工程的依賴-->
    <parent>
        <groupId>com.pricemonitor</groupId>
        <artifactId>springcloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>

    </dependencies>

</project>

請問一下爲何我本地啓動了3個,仍是No instances available,DS Replicas裏面有值

啓動服務時候,若是存在application.properties,裏面還設置了
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false,仍是會去讀取,致使服務沒能註冊.

添加啓動代碼中添加@EnableEurekaServer註解

EurekaApplication.java

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

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {

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

若是你發現@EnableEurekaServer沒法引入,請檢查你的SpringCloud版本與SpringBoot版本是否兼容:

springboot沒法引入@enableeurekaserver以及Spring Cloud與Spring Boot版本匹配關係:

https://blog.csdn.net/zhang53141/article/details/83091032

配置文件

默認生成的配置文件是application.properties,也能夠寫成application.yml格式,配置以下:

# 端口號
server:
  port: 8761
# 服務註冊相關配置
eureka:
  # 服務實例主機名
  instance:
    hostname: localhost
  # 服務提供者配置
  client:
    # 不進行註冊(當服務註冊中心是單點而非高可用時的配置方式)
    registerWithEureka: false
    # 不獲取註冊信息(當服務註冊中心是單點而非高可用時的配置方式)
    fetchRegistry: false
    # 服務註冊中心地址
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

注意:

  • registerWithEureka: false表示當前服務註冊中心不在其餘服務註冊中心進行註冊。
  • fetchRegistry: false表示當前服務註冊中心不獲取其餘服務註冊中心的註冊信息。
  • 以上兩個配置,只有在當服務註冊中心是單點配置時才如此配置,由於單點狀況下這兩個值必然爲false。

運行

[菜鳥SpringCloud入門]第一章:構建多模塊的Maven項目+建立註冊中心Eureka子模塊
在這裏插入圖片描述

能夠看到下面的頁面,其中尚未發現任何服務,這只是一個孤零零的eureka-server。

在下一個教程中,咱們將建立服務提供者並在Eureka進行註冊。

本文教程所對應工程代碼

https://github.com/qqxx6661/springcloud_for_noob/tree/master/01-eureka

-----正文結束-----

全複習手冊文章導航:經過如下兩種途徑查看

  • 關注個人公衆號:Rude3Knife 點擊公衆號下方:技術推文——SpringCloud
  • 菜鳥SpringCloud實戰專欄(CSDN)

菜鳥SpringCloud實戰專欄

參考

Spring-Cloud筆記01:IDEA中同一個項目啓動多個實例:

https://blog.csdn.net/hanchao5272/article/details/80558190

Spring-Cloud筆記02:IDEA中構建多模塊的Maven項目:

https://blog.csdn.net/hanchao5272/article/details/80558780

springcloud(二):註冊中心Eureka:

http://www.ityouknow.com/springcloud/2017/05/10/springcloud-eureka.html

關注我

我是蠻三刀把刀,後端開發。

主要關注後端開發,數據安全,爬蟲等方向。

來微信和我聊聊:yangzd1102

Github我的主頁:https://github.com/qqxx6661

原創博客主要內容

  • Java知識點複習全手冊
  • Leetcode算法題解析
  • 劍指offer算法題解析
  • Python爬蟲相關技術實戰
  • 後端開發相關技術實戰
  • SpringCloud入門實戰

同步更新公衆號及如下博客

  1. Csdn

http://blog.csdn.net/qqxx6661

擁有專欄:

  • Leetcode題解(Java/Python)
  • Python爬蟲實戰
  • Java程序員知識點複習手冊
  • SpringCloud入門實戰
    1. 知乎

https://www.zhihu.com/people/yang-zhen-dong-1/

擁有專欄:

  • Java程序員面試複習手冊
  • LeetCode算法題詳解與代碼實現
  • 後臺開發實戰
    1. 掘金

https://juejin.im/user/5b48015ce51d45191462ba55

  1. 簡書

https://www.jianshu.com/u/b5f225ca2376

我的公衆號:Rude3Knife

[菜鳥SpringCloud入門]第一章:構建多模塊的Maven項目+建立註冊中心Eureka子模塊
我的公衆號:Rude3Knife

若是文章對你有幫助,不妨收藏起來並轉發給您的朋友們~

相關文章
相關標籤/搜索