F版本SpringCloud 4—Eureka註冊中心開發和客戶端開發
- 2020 年 3 月 29 日
- 筆記
前言
通過前三篇文章,用大白話介紹了微服務和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客戶端開發
不用關閉註冊中心,接下來創建一個客戶端,讓客戶端註冊到註冊中心上
創建客戶端的步驟和註冊中心類似
- 創建項目結構
- 修改pom
- 修改啟動類
- 修改配置文件
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 可以看到
通過以上步驟就完成了最基本的註冊中心和客戶端的開發
總結
通過SpringCloud做微服務開發,不管是註冊中心,還是客戶端,還是網關等,SpringCloud幾乎所有的組件都是四板斧:
- 導入依賴
- 啟動類上加註解
- 寫配置文件
- 直接使用
恭喜你完成了本章的學習,為你鼓掌!如果本文對你有幫助,請幫忙點贊,評論,轉發,這對作者很重要,謝謝。
要掌握SpringCloud更多的用法,請持續關注本系列教程。
求關注,求點贊,求轉發
歡迎關注本人公眾號:鹿老師的Java筆記,將在長期更新Java技術圖文教程和視頻教程,Java學習經驗,Java面試經驗以及Java實戰開發經驗。