Spring-Cloud學習之Eureka集羣搭建

一.爲什麼需要集羣

上一篇文章講解了如何搭建單個節點的eureka,這篇講解如何搭建eureka集羣,這裏的集羣還是本地不同的端口執行三個eureka,因爲條件不要允許,沒有三臺電腦,所以大家將就一下吧,eureka集羣的目的就是防止一個點故障導致,整個服務癱瘓的問題,成爲單點故障,因爲一個點出問題,還有另一個點頂上去,代替這個點工作,所以集羣也實現了高可用、高性能

二.集羣的原理

每一個註冊點都配置有其它點的url,能夠與其他server點進行數據的同步,當服務向一個點註冊時,該店就會把該服務同步到其它註冊點,當消費者需要消費時就會向註冊中心詢問具體的服務,註冊中心就會向消費者提供具體的提供該服務的服務提供者的訪問地址,最後實現服務的調用
在這裏插入圖片描述

三.創建集羣win環境配置

這裏方便就直接把所有的服務都泡在本地的win10環境中,本來真正模擬環境是要在linux的虛擬機上跑的,大家可以自行百度,原理都一樣的,只不過跑在linux上需要打包發佈,我就直接在win上操作了。首先本地跑多個服務配置一下,域名映射,在C:\Windows\System32\drivers\etc路徑下的hosts文件中加入:
127.0.0.1 eureka3000.com
127.0.0.1 eureka3001.com
127.0.0.1 eureka3002.com
這裏需要提醒的是,修改hosts文件是有權限的,具體設置權限的方法參考win10修改配置文件

四.創建集羣

  • 首先創建的目錄如下:創建eureka3000在上一篇文章已經講過了(參考搭建Eureka單節點),創建eureka3001和eureka3001也是一樣,這裏就直接粘貼處pom文件了

在這裏插入圖片描述

  • eureka3000的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.org.ldc</groupId>
	<artifactId>eureka3000</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>eureka3000</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<!-- 繼承本項目的父工程 -->
	<parent>
		<groupId>com.org.ldc</groupId>
		<artifactId>eureka-father</artifactId>
		<version>1.0.0.RELEASE</version>
	</parent>

	<!--引入eurekaserver  依賴-->
	<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-starter-web</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Finchley.SR2</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>

  • eureka3000的applicatiion.yml文件:
server:
  port: 3000
eureka:
  server:
    enable-self-preservation: false  #關閉自我保護機制
    eviction-interval-timer-in-ms: 4000 #設置清理間隔(單位:毫秒 默認是60*1000)
  instance:
    hostname: eureka3000.com
  client:
    serviceUrl:
        defaultZone: http://eureka3001.com:3001/eureka,http://eureka3002.com:3002/eureka   #將自己當成服務註冊到其他註冊中心
spring:
  application:
    name: eureka-server-cluster  #設置服務名
  • eureka3000啓動類和原來的一樣
  • eureka3001的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.org.ldc</groupId>
	<artifactId>eureka3001</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>eureka3001</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<!-- 繼承本項目的父工程 -->
	<parent>
		<groupId>com.org.ldc</groupId>
		<artifactId>eureka-father</artifactId>
		<version>1.0.0.RELEASE</version>
	</parent>

	<!--引入eurekaserver  依賴-->
	<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-starter-web</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Finchley.SR2</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>

  • eureka3001的application文件:
server:
  port: 3001
eureka:
  server:
    enable-self-preservation: false  #關閉自我保護機制
    eviction-interval-timer-in-ms: 4000 #設置清理間隔(單位:毫秒 默認是60*1000)
  instance:
    hostname: eureka3001.com
  client:
    serviceUrl:
        defaultZone: http://eureka3000.com:3000/eureka,http://eureka3002.com:3002/eureka   #將自己當成服務註冊到其他註冊中心
spring:
  application:
    name: eureka-server-cluster  #設置服務名
  • 啓動類同上

  • eureka3002的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.org.ldc</groupId>
	<artifactId>eureka3002</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>eureka3002</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<!-- 繼承本項目的父工程 -->
	<parent>
		<groupId>com.org.ldc</groupId>
		<artifactId>eureka-father</artifactId>
		<version>1.0.0.RELEASE</version>
	</parent>

	<!--引入eurekaserver  依賴-->
	<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-starter-web</artifactId>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Finchley.SR2</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>

  • eureka3002的application文件:
server:
  port: 3002
eureka:
  server:
    enable-self-preservation: false  #關閉自我保護機制
    eviction-interval-timer-in-ms: 4000 #設置清理間隔(單位:毫秒 默認是60*1000)
  instance:
    hostname: eureka3002.com
  client:
    serviceUrl:
        defaultZone: http://eureka3001.com:3001/eureka,http://eureka3000.com:3000/eureka   #將自己當成服務註冊到其他註冊中心
spring:
  application:
    name: eureka-server-cluster  #設置服務名
  • 最後是工程的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<!--基本信息-->
	<description>SpringBoot-Eureka環境搭建多模塊構建示例</description>
	<modelVersion>4.0.0</modelVersion>
	<name>eureka-father</name>
	<packaging>pom</packaging>

	<!-- 項目說明:這裏作爲聚合工程的父工程 -->
	<groupId>com.org.ldc</groupId>
	<artifactId>eureka-father</artifactId>
	<version>1.0.0.RELEASE</version>

	<!-- 繼承說明:這裏繼承SpringBoot提供的父工程 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.2.RELEASE</version>
	</parent>

	<modules>
		<module>eureka3000</module>
		<module>eureka3001</module>
		<module>eureka3002</module>
		<module>user5000</module>
	</modules>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>com.org.ldc</groupId>
				<artifactId>eureka3000</artifactId>
				<version>0.0.1-SNAPSHOT</version>
			</dependency>
			<dependency>
				<groupId>com.org.ldc</groupId>
				<artifactId>eureka3001</artifactId>
				<version>0.0.1-SNAPSHOT</version>
			</dependency>
			<dependency>
				<groupId>com.org.ldc</groupId>
				<artifactId>eureka3002</artifactId>
				<version>0.0.1-SNAPSHOT</version>
			</dependency>
			<dependency>
				<groupId>com.org.ldc</groupId>
				<artifactId>user5000</artifactId>
				<version>0.0.1-SNAPSHOT</version>
			</dependency>
		</dependencies>
	</dependencyManagement>
</project>

在這裏說明一下,這裏的搭建教程是基於maven的聚合工程搭建的,需要有能搭建maven聚合工程的前提,這裏就默認大家會搭建,所以就一頓輸出了,如果還不懂的可以自行去百度。

最後測試就是啓動各個註冊中心,然後最後啓動服務在瀏覽器分別輸入各個註冊中心的訪問地址,出現如下圖,說明搭建成功
在這裏插入圖片描述

更多的教程請關注非科班的科班,一起努力,加油幹,路過的小夥伴幫我點個贊,謝謝大家

最後分享一波java的資源,資源包括java從入門到開發的全套視頻,以及java的26個項目,資源比較大,大小大概是290g左右,鏈接容易失效,獲取的方式是關注公衆號:非科班的科班,讓後回覆:java項目即可獲得,祝大家學習愉快

發佈了63 篇原創文章 · 獲贊 34 · 訪問量 4882
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章