springCloud Eureka高可用注册中心

为啥要用高可用注册中心

在微服务环境中,注册中心时非常关键的业务,可以实现服务治理,一旦注册中心宕机,其整个服务都可能无法访问,因此高可用的集群模式的注册中心非常重要

Eureka高可用原理

在上一篇文章中我们使用的是单个Eureka注册中心,SpringCloud Eureka,现在我们使用两个Eureka注册中心,形成Eureka简单集群,Eureka集群原理是将自己当成一种服务注册到另一个注册中心上去,达到注册中心相互注册的目的

###因为该应用为注册中心,不会注册自己,此时修改为true,则会去注册中心注册自己
    register-with-eureka: true
###不需要去注册中心上检索服务 ,修改为True,会去注册中心检索服务
    fetch-registry: true

Eureka集群环境搭建

分别创建两个Eureka项目

Eureka01 配置

###服务端口号
server:
  port: 8100
###eureka 基本信息配置
spring: 
 application: 
  name: eureka-server
eureka:
  instance:
    ###注册到eurekaip地址
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8200/eureka/ ## 注册到另一台注册中心
    register-with-eureka: true
    fetch-registry: true

Eureka02 配置

###服务端口号
server:
  port: 8200
###eureka 基本信息配置
spring: 
 application: 
  name: eureka-server
eureka:
  instance:
    ###注册到eurekaip地址
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8100/eureka/ ## 注册到Eureka01上
    register-with-eureka: true
    fetch-registry: true

启动服务,此时分别访问http://localhost:8100/ 和 问http://localhost:8200/ 可以看到eureka服务的相互注册

客户端集成eureka集群

客户端集成eureka集群只需要在配置文件中添加多个注册中心地址即可

客户端配置文件

server:
  port: 8000
spring:
  application:
    name: member
#eureka:
#  client:
#    service-url:
#      defaultZone: http://localhost:8100/eureka
###集群地址
eureka:
  client:
    service-url:
          defaultZone: http://localhost:8100/eureka,http://localhost:8200/eureka     # 这里注册多个注册中心
    register-with-eureka: true
    fetch-registry: true

Eureka自我保护模式

查看Eureka 自我保护模式直观体现是在访问Eureka后台时即可看到
EMERGENCY!EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT.RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEGING EXPIRED JUST TO BE SAFE

紧急!EUREKA可能错误地声称实例已经启动,而实际上并没有。续订小于阈值,因此实例并不是为了安全而开始过期。

正常情况下EurekaServer在一定时间内没有收到客户端发送的心跳,便会把实例从服务端中删除(默认时90s),如果在短时间内大量的客户端实列没有收到心跳,EurekaServer会开启保护机制,不会将客户端剔除,例如在客户端和EurekaServer端网络不通的情况下,这样有助于网络通畅后的业务正常恢复。

但是在开发过程中我们需要经常性的重启服务,需要将Eureka的自我保护模式关闭,修改配置文件即可

Eureka关闭自我保护模式

eureka:
  instance:
    ###注册中心ip地址
    hostname: 127.0.0.1
  client:
    serviceUrl:
    ##注册地址
      defaultZone: http:/127.0.0.1:8100/eureka/
    ####因为自己是注册中心,是否需要将自己注册给自己的注册中心(集群的时候是需要是为true)
    register-with-eureka: false
    ###因为自己是注册中心, 不需要去检索服务信息
    fetch-registry: false
  server:
    # 测试时关闭自我保护机制,保证不可用服务及时踢出
    enable-self-preservation: false
      ##剔除失效服务间隔
    eviction-interval-timer-in-ms: 2000

Eureka替代品

Eureka2.x 闭源后,我们虽然可以正常使用Eureka,但是其实SpringCloud 支持其它的注册中心,有Consul
Zookeeper,可以使用他们代替Eureka,cloud整合consul,zookeeper和Eureka大同小异,只是maven整合的包和开发过程中使用的注解不同

@EnableDiscoveryClient 和@EnableEurekaClient

在客户端中,如果使用Eureka当注册中心则使用@EnableEurekaClient 注解,使用Zookeeper和Consul当注册中心则使用@EnableDiscoveryClient 注解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值