之所以進(jìn)行eureka集群的搭建货裹,在于我們平時(shí)的生產(chǎn)環(huán)境中,很難保證單節(jié)點(diǎn)的eureka服務(wù)能提供百分百不間斷的服務(wù)无埃,如果eureka無(wú)響應(yīng)了门粪,整個(gè)項(xiàng)目應(yīng)用都會(huì)出現(xiàn)問(wèn)題喊积,因此要保證eureka隨時(shí)都能提供服務(wù)的情況下,最好的方式就是采用eureka的集群模式玄妈,也就是搭建eureka的高可用乾吻,在eureka的集群模式下髓梅,多個(gè)eureka server之間可以同步注冊(cè)服務(wù),因此绎签,在一個(gè)eureka宕掉的情況下枯饿,仍然可以提供服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)的能力,從而達(dá)到注冊(cè)中心的高可用诡必。
3個(gè)節(jié)點(diǎn)的集群奢方,每個(gè)節(jié)點(diǎn)向其它節(jié)點(diǎn)注冊(cè),這樣只要集群中有一個(gè)節(jié)點(diǎn)正常工作即可
正式開始
一.建立項(xiàng)目
本項(xiàng)目主要還是使用了多模塊進(jìn)行開發(fā)爸舒,包括服務(wù)注冊(cè)中心模塊蟋字,商品服務(wù)模塊和訂單模塊,本篇文章主要講解的是如何搭建eureka的高可用扭勉,所以使用三個(gè)eureka服務(wù)注冊(cè)中心鹊奖,以及product商品服務(wù)模塊進(jìn)行搭建即可。項(xiàng)目目錄如下圖所示:
二.建立服務(wù)注冊(cè)中心
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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>com.yhs</groupId>
<artifactId>eureka3</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eureka3</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.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-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>
然后配置三個(gè)eureka的application.yml文件
eureka的文件配置如下:
eureka2的文件配置如下:
eureka3的文件配置如下:
注意:在每個(gè)服務(wù)的主類上加上@EnableEurekaServer注解涂炎,不然springCloud不會(huì)將eureka識(shí)別為服務(wù)注冊(cè)中心忠聚,啟動(dòng)會(huì)報(bào)錯(cuò)
然后啟動(dòng)三臺(tái)eureka訪問(wèn)localhost:8761、8762璧尸、8763即可看到注冊(cè)生效
三.建立服務(wù)消費(fèi)者produce商品服務(wù)
pom文件咒林,由于在之后的邏輯中使用到了mysql數(shù)據(jù)庫(kù)以及l(fā)ombok插件熬拒,所以引入了這兩個(gè)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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>com.yhs</groupId>
<artifactId>product</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>product</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<!--lombok插件省去寫dto中的get和set方法-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</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>
配置application.yml文件:
在主類中使用@EnableDiscoveryClient標(biāo)識(shí)為服務(wù)消費(fèi)者爷光。
啟動(dòng)product服務(wù)即可看到已經(jīng)注冊(cè)到eureka服務(wù)注冊(cè)中心上,可以看到已經(jīng)注冊(cè)到注冊(cè)中心澎粟,訪問(wèn)8761蛀序,8762,8763端口都可看到服務(wù)已經(jīng)注冊(cè)上: