1

我一直在寻找grpc-go健康检查的文档和代码示例。

寻找问题

没有明确的答案可以重新用于在我的程序中实施健康检查。

4

2 回答 2

5

我建议你看看这个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())
于 2020-08-05T17:30:57.483 回答
1

您发布的链接之一有一个链接到这个阅读我: https ://github.com/grpc/grpc/blob/master/doc/health-checking.md

您现在应该实现该逻辑,并在您的服务集中注册该服务。

自述文件建议手动将服务注册到健康检查服务中,这样您就可以将服务列表作为参数传递来创建健康检查服务。

我建议为您的服务定义一个接口,以便健康检查服务可以以相同的方式处理所有这些:

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)

我希望它可以帮助你。

于 2019-12-18T15:51:19.777 回答