F版本SpringCloud 4—Eureka註冊中心開發和客戶端開發

  • 2020 年 3 月 29 日
  • 筆記

源碼地址:https://gitee.com/bingqilinpeishenme/Java-Tutorials

前言

通過前三篇文章,用大白話介紹了微服務和SpringCloud以及服務治理相關的概念,從這篇開始SpringCloud代碼的開發。

SpringCloud 項目環境搭建

SpringCloud所有的demo都會採用 多模塊開發 的方式,通過父項目約束整個項目所有Module的版本,如果你不知道什麼是 多模塊開發,請閱讀我的文章:SpringBoot 多模塊開發 https://mp.weixin.qq.com/s/CDWnG0wr6hk6TvDYIELIaQ

創建父項目「約束版本」

父項目最大的作用就是約束版本,所有的步驟請嚴格按照教程進行,會有全面的截圖

1.在IDEA中創建一個maven項目(project)

2.修改pom文件

SpringCloud版本選擇:Finchley.SR2,SpringBoot版本選擇:2.0.3.RELEASE

pom文件如下:

<?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>          <!--Finchley 版本的SpringCloud 依賴2.0.X的SpringBoot -->      <parent>          <groupId>org.springframework.boot</groupId>          <artifactId>spring-boot-starter-parent</artifactId>          <version>2.0.3.RELEASE</version>          <relativePath/> <!-- lookup parent from repository -->      </parent>          <groupId>com.lby</groupId>      <artifactId>cloud-demo-20f</artifactId>      <version>1.0-SNAPSHOT</version>      <!--    父級項目 使用pom-->      <packaging>pom</packaging>        <properties>          <java.version>1.8</java.version>          <!--        定義SpringCloud的版本號-->          <spring-cloud.version>Finchley.SR2</spring-cloud.version>      </properties>        <!--    約束整個項目的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>        <!--    插件配置-->      <build>          <plugins>              <plugin>                  <groupId>org.springframework.boot</groupId>                  <artifactId>spring-boot-maven-plugin</artifactId>              </plugin>          </plugins>      </build>    </project>  

Eureka註冊中心開發「單機版」

1.基於Project創建一個新的Module

至於骨架,不選擇任何骨架,maven還是Spring Initializr主要看個人習慣,我選擇maven。

2.修改eureka-server-8801項目的pom文件

觀察pom文件可以發現,eureka-server-8801項目已經自動繼承了父項目

註冊中心的完整pom配置:

<?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">  <!--    通過maven方式創建的項目,可以看到已經自動的繼承了父項目,所以我們      只需要配置依賴就可以了  -->      <parent>          <artifactId>cloud-demo-20f</artifactId>          <groupId>com.lby</groupId>          <version>1.0-SNAPSHOT</version>      </parent>      <modelVersion>4.0.0</modelVersion>        <artifactId>eureka-server-8801</artifactId>        <dependencies>  <!--        導入註冊中心的依賴-->          <dependency>              <groupId>org.springframework.cloud</groupId>              <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>          </dependency>      </dependencies>    </project>  

3.創建SpringBoot的啟動類,添加註解

代碼如下:

package com.lby;    import org.springframework.boot.SpringApplication;  import org.springframework.boot.autoconfigure.SpringBootApplication;  import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;    /**   * @author luxiaoyang   * @create 2020-03-29-16:16   * @SpringBootApplication 聲明當前類為SpringBoot的啟動類   * @EnableEurekaServer 聲明當前項目為註冊中心   */  @SpringBootApplication  @EnableEurekaServer  public class EurekaServer8801 {      public static void main(String[] args) {          SpringApplication.run(EurekaServer8801.class,args);      }  }    

4.創建配置文件,寫入註冊中心的配置

server:    port: 8801    eureka:    client:      #    在默認設置下,該服務註冊中心也會將自己作為客戶端來嘗試註冊它自己,所以我們需要禁用它的客戶端註冊行為      #     因為當前服務就是註冊中心 不需要向任何人註冊      #    eureka.client. register-with-eureka:由於該應用為註冊中心,所以設置為false,代表不向註冊中心註冊自己      registerWithEureka: false      #    eureka. client . fetch-registry:由於註冊中心的職責就是維護服務實例,它並不需要去檢索服務,所以也設置為false。      #      不主動發現別人      fetchRegistry: false      #    聲明註冊中心的地址      serviceUrl:        defaultZone: http://localhost:8801/eureka/    

通過以上四步 就完成註冊中心的搭建

5.啟動項目,訪問http://localhost:8801可以訪問註冊中心的管理頁面

No application available 目前沒有客戶端註冊到註冊中心

Eureka客戶端開發

不用關閉註冊中心,接下來創建一個客戶端,讓客戶端註冊到註冊中心上

創建客戶端的步驟和註冊中心類似

  1. 創建項目結構
  2. 修改pom
  3. 修改啟動類
  4. 修改配置文件

1.創建客戶端項目 eureka-client-8803

2.修改pom文件,導入依賴

<?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">      <parent>          <artifactId>cloud-demo-20f</artifactId>          <groupId>com.lby</groupId>          <version>1.0-SNAPSHOT</version>      </parent>      <modelVersion>4.0.0</modelVersion>        <artifactId>eureka-client-8803</artifactId>        <dependencies>          <!--        Eureka 客戶端的依賴-->          <dependency>              <groupId>org.springframework.cloud</groupId>              <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>          </dependency>            <!--        web的依賴-->          <dependency>              <groupId>org.springframework.boot</groupId>              <artifactId>spring-boot-starter-web</artifactId>          </dependency>            <!--        測試的依賴-->          <dependency>              <groupId>org.springframework.boot</groupId>              <artifactId>spring-boot-starter-test</artifactId>              <scope>test</scope>          </dependency>      </dependencies>  </project>  

3.創建啟動類

package com.lby;    import org.springframework.boot.SpringApplication;  import org.springframework.boot.autoconfigure.SpringBootApplication;  import org.springframework.cloud.netflix.eureka.EnableEurekaClient;    /**   * @EnableDiscoveryClient 聲明當前項目為一個 Eureka客戶端 可以被發現的客戶端   * @EnableEurekaClient 聲明當前項目為一個 Eureka客戶端   *   * 區別:   * @EnableEurekaClient 只能向 Eureka 註冊中心註冊   * @EnableDiscoveryClient 除了向 Eureka 註冊中心註冊 可以向其他的註冊中心註冊 zookeeper consul   */  @SpringBootApplication  @EnableEurekaClient  public class EurekaClient8803 {      public static void main(String[] args) {          SpringApplication.run(EurekaClient8803.class,args);      }  }    

4.創建並修改配置文件

通過上面的四步,就完成一個Eureka 客戶端的搭建

5.啟動項目 觀察註冊中心的監控頁面 看一看有沒有服務註冊到註冊中心

確保註冊中心和客戶端都啟動了

打開註冊中心的網址http://localhost:8803 可以看到

通過以上步驟就完成了最基本的註冊中心和客戶端的開發

總結

源碼地址:https://gitee.com/bingqilinpeishenme/Java-Tutorials

通過SpringCloud做微服務開發,不管是註冊中心,還是客戶端,還是網關等,SpringCloud幾乎所有的組件都是四板斧:

  1. 導入依賴
  2. 啟動類上加註解
  3. 寫配置文件
  4. 直接使用

恭喜你完成了本章的學習,為你鼓掌!如果本文對你有幫助,請幫忙點贊,評論,轉發,這對作者很重要,謝謝。

要掌握SpringCloud更多的用法,請持續關注本系列教程。

求關注,求點贊,求轉發

歡迎關注本人公眾號:鹿老師的Java筆記,將在長期更新Java技術圖文教程和視頻教程,Java學習經驗,Java面試經驗以及Java實戰開發經驗。