Spring boot 运行在Kafka流之上的Spring引导服务的活跃度/就绪度健康指示器集

Spring boot 运行在Kafka流之上的Spring引导服务的活跃度/就绪度健康指示器集,spring-boot,kubernetes,apache-kafka-streams,readinessprobe,Spring Boot,Kubernetes,Apache Kafka Streams,Readinessprobe,对于运行在具有DB连接的Kafka流之上的Spring引导服务,应该如何正确配置运行状况指示器?我们使用Spring云流和Kafka流绑定、Spring数据JPA、Kubernetes作为容器管理程序。我们假设每个主题有3个服务副本和9个分区。典型的服务通常连接来自两个主题的消息,并将数据持久化到数据库中,然后将数据发布回另一个卡夫卡主题 切换到Spring Boot 2.3.1并将K8s活动/就绪端点更改为新端点后: /执行机构/健康/活力 /执行机构/健康/准备 我们发现默认情况下,他们

对于运行在具有DB连接的Kafka流之上的Spring引导服务,应该如何正确配置运行状况指示器?我们使用Spring云流和Kafka流绑定、Spring数据JPA、Kubernetes作为容器管理程序。我们假设每个主题有3个服务副本和9个分区。典型的服务通常连接来自两个主题的消息,并将数据持久化到数据库中,然后将数据发布回另一个卡夫卡主题

切换到Spring Boot 2.3.1并将K8s活动/就绪端点更改为新端点后:

  • /执行机构/健康/活力
  • /执行机构/健康/准备
我们发现默认情况下,他们没有任何健康指标

根据:

致动器将“活性”和“准备就绪”探头配置为健康探头 组;这意味着所有健康组功能都可用 为了他们。(…)默认情况下,Spring Boot不会添加其他运行状况 这些群体的指标

我认为这是正确的方法,但我没有测试:

management.endpoint.health.group.readiness.include: readinessState,db,binders
management.endpoint.health.group.liveness.include: livenessState,ping,diskSpace
我们尝试涵盖以下用例:

  • 滚动更新:添加新副本时不可用的消耗槽(空闲实例)
  • 流已停止(已引发运行时异常)
  • DB在容器启动期间/服务运行时不可用
  • 经纪人不在
我发现了一个类似的,但我相信当前的一个与卡夫卡服务特别相关。它们的性质不同于REST服务

更新: 在spring boot 2.3.1 binders health indicator中,会检查Kafka 2.5的流是否处于运行或重新平衡状态(仅在运行之前),因此我猜带有空闲实例的滚动更新情况是由其逻辑处理的