2-Spring cloud之Eureka快速剔除失效服务 以及 Eureka原理
在Spring Cloud中,Eureka提供了服务失效剔除的机制,以保证注册中心不会将失效的服务信息继续提供给客户端。
- 快速剔除失效服务:
Eureka通过心跳机制来检测服务是否失效。默认情况下,Eureka Server会期望每个服务实例每隔30秒发送一次心跳。如果在一定时间内未收到某个服务实例的心跳,Eureka Server会将其剔除。
@EnableEurekaClient
@SpringBootApplication
public class ServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceApplication.class, args);
}
@Bean
public ServletRegistrationBean eurekaServlet() {
// 注册一个Eureka的管理页面,方便查看Eureka的相关信息
return new ServletRegistrationBean(new EurekaServlet(), "/eureka/*");
}
}
- Eureka原理:
Eureka Server通过以下机制剔除失效服务:
- 失效剔除间隔:Eureka Server会周期性地检查超时的服务实例,并将其剔除。
- 心跳间隔:Eureka Client会定期发送心跳到Eureka Server来保持服务的新鲜度。
- 服务保活策略:如果Eureka Server在等待时间内未收到Eureka Client的心跳,会将该服务实例从注册列表中剔除。
eureka:
instance:
lease-renewal-interval-in-seconds: 30 # 设置心跳的间隔时间,默认是30秒
lease-expiration-duration-in-seconds: 90 # 如果90秒内没有收到心跳,则将实例移除
client:
registry-fetch-interval-seconds: 30 # Eureka客户端从服务器获取注册信息的间隔时间,默认30秒
service-url:
defaultZone: http://localhost:8761/eureka/ # Eureka服务器的地址
以上配置示例中,lease-renewal-interval-in-seconds
设置了心跳间隔时间,lease-expiration-duration-in-seconds
设置了服务保活时间,若超过该时间未收到心跳则视为服务失效。
总结:Spring Cloud的Eureka通过心跳机制来保证服务实例的有效性,并将失效的服务自动剔除,保障系统的健壮性。
评论已关闭