SpringCloud 学习笔记3--高可用Eureka注册中心

1、搭建高可用Eureka注册中心(客户端调用Eureka集群)

       Eureka高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组相互注册的服务注册中心,从而实现服务清单的相互同步,达到高可用效果。即在properties或yml文件中配置:

             ##是否需要将自己注册给自己的注册中心(集群的时候是需要为true)

             eureka.client.register-with-eureka=true

             ##需不需要需要去检索服务信息

             eureka.client.fetch-registry=true

     思路:Eureka搭建集群原理使用相互注册原理,形成一组相互注册的注册中心,从而实现数据相互的同步,达到高可用效果。即我中有你,你中有我。代码如下:

(1)server1的properties文件中:
##服务端口
server.port=8100
##注册中心ip地址
eureka.instance.hostname: 127.0.0.1
##服务名称
spring.application.name=app-eureka
##注册地址
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:9100/eureka/
##因为自己是注册中心,是否需要将自己注册给自己的注册中心(集群的时候是需要为true)
eureka.client.register-with-eureka=true
##因为自己是注册中心,不需要去检索服务信息
eureka.client.fetch-registry=true






(2)server2的properties文件中:
##服务端口
server.port=9100
##注册中心ip地址
eureka.instance.hostname: 127.0.0.1
##服务名称
spring.application.name=app-eureka
##注册地址
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:8100/eureka/
##因为自己是注册中心,是否需要将自己注册给自己的注册中心(集群的时候是需要为true)
eureka.client.register-with-eureka=true
##因为自己是注册中心,不需要去检索服务信息
eureka.client.fetch-registry=true





注意:多台server的服务名称必须一致!!!!

效果如下:

        

 

服务提供者或消费者在注册时,只需在自己的properties或yml文件中配置多个注册中心即可

##当前会员服务注册到eureka服务地址

eureka.client.serviceUrl.defaultZone=http://localhost:8100/eureka,http://localhost:9100/eureka

效果如下:

       

问题:为啥一台服务器上有注册的服务信息,一台服务上没有呢?

       因为在注册的过程中,只会保证有一台注册中心服务优对应服务信息数据。当有数据的注册中心宕机后,自动转移同步数据到另一台服务器上去。

 

五、SpringCloud Eureka 自我保护机制

     1、EurekaClient(注册中心客户端)、EurekaServer(注册中心服务端),产生自我保护机制的原因:为了防止EurekaClient可以正常运行,但是与EurekaServer网络不通的情况下,EurekaServer不会将EurekaClient剔除。

      自我保护机制:默认情况下,EurekaClient定时向EurekaServer发送心跳包,如果EurekaServer在一定的时间内(默认90秒)没有收到EurekaClient发送心跳包,便会直接从服务注册列表中剔除该服务。但是在短时间内丢失了大量的服务实例心跳,这时候EurekaServer会开启自我保护机制,不会去剔除该服务。

      自我保护机制中,为什么Eureka不会剔除该服务呢?   是为了防止EurekaClient是可以正常访问,但是只是EurekaClient与EurekaServer之间网络访问不通,防止误剔除。

       在什么环境下开启自我保护机制?建议本地环境禁止自我保护机制,生产环境开启自我保护机制。

       禁止自我保护机制的方法:

         (1)在EurekaServer的yml或properties文件中添加相关配置:               

   ##测试关闭自我保护机制,保证不可用服务及时剔除
   eureka.server.enable-self-preservation=false  
   eureka.server.eviction-interval-timer-in-ms=2000

        (2)客户端的yml或properties文件中添加如下配置:

##心跳简则与持续时间,测试时将值设置小些,保证服务关闭后注册中心能及时剔除服务

##eureka客户端向服务端发送心跳的时间间隔,单位为秒(客户端告诉服务端自己会按照该规则)
eureka.instance.lease-renewal-interval-in-seconds=1

##eureka服务端在收到最后一次心跳之后等待的时间上限,单位为秒,超过则剔除
eureka.instance.lease-expiration-duration-in-seconds=2

     如果服务真的宕机或人为关闭时,应手动从Eureka中剔除该服务的信息,本地调用应该重试机制,保证接口网络延迟幂等性、做好服务器的降级功能(给客户端返回url提示)。


   

六、Consul、Eureka、Zookeeper、Redis注册中心对比

      1、注册中心的作用:服务治理、服务注册与发现,能够实现负载均衡,管理服务与服务之间的依赖关系。

      2、springcloud中支持三种注册中心:Eureka、Zookeeper、Consul。

           Zookeeper:分布式协调工具,可以实现注册中心,采用zk的临时节点类型。临时节点和生命周期是关联的,服务断开连接之后,该节点会自动删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值