zoukankan      html  css  js  c++  java
  • 005 Eureka的HA机制和保护模式

    一 .概述

    在springcloud之中,eureka作为服务注册中心是一个最为重要的核心组件,几乎整个架构都需要依赖其组件.为了保证其高可用,eureka提供了一系列的举措来完成这件事情.

    二 .保护模式

    在eureka之中,存在一个保护模式.该保护模式描述的情况如下:

    [1]默认情况下,客户端需要和eureka的服务器建立心跳机制,为60秒一次心跳.

    [2]当心跳丢失3次以上的时候,eureka服务器端就会剔除可能宕机的微服务.

    [3]eureka可能会遭遇大规模服务丢失的情况,可能是自己本身出现了问题,但是eureka这个时候就进入了保护模式.

    该保护模式直接不剔除任何的服务,因为无法确定是否应该剔除,因此选择保留.

    触发的条件是15分钟之内,剔除的服务的数量占到了15%以上的比例.

    保护模式实际上是说eureka在可能发生某种故障的时候,选择持有本应该受到剔除的服务,为了防止极端的情况,将所有的服务都剔除掉.

    三.eureka的HA机制

    eureka本身既是一个客户端,也是一个服务端,换句话说,它可以接受其他服务的注册,也可以将自己注册到其它的eureka之上.

    因此HA机制就变得十分的简单了,我们只需要多创建几个eureka主机彼此之间互相注册就可以完成.

    下面,我们模拟一下这个内容.

    [1]首先创建一个springcloud-eureka-ha的子项目,然后添加依赖内容.

            <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-security</artifactId>
            </dependency>

    [2]添加配置文件内容

    spring:
      application:
        name: cloud-consumer
      profiles:
        active:
        - eureka1
    security:
      basic:
        enabled: true
      user:
        name: trek
        password: 123
    ---
    spring:
      profiles: eureka1
    server:
      port: 9001
          
    eureka:
      client:
        service-url:
          defaultZone: http://trek:123@eureka-server-9002:9002/eureka,http://trek:123@eureka-server-9003:9003/eureka 
      instance:
        prefer-ip-address: true
        instance-id: cloud-consumer-${server.port}
        
    info:
      name : cloud-consumer
      version: 1.0X
      
    ---
    spring:
      profiles: eureka2
    server:
      port: 9002
          
    eureka:
      client:
        service-url:
          defaultZone: http://trek:123@eureka-server-9001:9001/eureka,http://trek:123@eureka-server-9003:9003/eureka 
      instance:
        prefer-ip-address: true
        instance-id: cloud-consumer-${server.port}
        
    info:
      name : cloud-consumer
      version: 1.0X
      
    ---
    spring:
      profiles: eureka3 
    server:
      port: 9003
          
    eureka:
      client:
        service-url:
          defaultZone: http://trek:123@eureka-server-9001:9001/eureka,http://trek:123@eureka-server-9002:9002/eureka 
      instance:
        prefer-ip-address: true
        instance-id: cloud-consumer-${server.port}
        
    info:
      name : cloud-consumer
      version: 1.0X

    我们使用springboot给我们提供的profile特性,主要是方便我们后面启动eureka的时候更加方便.

    [3]修改hosts文件内容

    127.0.0.1  eureka-server-9001
    127.0.0.1  eureka-server-9002
    127.0.0.1  eureka-server-9003

    [4]项目打包,然后使用--spring.profils.active启动

    [5]访问说那个eureka的page页面,我们就会发现下面的内容

    实际上这就表示我们的eureka的服务器节点之间现在已经就是复制的关系了,我们的eureka的HA机制也搭建完成了.

  • 相关阅读:
    ClassLoader类加载器
    java反射(二)--反射应用案例
    java反射(一)--认识反射机制
    javaIO流(四)--输入与输出支持
    javaIO流(三)--IO深入操作
    javaIO流(二)--字节流与字符流
    javaIO流(一)--File类的基本使用
    python文件读写
    python的logging模块
    查看python版本
  • 原文地址:https://www.cnblogs.com/trekxu/p/10467280.html
Copyright © 2011-2022 走看看