zoukankan      html  css  js  c++  java
  • 微服务之SpringCloud实战(三):SpringCloud Eureka高可用

    高可用Eureka

      高可用我就不再过多解释了,Eureka Server的设计一开始就考虑了高可用的问题,在Eureka的服务治理设计中,所有的节点即是服务提供方也是消费方,注册中心也不例外,上一章中我已经将注册中心EUREKA-SERVER注册到注册中心,很直观,是否还记得单节点中我们设置过下面这样的配置信息,让注册中心注册自己。

    eureka:
      client:
        registerWithEureka: true   
        fetchRegistry: true

    EurekaServer的高可用实际就是把自己当做服务向注册中心注册自己,这就形成了一组互相注册的服务注册中心,以实现服务列表的同步,达到高可用,上代码:

    这里我搭建两套EurekaServer,使用不同的端口,如下是注册中心的配置

    仔细观察下面配置我新增加了一个节点,这里说明一下,eureka.client.serviceUrl.defaultZone这个配置是相互指定的,意思就是node1的IP指向node2,node2的IP指向node1,这样就会实现相互注册及高可用,我这里是本地启动两个,所以ip是一样的

    
    
    #公共配置信息
    server:
    port: 9901

    spring:
    application:
    name: eureka-server
    profiles:
    active: node1

    eureka:
    instance:
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
    server:
    enableSelfPreservation: true #关闭保护机制,以确保注册中心可以将不可用的实例剔除.(注意:自我保护模式是一种应对网络异常的安全保护措施,使用自我保护模式,可以让Eureka集群更加的健壮、稳定)
    evictionIntervalTimerInMs: 5000 #eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒
    client:
    registerWithEureka: true
    fetchRegistry: true

    #用---分割不同的环境对应的配置信息(YML以"---"作为文档分割符,以"..."作为结束标志)
    ---
    spring:
    profiles: node1

    eureka:
    client:
    serviceUrl:
    defaultZone: http://10.200.108.50:9902/eureka/
    ---
    spring:
    profiles: node2

    eureka:
    client:
    serviceUrl:
    defaultZone: http://10.200.108.50:9901/eureka/

    ···
     
    #公共配置信息
    server:
      port: 9902
    
    spring:
      application:
        name: eureka-server
      profiles:  
        active: node2
    
    eureka:
      instance:
        prefer-ip-address: true
        instance-id: ${spring.cloud.client.ipAddress}:${server.port} 
      server:
        enableSelfPreservation: true                #关闭保护机制,以确保注册中心可以将不可用的实例剔除.(注意:自我保护模式是一种应对网络异常的安全保护措施,使用自我保护模式,可以让Eureka集群更加的健壮、稳定)
        evictionIntervalTimerInMs: 5000            #eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒
      client:
        registerWithEureka: true
        fetchRegistry: true
         
    #用---分割不同的环境对应的配置信息(YML以"---"作为文档分割符,以"..."作为结束标志)
    ---
    spring:
      profiles: node1
      
    eureka:
      client:
        serviceUrl:
          defaultZone: http://10.200.108.50:9902/eureka/
    ---
    spring:
      profiles: node2
      
    eureka:
      client:
        serviceUrl:
          defaultZone: http://10.200.108.50:9901/eureka/
          
    ···

     两个注册中心启动后会访问第一个或第二个都会出现如下界面:

    深入了解一下:

      在实际开发中,服务注册中心不单单只有2个节点,而是会有两个以上的节点存在。但从上面的例子当中,我们可以知道Eureka Server的同步遵循着一个非常简单的原则:只要可以连接集群中任意一台注册中心,就可以进行信息传播与同步。所以,如果存在多个节点,我们只需要将节点之间两两连接起来,形成通路,那么他们之间的所有服务都可以共享。

    我们的服务只需要向集群中的任意一个注册中心中注册,即可被所有注册中心所共享,任意一个注册中心崩溃,都不会影响这个服务被调用。

    这样就实现了注册中心集群的高可用。

  • 相关阅读:
    数据结构_bubble_sort
    数据结构_sfdg(小F打怪)
    数据结构_yjjsj(伊姐姐数字游戏)
    数据结构 queue
    数据结构 Job
    数据结构 happiness
    数据结构_calculator
    js并归排序的思路
    js神秘的电报密码---哈弗曼编码
    js同时获得数组的两个最小值
  • 原文地址:https://www.cnblogs.com/gslblog/p/9929458.html
Copyright © 2011-2022 走看看