Spring Cloud SOFA 提供了优雅上线的功能,其实现原理是在应用通过健康检查以后,再进行服务的注册。如果您开启了预热订阅功能(该功能默认开启),则预热订阅是否成功也会加入健康检查判断,从而确保所有需要预热订阅的服务都成功订阅时,应用才会将自身注册到注册中心。
优雅上线功能默认开启,您无需任何配置即可启用此功能。Spring Cloud SOFA 的健康检查融合了 Spring Boot 原生的健康检查功能,同时还扩展了一个新的接口,从而实现对 SOFA 自身启动逻辑的一些检查(例如预热订阅)。您也可以扩展 Spring Cloud SOFA 的健康检查接口,加入自己的检查逻辑,确保在应用就绪时再进行服务注册,从而确保服务的可靠。
有关 Spring Cloud SOFA 的健康检查,详情请参见 健康检查(Spring Cloud SOFA Health)。
配置预热订阅检查
由于 SOFA 注册中心的订阅是完全异步的,Spring Cloud SOFA 对于预热订阅的成功状态会通过轮询检查的方式来确认是否全部订阅成功。默认情况下会重试 20 次,每次检查间隔 1000 毫秒。如果需要订阅的服务很多,则上述配置可能无法等到所有服务订阅成功,从而导致应用启动失败。如果需要延长等待时间,您可以在application.properties
文件中配置以下参数。
配置项 | 说明 | 默认值 |
spring.cloud.sofa.discovery.health-check-retry-count | 预热订阅检查次数 | 20 |
spring.cloud.sofa.discovery.health-check-retry-interval | 预热订阅检查间隔(毫秒) | 1000 |
关闭优雅上线
如果您不需要使用优雅上线功能,或不期望通过 Spring Cloud SOFA 来实现优雅上线功能,您可以在application.properties
文件中配置spring.cloud.sofa.discovery.register-after-health-check
的值为false
来关闭注册前的健康检查。关闭后,服务发布逻辑将还原到 Spring Cloud 原生逻辑,即 Web Server 启动成功后就会进行注册。
spring.cloud.sofa.discovery.register-after-health-check=false
如果您并不想关闭健康检查,但希望即使健康检查不通过,也不影响服务注册,您可以配置 spring.cloud.sofa.discovery.health-check-strict-check
值为false
来实现。
spring.cloud.sofa.discovery.health-check-strict-check=false