我正在开发一个应用程序并使用spring-boot-application作为我的健康端点,我的应用程序正在与我需要在我的健康检查中包含的几个第三方服务进行交互,问题是当服务没有响应时我保持等到ping超时,所以我知道它们不可用,这需要很长时间,我想避免这种情况。
一种解决方案是并行运行对服务的所有检查,这将显着减少超时的时间,但仍然存在一个超时的瓶颈。 另一个解决方案是在后台定期(使用调度程序)继续检查服务并缓存检查的最后结果,这样当我们的监视器请求健康信息时,健康端点将返回兑现结果。< / p>
还有更实用的解决方案吗?或者这种情况是否有任何已知的最佳实践?
谢谢你的帮助。
答案 0 :(得分:0)
我想发布如何解决这个问题:
由于该应用程序依赖于第三方,并且没有与这些第三方的连接,因此该应用程序不被视为功能正常(不是微服务),因此无法逃避这些第三方的运行状况 >
为解决此问题,我做了以下事情:
1-识别关键的第三方,应用程序连接到各个第三方,其中一些是关键的,而另一些不是关键的(很可能这将涉及业务决策),因此确定关键的第三方很重要各方,对于非关键第三方,我将其从健康检查中排除了
2-对关键第三方的健康状况进行定期检查并将其缓存,这将导致获取健康状况的延迟,因此应约定检查期限,对我而言,可以小延迟(3分钟),所以这是我的间隔时间