spring - 第三方健康端点最佳实践

标签 spring spring-boot spring-mvc spring-boot-actuator health-monitoring

我正在开发一个应用程序并使用 spring-boot-application 作为我的健康端点,我的应用程序正在与几个第三方服务进行交互,我需要将这些服务包含在我的健康检查中,问题是当服务没有响应时我会保留等到 ping 超时,这样我就知道它们不可用,这需要很长时间,我想避免这种情况。

一种解决方案是并行运行所有服务检查,这将显着减少超时情况下的时间,但我仍然遇到一次超时的瓶颈。 另一种解决方案是定期在后台检查服务(使用调度程序)并缓存检查的最后结果,以便当我们的监视器请求运行状况信息时,运行状况端点将返回兑现的结果。

还有更实用的解决方案吗?或者对于这种情况有任何已知的最佳实践吗?

最佳答案

我想发布我如何标记此问题:

由于应用程序依赖于第三方,并且如果没有与这些第三方的连接,则应用程序不被视为功能正常(不是微服务),因此无法逃避检查这些第三方的运行状况

为了解决该问题,我执行了以下操作:

1- 识别关键第三方,应用程序连接到各个第三方,其中有些是关键的,有些不是(很可能这将涉及业务决策),因此识别关键第三方很重要各方,对于非关键第三方我将其排除在健康检查之外

2- 对关键第三方的运行状况进行定期检查并将其缓存,ofc 这会导致获取运行状况出现延迟,因此应就检查周期达成一致,对我来说,可以有一个小延迟(3 分钟),所以这是我的时间间隔

关于spring - 第三方健康端点最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47810151/

相关文章:

java - 如何使用 Spring boot JpaRepository 保存多个表

java - Spring 数据休息: Return One-To-Many-To-One as Many-To-Many relation

java - Wss4jSecurityInterceptor - 我的自定义回调被解释为 CleanupCallback 对象

java - 如何在不使用查询缓存的情况下缓存 Spring Data JPA 查询方法的结果?

spring-boot - 在 kotlin 的构造函数中使用 lateinit 属性

spring - IntelliJ IDEA 在使用 Spring 的 @Autowired 注解时显示错误

java - 区分是否是重定向: or a normal request in HandlerInterceptorAdaptor

Spring 返回 FileSystemResource 而不是 ClassPathResource

spring - 在不使用Spring Security的情况下忘记了密码功能

spring-boot - 用Grails 3设置Camunda