Kora фреймворк для написания Java / Kotlin приложений с упором на производительность, эффективность, прозрачность сделанный разработчиками Т-Банк / Тинькофф

Kora is a framework for writing Java / Kotlin applications with a focus on performance, efficiency, transparency made by T-Bank / Tinkoff developers

Перейти к содержанию

Пробы

Функционал дающий приложению два метода для получения проб на приватном порту для предоставления информации о жизнеспособности и готовности сервиса.

Требует подключения HTTP сервера.

Жизнеспособности

Эта проба отвечает за признак — является ли приложение живым в данный момент. Kora старается начать отдавать эту пробу как можно раньше, чтобы оркестраторы точно знали, что нет проблем при старте и не пытались сделать рестарт приложения.

Пример конфигурации пути HTTP сервера для получения проб, описанной в классе HttpServerConfig (указаны значения по умолчанию):

httpServer {
    privateApiHttpLivenessPath = "/system/liveness"
}
httpServer:
  privateApiHttpLivenessPath: "/system/liveness"

Для создания собственной пробы жизнеспособности требуется чтобы компонент реализовывал интерфейс:

public interface LivenessProbe {

    @Nullable
    LivenessProbeFailure probe();
}

В случае ошибки проба должна возвращать LivenessProbeFailure, а в случае успеха null.

Готовности

Эта проба отвечает за признак — является ли приложение готовым к работе в данный момент.

Пример конфигурации пути HTTP сервера для получения проб, описанной в классе HttpServerConfig (указаны значения по умолчанию):

httpServer {
    privateApiHttpReadinessPath = "/system/readiness"
}
httpServer:
  privateApiHttpReadinessPath: "/system/readiness"

Для создания собственной пробы жизнеспособности требуется чтобы компонент реализовывал интерфейс:

public interface ReadinessProbe {

    @Nullable
    ReadinessProbeFailure probe();
}

В случае ошибки проба должна возвращать ReadinessProbeFailure, а в случае успеха null.

Рекомендации

Совет

Мы крайне не рекомендуем делать пробы, проверяющие внешние зависимости, такие как базы данных или другие сервисы.

В случае недоступности внешних зависимостей рекомендуется использовать паттерн Прерыватель.

Хорошим примером для ReadinessProbe может служить проба, которая возвращает ошибку во время прогрева сервиса.