搭建Eureka高可用集群 - day03

全部代码发出来了

搭建服务提供者

步骤:

1.创建项目,引入依赖

2.添加Eureka相关配置

3.添加@EnableEurekaClient注解

4.测试运行

步骤1:创建项目,引入依赖

使用Spring Initializr方式创建一个名称为eureka-provider的Spring Boot项目,这里将Group命名为com.bushuo,将Artifact命名为eureka-provider,在pom.xml文件中添加Web、Eureka Client依赖。

在pom文件中添加的Eureka Client、Web依赖如下:

java 复制代码
<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.bushuo</groupId>
    <artifactId>eureka-provider</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-provider</name>
    <description>Demo project for Spring Boot</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <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>
        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.9.10</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <scope>test</scope>
        </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>


步骤2:添加Eureka的相关配置

在全局配置文件application.yml中添加Eureka的相关配置信息。

步骤3:在项目启动类添加@EnableEurekaClient注解

在项目启动类EurekaProviderApplication上添加@EnableEurekaClient注解开启Eureka Client功能。

步骤4:测试运行

两个项目都要启动

启动eureka-provider项目,

在浏览器中访问http://localhost:7071,观察注册列表变化。

搭建服务消费者

步骤:

1.创建项目,引入依赖

2.添加Eureka相关配置

3.添加@EnableEurekaClient注解

4.测试运行

步骤1:创建项目,引入依赖

使用Spring Initializr方式创建一个名称为eureka-consumer的Spring Boot项目,这里将Group命名为com.bushuo,将Artifact命名为eureka-consumer,添加Web、Eureka Client依赖。详细内容同搭建服务提供者。

java 复制代码
<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.bushuo</groupId>
    <artifactId>eureka-consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-consumer</name>
    <description>Demo project for Spring Boot</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <!-- 依赖管理 -->
    <dependencies>
        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>

                spring-cloud-starter-netflix-eureka-client

            </artifactId>

        </dependency>
        <!-- Spring Boot Web应用启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Spring Boot 测试启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.9.10</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <scope>test</scope>
        </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>

步骤2:添加Eureka的相关配置

在全局配置文件application.yml中添加Eureka的相关配置信息。

步骤3:在项目启动类添加@EnableEurekaClient注解

同样在项目启动类EurekaConsumerApplication上添加@EnableEurekaClient注解开启Eureka Client功能。

server项目重新启动

搭建Eureka高可用集群

步骤:

1.使用SpringInitializr方式创建一个父工程

2.将创建的三个eureka项目复制到父工程中,并更新成Maven项目

3.父工程中创建子项目

步骤1:使用SpringInitializr方式创建一个父工程

使用SpringInitializr方式创建一个项目eureka-demo;

步骤2:将创建的三个eureka项目复制到父工程中,并更新成Maven项目

找到当前项目的工作空间,将创建好的3个eureka项目复制到eureka-demo中。

再打开idea页面,eureka-demo项目下就有了以上3个项目模块:

点开每个子项目模块,将它们都转换成maven项目:pom文件上右键->Add as Maven Project。

转换后pom文件前面的标识变成蓝色即可,如下:

如果idea的server的窗口没有,可以点击这个看看

将项目启动就可以在窗口观察到。

步骤:

1.更改系统hosts文件配置

2.改造Eureka Server

3.改造服务提供者

4.改造服务消费者

5.测试运行

步骤1:更改系统hosts文件配置

以 Windows系统为例,如果要构建集群,需要修改 hosts 文件,为其添加主机名的映射。

打开C:\Windows\System32\drivers\etc\hosts 文件,添加以下内容:

127.0.0.1 server1

127.0.0.1 server2
将hosts的文件复制到桌面,进行添加。添加完后,将文件替换

步骤2:改造Eureka Server

按照搭建eureka-server的方式,再搭建一个名为eureka-server-another 的Eureka Server。

eureka-server-another的application.yml配置文件内容如下:

更改eureka的application.yml配置文件内容如下:

步骤3:改造服务提供者

按照搭建eureka-provider的方式,搭建一个名为eureka-provider-another的服务提供者。

eureka-provider-another的application.yml配置文件内容如下:

更改eureka-provider的application.yml配置文件内容如下:

步骤4:改造服务消费者

修改项目eureka-consumer中的全局配置文件application.yml。服务器名称的添加

步骤5:测试运行

依次启动两个Eureka Server、两个服务提供者、一个服务消费者。启动成功后,访问server1:7071的页面效果如下:

访问server1:7009的页面效果如下:

俩个服务器是相同的注册实例

说明Eureka集群的数据同步工作正常:这意味着一个Eureka Server上的注册信息能够被复制到另一个Eureka Server上,确保了数据的一致性。这是Eureka集群高可用性的关键特性之一。

客户端服务能够发现并注册到任一Eureka Server:这表明客户端服务能够通过Eureka客户端库自动发现并注册到集群中的任何活动节点,即使其中一个节点不可用,也能保证服务发现的连续性。

相关推荐
我不会起名字3223 小时前
Pod 一直 Pending:调度器 5 类失败原因与 kubectl describe 的正确读法
云原生·kubernetes·调度·排查
risc1234566 小时前
万变不离其宗
人工智能·低代码·云原生
江湖有缘8 小时前
Docker实战 | 使用Docker部署Reubah文件转换器和图像处理器
docker·容器·eureka
T.O.P_KING9 小时前
Falco vs. Tetragon:云原生运行时安全选型指南
安全·云原生
七夜zippoe9 小时前
把 OpenClaw Agent 搬进 K8s:容器化部署全记录
ai·云原生·容器·kubernetes·openclaw
March.s20 小时前
Kubernetes 全景导览:从部署演进到云原生底座
云原生·kubernetes·dubbo
JavaPub-rodert20 小时前
Docker 日志为什么能把磁盘写爆?讲透 json-file、local、journald、日志轮转与 docker logs
docker·eureka·json
熊出没21 小时前
云原生架构落地实践:Kubernetes 生产级配置与 Service Mesh 流量治理
云原生·架构·kubernetes·istio
CCblandy1 天前
一致性哈希到底省了多少搬迁?本机实测 3 轮:取模 6→7 搬 85.8%,V=128 只搬 14.3%,虚拟节点太少会被倾斜骗
后端·python·云原生·性能优化·架构
code_slave(码畜)1 天前
微服务架构落地:OpenFeign 服务远程调用 + 线程池隔离架构实战 —— 超时控制、重试机制、线程池隔离,防雪崩
spring boot·spring cloud·微服务·云原生·架构·openfeign