目录
Eureka注册中央高可用集群概述
高可用性需求
高可用解决方案
Eureka Server高可用机制
Eureka注册中央高可用集群搭建
EurekaServerMinor
Eureka详解
服务消费者模式
服务注册模式
关闭自我保护机制
Eureka注册中央高可用集群概述
高可用性需求
微服务架构:
在分布式体系中,必须充实思量各个微服务组件的高可用性,克制单点故障。
注册中央Eureka本身也是一个服务,如果只有一个节点,可能会发生故障,导致无法进行服务注册与查询。
高可用解决方案
注册中央集群:
为相识决单点故障题目,需要构建高可用的服务注册中央,即通过注册中央集群来实现。
Eureka服务注册中央:
本身既是一个服务提供者,也是一个服务消费者。
通过配置`eureka.client.register-with-eureka=false`,可以让注册中央不注册自己,但可以向其他注册中央注册自己。
Eureka Server高可用机制
相互注册:
Eureka Server的高可用性是通过将自己作为服务向其他Eureka Server注册来实现的。
多个Eureka Server之间相互注册,形成一组相互连接的服务注册中央。
服务清单同步:
在注册中央A上注册的服务,会被复制同步到注册中央B上。
因此,从任何一台注册中央上都能查询到已经注册的服务,从而实现服务清单的相互同步。
高可用效果:
通过这种机制,纵然某个Eureka Server节点发生故障,其他节点仍然可以提供服务注册与查询功能,确保整个体系的高可用性。
Eureka注册中央高可用集群搭建
EurekaServerMinor
将EurekaServer复制几份,好比这里复制一份出来,application.yml如下:
- server:
- port: 7004
- spring:
- application:
- name: EurekaServer
- eureka:
- instance:
- hostname: 127.0.0.1
- client:
- register-with-eureka: true
- fetch-registry: true
- service-url:
- defaultZone: http://127.0.0.1:7001/eureka
复制代码 启动类加上@EnableEurekaServer注解,启动乐成后当前服务节点也会注册上去:
要保证服务节点之间能相互访问,如果不能相互访问,Eureka服务中的数据不能同步共享,我们需要在C:\Windows\System32\drivers\etc目录下的hosts文件中添加两行配置,如下:
- 127.0.0.1 eureka7001
- 127.0.0.1 eureka7004
复制代码 也可以多复制几份出来。
Eureka详解
服务消费者模式
获取服务
消费者启动时,利用服务别名向服务注册中央发送REST哀求,获取对应服务信息。
信息缓存到本地JVM客户端,并每隔30秒从服务器更新一次。
可通过`eureka.client.registry-fetch-interval-seconds=30`参数修改更新隔断。
服务下线
服务实例关闭时,会触发服务下线的REST哀求给Eureka Server。
Eureka Server接收哀求后,将服务状态置为下线并传播下线事件。
服务注册模式
失效剔除
Eureka Server启动时创建定时使命,默认每隔60秒实行一次。
将当前清单中超时(默认为90秒)没有续约的服务剔除。
Eureka服务注册中央自我保护机制
当Eureka Server一分钟内收到的心跳数大量减少时,触发保护机制。
告诫信息出如今Eureka信息面板中,提示触发了自我保护机制。
机制旨在保护注册信息,克制因网络题目导致的服务误剔除。
在保护期内,纵然实例出现题目,Eureka也不会将其剔除。
客户端需具备容错机制,如重试、断路器等,以应对可能的服务调用失败。
自我保护模式可克制因网络分区故障导致的服务不可用题目。
关闭自我保护机制
服务端配置
- eureka:
- server:
- enable-self-preservation: false #自我保护模式默认是自动开启的,可以选择关闭,禁用自我保护模式,保证不可用的服务及时剔除
- eviction-interval-timer-in-ms: 60000 #剔除失效服务间隔单位ms,默认1分钟
复制代码 客户端
- instance:
- lease-renewal-interval-in-seconds: 1 #间隔1s,向服务端发送一次心跳,证明自己依然“存活”
- lease-expiration-duration-in-seconds: 2 # 告诉服务端,如果我2s之内没有给你发心跳,就代表我“死”了,请将我踢掉
复制代码 关闭后如下:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |