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机制也搭建完成了.

  • 相关阅读:
    poj 3243 Clever Y(BabyStep GiantStep)
    poj 2417 Discrete Logging
    poj 3481 Double Queue
    hdu 4046 Panda
    hdu 2896 病毒侵袭
    poj 1442 Black Box
    hdu 2815 Mod Tree
    hdu 3065 病毒侵袭持续中
    hdu 1576 A/B
    所有控件
  • 原文地址:https://www.cnblogs.com/trekxu/p/10467280.html
Copyright © 2011-2022 走看看