SpringCloud注冊(cè)中心高可用搭建

之所以進(jìn)行eureka集群的搭建,在于我們平時(shí)的生產(chǎn)環(huán)境中,很難保證單節(jié)點(diǎn)的eureka服務(wù)能提供百分百不間斷的服務(wù),如果eureka無響應(yīng)了,整個(gè)項(xiàng)目應(yīng)用都會(huì)出現(xià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訪問localhost:8761、8762、8763即可看到注冊(cè)生效


三.建立服務(wù)消費(fèi)者produce商品服務(wù)

pom文件,由于在之后的邏輯中使用到了mysql數(shù)據(jù)庫以及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è)中心,訪問8761,8762,8763端口都可看到服務(wù)已經(jīng)注冊(cè)上:

代碼git地址:https://github.com/yhsStarry/StudySpringCloud

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容