我正在开发一个应用程序并使用 spring-boot-application 作为我的健康端点,我的应用程序正在与几个第三方服务进行交互,我需要将这些服务包含在我的健康检查中,问题是当服务没有响应时我会保留等到 ping 超时,这样我就知道它们不可用,这需要很长时间,我想避免这种情况。
一种解决方案是并行运行所有服务检查,这将显着减少超时情况下的时间,但我仍然遇到一次超时的瓶颈。 另一种解决方案是定期在后台检查服务(使用调度程序)并缓存检查的最后结果,以便当我们的监视器请求运行状况信息时,运行状况端点将返回兑现的结果。
还有更实用的解决方案吗?或者对于这种情况有任何已知的最佳实践吗?
最佳答案
我想发布我如何标记此问题:
由于应用程序依赖于第三方,并且如果没有与这些第三方的连接,则应用程序不被视为功能正常(不是微服务),因此无法逃避检查这些第三方的运行状况
为了解决该问题,我执行了以下操作:
1- 识别关键第三方,应用程序连接到各个第三方,其中有些是关键的,有些不是(很可能这将涉及业务决策),因此识别关键第三方很重要各方,对于非关键第三方我将其排除在健康检查之外
2- 对关键第三方的运行状况进行定期检查并将其缓存,ofc 这会导致获取运行状况出现延迟,因此应就检查周期达成一致,对我来说,可以有一个小延迟(3 分钟),所以这是我的时间间隔
关于spring - 第三方健康端点最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47810151/