Как реализовать проверку работоспособности go grpc-go?

Я ищу документацию и примеры кода проверки работоспособности grpc-go.

Ищем проблемы в

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


person Darmawan Zulkifli    schedule 16.12.2019    source источник


Ответы (2)


В одной из размещенных вами ссылок есть ссылка на это, прочитайте меня: 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)

Я надеюсь, что это может помочь вам.

person rubens21    schedule 18.12.2019

Я рекомендую вам взглянуть на этот проект 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())
person Alexsandro Souza    schedule 05.08.2020