Stork Reference Guide

本指南是 Stork Getting Started Guide 的配套指南。它解释了 Quarkus 中 SmallRye Stork 集成的配置和用法。 :iokays-category: quarkus :iokays-path: modules/ROOT/pages/_includes/extension-status.adoc :keywords: Quarkus, 中文文档, 编程技术

该技术被认为是 {extension-status}。 有关可能状态的完整列表,请查看我们的 FAQ entry.

Supported clients

Stork 的当前集成支持:

  • the REST Client

  • gRPC 客户端(建议使用 Vert.x gRPC 客户端)

警告:gRPC 客户端集成不支持基于统计数据的负载平衡器。

Available service discovery and selection

查看 SmallRye Stork website 以了解有关提供的服务发现和选择的更多信息。

Using Stork in Kubernetes

Stork 为 Kubernetes 提供服务发现支持,超出了 Kubernetes 默认提供的功能。它将在 Kubernetes 服务的备份中查找所有 pod,但不会像 Kubernetes 所做的那样应用循环负载均衡,而是允许您使用 Stork 负载平衡器选择 pod。

要使用此功能,请将以下依赖项添加到项目中:

pom.xml
<dependency>
    <groupId>io.smallrye.stork</groupId>
    <artifactId>stork-service-discovery-kubernetes</artifactId>
</dependency>
build.gradle
implementation("io.smallrye.stork:stork-service-discovery-kubernetes")

为希望作为 Kubernetes 服务公开的每项服务配置查找:

quarkus.stork.my-service.service-discovery.type=kubernetes
quarkus.stork.my-service.service-discovery.k8s-namespace=my-namespace

Stork 在指定命名空间中查找给定名称的 Kubernetes 服务(前面示例中的 my-service)。Stork 不直接使用 Kubernetes 服务 IP,也不让 Kubernetes 来处理选择和平衡,而是检查服务并检索提供服务的 pod 列表。然后,它可以选择该实例。

有关使用 Kubernetes 的 Stork 的完整示例,请阅读 Using Stork with Kubernetes guide

Extending Stork

Stork 是可扩展的。您可以实现自己的服务发现或服务选择提供程序。

要了解自定义服务发现和服务选择,请查看:

Configure Stork observability

Enable metrics

当应用程序还使用quarkus-micrometer扩展时,会自动启用 Stork 指标。

Micrometer 通过 Stork 以及使用 Stork 进行编程的客户端来收集 rest/grpc 客户端的指标。

比如,如果你将指标导出到 Prometheus,你将得到:

# HELP stork_service_selection_failures_total The number of failures during service selection.
# TYPE stork_service_selection_failures_total counter
stork_service_selection_failures_total{service_name="hello-service",} 0.0
# HELP stork_service_selection_duration_seconds The duration of the selection operation
# TYPE stork_service_selection_duration_seconds summary
stork_service_selection_duration_seconds_count{service_name="hello-service",} 13.0
stork_service_selection_duration_seconds_sum{service_name="hello-service",} 0.001049291
# HELP stork_service_selection_duration_seconds_max The duration of the selection operation
# TYPE stork_service_selection_duration_seconds_max gauge
stork_service_selection_duration_seconds_max{service_name="hello-service",} 0.0
# HELP stork_overall_duration_seconds_max The total duration of the Stork service discovery and selection operations
# TYPE stork_overall_duration_seconds_max gauge
stork_overall_duration_seconds_max{service_name="hello-service",} 0.0
# HELP stork_overall_duration_seconds The total duration of the Stork service discovery and selection operations
# TYPE stork_overall_duration_seconds summary
stork_overall_duration_seconds_count{service_name="hello-service",} 13.0
stork_overall_duration_seconds_sum{service_name="hello-service",} 0.001049291
# HELP stork_service_discovery_failures_total The number of failures during service discovery
# TYPE stork_service_discovery_failures_total counter
stork_service_discovery_failures_total{service_name="hello-service",} 0.0
# HELP stork_service_discovery_duration_seconds_max The duration of the discovery operation
# TYPE stork_service_discovery_duration_seconds_max gauge
stork_service_discovery_duration_seconds_max{service_name="hello-service",} 0.0
# HELP stork_service_discovery_duration_seconds The duration of the discovery operation
# TYPE stork_service_discovery_duration_seconds summary
stork_service_discovery_duration_seconds_count{service_name="hello-service",} 13.0
stork_service_discovery_duration_seconds_sum{service_name="hello-service",} 6.585046209
# HELP stork_service_discovery_instances_count_total The number of service instances discovered
# TYPE stork_service_discovery_instances_count_total counter
stork_service_discovery_instances_count_total{service_name="hello-service",} 26.0

可以在_tags_中找到 Stork 服务名称。

指标包含服务发现(stork_service_discovery_*)和有关服务选择(stork_service_selection_*)的指标,例如服务实例数、失败和持续时间。

Disable metrics

要在使用`quarkus-micrometer`时禁用 Stork 指标,请将以下属性添加到应用程序配置:

quarkus.micrometer.binder.stork.enabled=false

Configuration reference

Unresolved include directive in modules/ROOT/pages/stork-reference.adoc - include::../../../target/quarkus-generated-doc/config/quarkus-smallrye-stork.adoc[]