Я ищу документацию и примеры кода проверки работоспособности grpc-go
.
Ищем проблемы в
нет четкого ответа, который я мог бы повторно использовать для проверки работоспособности в моей программе.
Я ищу документацию и примеры кода проверки работоспособности grpc-go
.
Ищем проблемы в
нет четкого ответа, который я мог бы повторно использовать для проверки работоспособности в моей программе.
В одной из размещенных вами ссылок есть ссылка на это, прочитайте меня: https://github.com/grpc/grpc/blob/master/doc/health-checking.md
Теперь вы должны реализовать эту логику и зарегистрировать эту службу в своем наборе служб.
В файле readme предлагается вручную зарегистрировать службы в службе проверки работоспособности, чтобы вы могли передать список служб в качестве аргумента для создания службы проверки работоспособности.
Я бы рекомендовал определить интерфейс для ваших служб, чтобы служба проверки работоспособности могла обрабатывать их все одинаково:
type HealthMeter interface {
GetHealth() mysample.HealthCheckResponse_ServingStatus
WatchHealth() <- chan mysample.HealthCheckResponse_ServingStatus
}
// implement service "A" and "B" as both interfaces (gRPC server AND HealthMeter)
grpcServer := grpc.NewServer()
srvA := servers.NewServiceA()
srvB := servers.NewServiceB()
healthSrv := servers.NewHealthCheckServer(map[string]servers.HealthMeter{
"serviceA": srvA,
"serviceB": srvB,
})
mysample.RegisterServiceAServer(grpcServer, srvA)
mysample.RegisterServiceBServer(grpcServer, srvB)
mysample.RegisterHealthServer(grpcServer, healthSrv)
Я надеюсь, что это может помочь вам.
Я рекомендую вам взглянуть на этот проект Github, чтобы узнать, как создать gRPC. услуга, подготовленная к производству, которая включает в себя проверку работоспособности и многое другое.
Что касается проверки работоспособности, вы можете проверить, как это делается здесь
Использование библиотеки из этого более целенаправленного проекта
Если вы не хотите использовать библиотеку, вы можете реализовать проверку работоспособности следующим образом:
import (
"google.golang.org/grpc/health"
"google.golang.org/grpc/health/grpc_health_v1"
)
grpcServer := grpc.NewServer()
grpc_health_v1.RegisterHealthServer(grpcServer, health.NewServer())