Spring Cloud学习笔记——高可用的服务注册中心

一、什么是高可用的注册中心

学习了单例的服务注册中心后(具体参考https://blog.csdn.net/notMoonHeart/article/details/84949475),需要考虑,如果服务中心挂掉了,那么我们的服务怎么监测呢?所以,这里引用了高可用的服务注册中心,来解决,发生故障之后,服务注册中心是怎么处理的。

处理的思路:简单来讲,就是布置一个服务注册中心集群(多个单例的服务注册中心,但是它们之间是有联系的),然后每个服务注册中心之间互相注册,当一个服务注册中心挂掉的时候,另一个服务注册中心会接受挂掉服务中心的活。

二、搭建简单的高可用服务注册中心

1.创建2个Spring Boot的工程,命名分别为eureka-server1,eureka-server2,然后设置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>eureka-server</groupId>
    <artifactId>eureka-server</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

    <!-- 管理依赖  -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.M7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <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>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
            <version>1.4.3.RELEASE</version>
        </dependency>
    </dependencies>

    <!-- 注意: 这里必须要添加, 否者各种依赖有问题  -->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

这里两个工程的pom.xml文件是相同的

2.设置工程的配置文件

eureka-server1的application.properties文件,代码如下:

spring.application.name=eureka-server
server.port=8888
server.servlet.context-path=/eureka

eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:8889/eureka/eureka/

eureka-server2的application.properties文件,代码如下:

spring.application.name=eureka-server
server.port=8889
server.servlet.context-path=/eureka

eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:8888/eureka/eureka/

这里的默认地址互相访问,会发现,不同于单例的服务注册中心,少了两个属性。

eureka.client.register-with-eureka和eureka.client.fetch-registry,这里默认是true,一般只有单例的服务注册中心才会设置成true

3.在启动类添加@EnableEurekaServer注解,标记为服务注册中心

4.在文件中添加对peerl 和peer2的转换

linux系统路径:/etc/hosts

windows系统路径:C:\Windows\System32\drivers\etc\hosts

在文件最后添加两行信息,信息如下

127.0.0.1 peer1
127.0.0.1 peer2

具体不明白这里到底有什么用

5.分别启动项目访问,http://localhost:8888/eureka,http://loaclhost:8889/eureka可以看到,两个服务中心中心互相注册,如图:

注意:这里先启动的项目可能会抛出Cannot execute request on any known server的异常信息,不要方!这是因为第二个项目未启动,第一个找不到他的注册服务的地方。

猜你喜欢

转载自blog.csdn.net/notMoonHeart/article/details/84951816
今日推荐