精华内容
下载资源
问答
  • eureka集群

    2020-01-11 11:27:59
    文章目录Eureka集群搭建Eureka自我保护机制 Eureka集群搭建 Eureka自我保护机制

    Eureka集群搭建

    高可用集群配置
    当注册中心扛不住高并发的时候,这时候要用集群来抗
    普通操作
    新建两个module并且更改其中的配置
    microservice-eureka-server-2002

    <?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>com.ljy</groupId>
            <artifactId>microservice</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <artifactId>microservice-eureka-server-2002</artifactId>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--  修改后立即生效,热部署  -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>springloaded</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    

    microservice-eureka-server-2003

    <?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>com.ljy</groupId>
            <artifactId>microservice</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <artifactId>microservice-eureka-server-2003</artifactId>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--  修改后立即生效,热部署  -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>springloaded</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    

    在它们的启动类都加上注解(@EnableEurekaServer)
    前面单机的时候 eureka注册中心实例名称 是localhost,现在是集群,不能三个实例都是localhost,这里复杂的办法是搞三个虚拟机,麻烦,这里有简单办法,直接配置本机hosts,来实现本机域名映射;
    找到 C:\Windows\System32\drivers\etc 打开hosts,加配置
    注意:记事本或者notepad都要设置成以管理员的身份运行,不然不能保存,下面的代码也就会报错
    在这里插入图片描述

    127.0.0.1  eureka2001.ljy.com
    127.0.0.1  eureka2002.ljy.com
    127.0.0.1  eureka2003.ljy.com
    
    

    修改三个项目的application.yml文件,主要是修改 hostname和defaultZone
    修改2001的yml文件:

    server:
      port: 2001
      context-path: /
    
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2001.ljy.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        service-url:
          defaultZone: http://eureka2002.ljy.com:2002/eureka/,http://eureka2003.ljy.com:2003/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    
    

    2002的yml

    server:
      port: 2002
      context-path: /
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2002.ljy.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        service-url:
          defaultZone: http://eureka2001.ljy.com:2001/eureka/,http://eureka2003.ljy.com:2003/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    
    
    

    2003的yml

    server:
      port: 2003
      context-path: /
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2003.ljy.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        service-url:
          defaultZone: http://eureka2001.ljy.com:2001/eureka/,http://eureka2002.ljy.com:2002/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    
    
    
    

    测试集群搭建效果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    特殊操作
    创建一个三合一的子工程(microservice-eureka-server)
    更改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>
        <parent>
            <groupId>com.ljy</groupId>
            <artifactId>microservice</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <artifactId>microservice-eureka-server</artifactId>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!-- 修改后立即生效,热部署 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>springloaded</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    

    在启动类中添加注解

    @EnableEurekaServer
    

    yml配置

    ---
    server:
      port: 2001
      context-path: /
    eureka:
      instance:
        hostname: eureka2001.ljy.com
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://eureka2002.ljy.com:2002/eureka/,http://eureka2003.ljy.com:2003/eureka/
    spring:
      profiles: eureka2001
    ---
    server:
      port: 2002
      context-path: /
    eureka:
      instance:
        hostname: eureka2002.ljy.com
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://eureka2001.ljy.com:2001/eureka/,http://eureka2003.ljy.com:2003/eureka/
    spring:
      profiles: eureka2002
    ---
    server:
      port: 2003
      context-path: /
    eureka:
      instance:
        hostname: eureka2003.ljy.com
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://eureka2001.ljy.com:2001/eureka/,http://eureka2002.ljy.com:2002/eureka/
    spring:
      profiles: eureka2003
    
    

    spring:
    profiles: eureka2001/2002/2003
    指的是给配置起的名字,方便读取
    在这里插入图片描述
    在这里插入图片描述
    测试
    在这里插入图片描述
    结果哥上面是一样的

    Eureka自我保护机制

    当我们长时间为访问服务以及变更服务实例名称的时候,就会出现这个红色警告;
    默认情况,如果服务注册中心再一段时间内没有接收到某个微服务实例的心跳,服务注册中心会注销该实例(默认90秒)。
    由于正式环境,经常会有网络故障,网络延迟问题发生,服务和注册中心无法正常通信,此时服务是正常的,不应该注销该服务,Eureka这时候,就通过“自我保护模式”来解决问题,当短时间和服务失去通信时,保留服务信息,当恢复网络和通信时候,退出“自我保护模式”;
    通过“自我保护模式”,使Eureka集群更加的健壮和稳定。

    启动生产者
    在这里插入图片描述
    刷新页面后再关闭生产者还是会有数据并且发送了监测心跳
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Eureka集群

    2020-12-08 10:31:33
    这里写目录标题主要内容Eureka集群搭建Eureka自我保护机制 主要内容 1、Eureka集群搭建 2、Eureka自我保护机制 Eureka集群搭建 新建两个module microservice-eureka-server-2002 microservice-eureka-server-2003 ...

    主要内容

    1、Eureka集群搭建
    2、Eureka自我保护机制

    Eureka集群搭建

    新建两个module microservice-eureka-server-2002 microservice-eureka-server-2003
    pom.xml 把依赖加下

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 修改后立即生效,热部署 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>
    

    EurekaServerApplication_2003复制修改

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @EnableEurekaServer
    @SpringBootApplication
    public class MicroserviceEurekaServer2003Application {
    
        public static void main(String[] args) {
            SpringApplication.run(MicroserviceEurekaServer2003Application.class, args);
        }
    
    }
    

    找到 C:\Windows\System32\drivers\etc 打开hosts,加配置

    127.0.0.1  eureka2001.huangjie.com
    127.0.0.1  eureka2002.huangjie.com
    127.0.0.1  eureka2003.huangjie.com
    

    修改三个项目的application.yml文件,主要是修改 hostname和defaultZone
    2001修改:

    server:
      port: 2001
      context-path: /
    
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2001.javaxl.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        fetch-registry: false     #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
        service-url:
          defaultZone: http://eureka2002.javaxl.com:2002/eureka/,http://eureka2003.javaxl.com:2003/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    

    2002修改

    server:
      port: 2002
      context-path: /
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2002.javaxl.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        fetch-registry: false     #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
        service-url:
          defaultZone: http://eureka2001.javaxl.com:2001/eureka/,http://eureka2003.javaxl.com:2003/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    

    2003修改:

    server:
      port: 2003
      context-path: /
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2003.javaxl.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        fetch-registry: false     #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
        service-url:
          defaultZone: http://eureka2001.javaxl.com:2001/eureka/,http://eureka2002.javaxl.com:2002/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    

    修改服务提供者项目的application.yml,主要修改eureka.client.service-url.defaultZone

    eureka:
      instance:
        #eureka客户端主机实例名称
        hostname: localhost
        #客户端服务名
        appname: microservice-student
        #客户端实例名称
        instance-id: microservice-student:1001
        #显示IP
        prefer-ip-address: true
      client:
        service-url:
          # 单机 defaultZone: http://localhost:2001/eureka   #把服务注册到eureka注册中心
          defaultZone: http://eureka2001.javaxl.com:2001/eureka/,http://eureka2002.javaxl.com:2002/eureka/,http://eureka2003.javaxl.com:2003/eureka/
    

    Eureka自我保护机制

    在这里插入图片描述
    开发环境,我们经常会遇到这个红色的警告;
    当我们长时间为访问服务以及变更服务实例名称的时候,就会出现这个红色警告;

    默认情况,如果服务注册中心8再一段时间内没有接收到某个微服务实例的心跳,服务注册中心会注销该实例(默认90秒)。

    由于正式环境,经常会有网络故障,网络延迟问题发生,服务和注册中心无法正常通信,此时服务是正常的,不应该注销该服务,Eureka这时候,就通过“自我保护模式”来解决问题,当短时间和服务失去通信时,保留服务信息,当恢复网络和通信时候,退出“自我保护模式”;
    通过“自我保护模式”,使Eureka集群更加的健壮和稳定;

    展开全文
  • eureka 集群

    2019-11-20 20:44:03
    EurekaEureka集群搭建普通版集群升级版集群Eureka自我保护机制 Eureka集群搭建 为什么要使用集群呢??? 当注册中心扛不住高并发的时候,这时候 要用集群来扛; 普通版集群 我们再之前的基础上新建两个module ...

    Eureka集群搭建

    先讲一下集群有什么用?

    比如说:一共有a,b,c三个服务注册中心,
    三个分别对应这a模块,b模块,c模块
    如果不是集群的话,此时aEureka挂了,那么对应的a模块就访问不了,即使a模块没有问题。
    如果是集群的话,此时aEureka挂了后,bEureka和cEureka都可以继承好他的任务(分服务给a模块)
    所以说一个多层次的集群可以很好的阻止服务功能失效。

    简单来说:当注册中心扛不住高并发的时候,这时候要用集群来扛;
    俗话说的好:团结力量大

    这里有两种集群搭建,我们来一个个讲解
    在这里插入图片描述

    我们先来说说第一种:

    我们要再之前的基础上新建两个module

    1. microservice-eureka-server-2002
    2. microservice-eureka-server-2003

    2002和2003的pom.xml与2001的差不多,主要是注意修改下面这个

    <artifactId>microservice-eureka-server-2001</artifactId>
    
    <?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>com.lst</groupId>
            <artifactId>springcloud</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <artifactId>microservice-eureka-server-2001</artifactId>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--  修改后立即生效,热部署  -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>springloaded</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    </project>
    
    

    在2002启动类MicroserviceEurekaServer2002Application 与
    2003启动类MicroserviceEurekaServer2003Application 里加入以下注解

    @EnableEurekaServer
    

    前面只有一个的时候 eureka注册中心实例名称 是localhost,现在是集群,不能三个实例都是localhost,这里复杂的办法是搞三个虚拟机,麻烦,这里有简单办法,我们要直接配置本机hosts,就是欺骗IP来实现本机域名映射;
    找到 C:\Windows\System32\drivers\etc 打开hosts,加配置

    127.0.0.1  eureka2001.lst.com
    127.0.0.1  eureka2002.lst.com
    127.0.0.1  eureka2003.lst.com
    

    在这里插入图片描述

    接下来修改三个项目的application.yml文件,主要是修改 hostname和defaultZone,
    2001:

    server:
      port: 2001
      context-path: /
    
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2001.lst.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        fetch-registry: false     #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
        service-url:
          defaultZone: http://eureka2002.lst.com:2002/eureka/,http://eureka2003.lst.com:2003/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    
    
    

    2002:

    server:
      port: 2002
      context-path: /
    
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2002.lst.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        fetch-registry: false     #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
        service-url:
          defaultZone: http://eureka2001.lst.com:2001/eureka/,http://eureka2003.lst.com:2003/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    
    
    

    2003:

    server:
      port: 2003
      context-path: /
    
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2003.lst.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        fetch-registry: false     #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
        service-url:
          defaultZone: http://eureka2001.lst.com:2001/eureka/,http://eureka2002.lst.com:2002/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    
    
    

    效果展示:
    浏览器地址栏输入:

    http://eureka2001.lst.com:2001/
    http://eureka2002.lst.com:2002/
    http://eureka2003.lst.com:2003/

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    第二种:

    上面eureka服务搭建,除了yml文件不一样,其他文件都一样,那么我们有什么办法能够将多个eureka服务集合到一个工程中去呢?
    创建一个microservice-eureka-server(三合一)子工程
    pom依赖与启动类Application是一样的操作
    配置yml文件

    ---
    server:
      port: 2001
      context-path: /
    eureka:
      instance:
        hostname: eureka2001.lst.com
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://eureka2002.lst.com:2002/eureka/,http://eureka2003.lst.com:2003/eureka/
    spring:
      profiles: eureka2001
    ---
    server:
      port: 2002
      context-path: /
    eureka:
      instance:
        hostname: eureka2002.lst.com
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://eureka2001.lst.com:2001/eureka/,http://eureka2003.lst.com:2003/eureka/
    spring:
      profiles: eureka2002
    ---
    server:
      port: 2003
      context-path: /
    eureka:
      instance:
        hostname: eureka2003.lst.com
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://eureka2001.lst.com:2001/eureka/,http://eureka2002.lst.com:2002/eureka/
    spring:
      profiles: eureka2003
    

    然后配置启动
    在这里插入图片描述
    效果和第一种的效果一样,这里就不展示了

    Eureka自我保护机制

    在这里插入图片描述
    开发环境,我们经常会遇到这个红色的警告;
    当我们长时间为访问服务以及变更服务实例名称的时候,就会出现这个红色警告;

    默认情况,如果服务注册中心再一段时间内没有接收到某个微服务实例的心跳,服务注册中心会注销该实例(默认90秒)。

    由于正式环境,经常会有网络故障,网络延迟问题发生,服务和注册中心无法正常通信,此时服务是正常的,不应该注销该服务,Eureka这时候,就通过“自我保护模式”来解决问题,当短时间和服务失去通信时,保留服务信息,当恢复网络和通信时候,退出“自我保护模式”;
    通过“自我保护模式”,使Eureka集群更加的健壮和稳定;

    over。。。

    展开全文
  • Eureka 集群

    2020-01-08 20:31:57
    文章目录Eureka 集群搭建普通操作骚操作Eureka自我保护机制 Eureka 集群搭建 高可用集群配置 当注册中心扛不住高并发的时候 这时候 要用集群来扛 普通操作 ① 新建两个module microservice-eureka-server-2002 ...

    Eureka 集群搭建

    高可用集群配置
    当注册中心扛不住高并发的时候 这时候 要用集群来扛

    普通操作

    ① 新建两个module
    microservice-eureka-server-2002 microservice-eureka-server-2003
    microservice-eureka-server-2002中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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.xwt</groupId>
            <artifactId>t237microservice</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <artifactId>microservice-eureka-server-2002</artifactId>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    

    microservice-eureka-server-2003中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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.xwt</groupId>
            <artifactId>t237microservice</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <artifactId>microservice-eureka-server-2003</artifactId>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    

    ② 将2002 2003的主启动类EurekaServerApplication_2002 EurekaServerApplication_2003加入注解 @EnableEurekaServer

    package com.xwt.microserviceeurekaserver2003;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @EnableEurekaServer
    @SpringBootApplication
    public class MicroserviceEurekaServer2003Application {
    
        public static void main(String[] args) {
            SpringApplication.run(MicroserviceEurekaServer2003Application.class, args);
        }
    
    }
    

    在这里插入图片描述
    ③ 前面单机的时候 eureka注册中心实例名称 是localhost,现在是集群,不能三个实例都是localhost,这里复杂的办法是搞三个虚拟机,麻烦,这里有简单办法,直接配置本机hosts,来实现本机域名映射

    找到 C:\Windows\System32\drivers\etc 打开hosts 加配置

    127.0.0.1  eureka2001.xwt.com
    127.0.0.1  eureka2002.xwt.com
    127.0.0.1  eureka2003.xwt.com
    

    在这里插入图片描述
    ④ 修改三个项目的application.yml文件

    2001修改:

    server:
      port: 2001
      context-path: /
    
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2001.xwt.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        service-url:
          defaultZone: http://eureka2002.xwt.com:2002/eureka/,http://eureka2003.xwt.com:2003/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    
    

    2002修改:

    server:
      port: 2002
      context-path: /
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2002.xwt.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        service-url:
          defaultZone: http://eureka2001.xwt.com:2001/eureka/,http://eureka2003.xwt.com:2003/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    
    
    

    2003修改:

    server:
      port: 2003
      context-path: /
    eureka:
      instance:
        # 单机 hostname: localhost #eureka注册中心实例名称
        hostname: eureka2003.xwt.com # 集群
      client:
        register-with-eureka: false     #false 由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。
        fetch-registry: false     #false 由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false
        service-url:
          defaultZone: http://eureka2001.xwt.com:2001/eureka/,http://eureka2002.xwt.com:2002/eureka/ # 集群
          #单机defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #设置与Eureka注册中心交互的地址,查询服务和注册服务用到
    
    

    测试:启动三个注册中心
    2001
    在这里插入图片描述
    2002
    在这里插入图片描述
    2003

    在这里插入图片描述

    骚操作

    上面eureka服务搭建 除了yml文件不一样 其他文件都一样 那么我们有什么办法能够将多个eureka服务集合到一个工程中去呢

    创建一个microservice-eureka-server(三合一)子工程
    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>
        <parent>
            <groupId>com.xwt</groupId>
            <artifactId>t237microservice</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <artifactId>microservice-eureka-server</artifactId>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    

    application.yml

    ---
    server:
      port: 2001
      servlet:
        context-path: /
    eureka:
      instance:
        hostname: eureka2001.xwt.com
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://eureka2002.xwt.com:2002/eureka/,http://eureka2003.xwt.com:2003/eureka/
    spring:
      profiles: eureka2001
    ---
    server:
      port: 2002
      servlet:
        context-path: /
    eureka:
      instance:
        hostname: eureka2002.xwt.com
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://eureka2001.xwt.com:2001/eureka/,http://eureka2003.xwt.com:2003/eureka/
    spring:
      profiles: eureka2002
    ---
    server:
      port: 2003
      servlet:
        context-path: /
    eureka:
      instance:
        hostname: eureka2003.xwt.com
      client:
        register-with-eureka: false
        service-url:
          defaultZone: http://eureka2001.xwt.com:2001/eureka/,http://eureka2002.xwt.com:2002/eureka/
    spring:
      profiles: eureka2003
    
    

    启动类MicroserviceEurekaServerApplication.java

    package com.xwt.microserviceeurekaserver;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @EnableEurekaServer
    @SpringBootApplication
    public class MicroserviceEurekaServerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MicroserviceEurekaServerApplication.class, args);
        }
    
    }
    
    

    在这里插入图片描述

    跑起来的效果跟普通操作的效果是一致的

    Eureka自我保护机制

    开发环境,我们经常会遇到这个红色的警告;
    当我们长时间为访问服务以及变更服务实例名称的时候,就会出现这个红色警告;
    默认情况,如果服务注册中心再一段时间内没有接收到某个微服务实例的心跳,服务注册中心会注销该实例(默认90秒)

    由于正式环境,经常会有网络故障,网络延迟问题发生,服务和注册中心无法正常通信,此时服务是正常的,不应该注销该服务,Eureka这时候,就通过“自我保护模式”来解决问题,当短时间和服务失去通信时,保留服务信息,当恢复网络和通信时候,退出“自我保护模式”;
    通过“自我保护模式”,使Eureka集群更加的健壮和稳定

    在这里插入图片描述

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,153
精华内容 2,461
关键字:

eureka集群