SpringCloud02 Eureka知識點、Eureka服務端和客戶端的創建、Eureka服務端集群、Eureka客戶端向集群的Eureka服務端註冊
1 Eureka知識點
按照功能劃分:
Eureka由Eureka服務端和Eureka客戶端組成
按照角色劃分:
Eureka由Eureka Server、Service Provider、Service Consumer組成
Eureka Server:提供服務註冊和發現(即:服務註冊中心)
Service Provider:服務提供方(即:為其他微服務提供數據資源的服務),將自身的服務信息註冊到 Eureka Server 中去供 Service Consumer 使用
Service Consumer:服務消費方(即:需要其他服務提供的數據資源進行邏輯處理的服務),從 Eureka Server 中獲取 Service Provider 的信息,從而獲取Service Provider提供的數據資源
技巧01:其實大部分微服務可能既是服務提供方也是服務消費方
1.1 Eureka服務端
Eureka服務器用作服務註冊服務器,相當於阿裏系微服務架構中的Zookeeper。
1.2 Eureka客戶端
Eureka客戶端是一個java客戶端,用來簡化與服務器的交互、作為輪詢負載均衡器,並提供服務的故障切換支持。
2 Eureka服務端創建【單例模式】
創建Eureka相關項目時需要引入SpringCloud的依賴管理器和Eureka服務端依賴
2.1 利用IDEA創建
版本說明:
JDK:1.8
MAVEN:3.5
IDEA:2017.2 旗艦版
2.1.1 創建一個SpingBoot項目
2.1.2 選擇相關依賴
選擇依賴時只需要選擇Eureka Server的依賴就可以,我這裏選擇其他兩個依賴只是為了開發方便而已
技巧01:SpringBoot的版本默認會是最新的,由於我們創建的是SpringCloud相關的項目,所以IDEA會自動為我們引入SprngCloud的依賴管理器;但是SpringCloud依賴管理器的版本和SpringCloud提供的組件的版本是由嚴格的要求,詳情請參見官網;版本對應關系如下:
2.1.3 根據官網的版本要求修改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>cn.xinagxu</groupId> <artifactId>eureka</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>eureka</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.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> <spring-cloud.version>Finchley.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <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>pom.xml
2.1.4 在啟動類上添加@EnableEurekaServer註解
@EnableEurekaServer是指明這個項目作為一個Eureka服務端使用
2.1.5 啟動應用
啟動應用後會報錯,錯誤信息如下:
報錯原因:Eureka服務端也會像Eureka客戶端一樣可以向一個註冊中心進行註冊,從Eureka的源碼中可以看到 Eureka Server 默認的註冊中心為:http://localhost:8761/eureka/,由於我們並沒有創建這個項目所以創建的Eureka Server項目會不斷向這個不存在的註冊中心進行註冊,所以上面這個錯誤會不斷的出現控制臺
解決辦法01:關閉Eureka Server向另外註冊中心或者只身進行註冊的功能【即:關閉Eureka Server的的Eureka Client功能】,在配置文件中添加下面的配置就可以實現這個功能【PS:官方推薦】
技巧01:雖然關閉了Eureka Server向另外註冊中心或者自身進行註冊的功能,但是控制臺還是會報錯;但是這次只會出現兩次錯誤信息了,可能我們配置的信息在 Eureka Server 已經向默認的註冊中心發起註冊請求後才生效才造成的這兩次報錯信息
技巧02:關閉了Eureka Server向另外註冊中心或者只身進行註冊的功能後啟動Eureka Server後的效果
解決辦法02:向另外註冊中心或者只身進行註冊(由於現在沒有其他註冊中心,所以本博文將其註冊到自身),在配置文件中添加下面的配置就可以實現這個功能:
技巧01:雖然配置Eureka Server向自身進行註冊的功能,但是控制臺還是會報錯;但是這次只會出現兩次錯誤信息了,可能我們配置的信息在 Eureka Server 已經向默認的註冊中心發起註冊請求後才生效才造成的這兩次報錯信息
技巧02:配置Eureka Server向自身進行註冊的功能後啟動Eureka Server後的效果
2.2 利用Maven創建
根據官方文檔進行創建即可,待更新......2018年8月25日14:15:10
3 Eureka Server集群
3.1 創建三個Eureka Server項目
按照2.1的步驟進行創建即可,當然直接復制創建好的項目也可以
3.2 修改各個項目的配置文件
SpringCloud02 Eureka知識點、Eureka服務端和客戶端的創建、Eureka服務端集群、Eureka客戶端向集群的Eureka服務端註冊