spring 如何在一个服务的就绪性探测器中测试另一个服务?

ijxebb2r  于 2023-01-25  发布在  Spring
关注(0)|答案(1)|浏览(114)

我必须在我的spring boot应用程序中为每个服务实现就绪探测。
应用程序中的每个服务都公开活动性和就绪性端点。
我的一些服务依赖于其他人。
问题是:如何检查服务A是否准备好服务B?
1.编写ServiceAHealthIndicator类,该类将请求服务A活动端点。然后通过属性menagment. endpoint. health. group. readiness. include = ServiceA将此健康指示器包含在application. yml中
1.在Kubernetes配置中,将端点服务A/liveness添加到就绪状态。

readinessProbe:
   httpGet:
    path: serviceA/health/liveness
    port: 8000
svdrlsy4

svdrlsy41#

在我看来,服务B的活动性和就绪性端点不应该被服务A调用。这些端点是为了让Kubernetes知道如何处理特定的容器而存在的。
因此服务A应该像往常一样调用服务B的业务端点,例如,如果B公开了一个操作add(x,y),那么这就是操作A应该调用的。
确保B的故障(服务降级,如延迟)在A中得到正确处理;A应使用断路器模式(https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern)-这将允许A以更可预测的方式处理B的故障。
通常,服务不会通过专门的调用来检查其依赖关系的健康状况,这是因为进行这些检查的逻辑既复杂又缓慢。

相关问题