服务治理

您所在的位置:网站首页 grpc调用dubbo 服务治理

服务治理

2024-07-05 05:09| 来源: 网络整理| 查看: 265

基于Grpc的健康检查1. Grpc健康检查2 triple健康检查服务2.1 通过gprc客户端调用健康检查服务:2.2 grpc-health-probe调试健康检查服务:参考:基于Grpc的健康检查1. Grpc健康检查

Grpc健康检查是通过一个普通的用户rpc调用进行实现,Grpc的健康检查定义了如下的protobuf,这样就能实现所有的Grpc协议健康检查的互通。

Firstly, since it is a GRPC service itself, doing a health check is in the same format as a normal rpc. Secondly, it has rich semantics such as per-service health status. Thirdly, as a GRPC service, it is able reuse all the existing billing, quota infrastructure, etc, and thus the server has full control over the access of the health checking service.

syntax = "proto3";package grpc.health.v1;message HealthCheckRequest { string service = 1;}message HealthCheckResponse { enum ServingStatus { UNKNOWN = 0; SERVING = 1; NOT_SERVING = 2; SERVICE_UNKNOWN = 3; // Used only by the Watch method. } ServingStatus status = 1;}service Health { rpc Check(HealthCheckRequest) returns (HealthCheckResponse); rpc Watch(HealthCheckRequest) returns (stream HealthCheckResponse);}2 triple健康检查服务 Dubbo-go框架在启动后会自动向框架中注册健康检查服务,提供基于grpc health proto的健康检查服务,无需在配置文件中额外配置。triple健康检查服务可以通过grpc-health-probe检查框架中服务的状态,也可以通过grpc调用该健康检查服务,但是不能通过triple客户端调用该健康检查服务(基于grpc的健康检查服务不通过注册中心注册),调用的服务名为“grpc.health.v1.Health”,接口为check。 2.1 通过gprc客户端调用健康检查服务: 启动dubbo-go-samples中的triple服务,通过下面的grpc客户端便可以查看”org.apache.dubbogo.samples.api.Greeter”的状态。triple健康检查服务与grpc互通,所以可以通过grpc客户端查看基于triple协议服务的健康状态。 package mainimport ( "context" "fmt" "log")import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" healthpb "google.golang.org/grpc/health/grpc_health_v1")const ( address = "localhost:20000")func main() { // Set up a connection to the server conn, err := grpc.Dial(address, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { log.Fatalf("did not connect: %v", err) } defer func() { _ = conn.Close() }() checkHealth("org.apache.dubbogo.samples.api.Greeter", conn)}func checkHealth(service string, conn *grpc.ClientConn) { fmt.Printf(">>>>> gRPC-go check %s status", service) req := &healthpb.HealthCheckRequest{ Service: service, } ctx := context.Background() rsp, err := healthpb.NewHealthClient(conn).Check(ctx, req) if err != nil { panic(err) } fmt.Printf("get service status = %+v\n", rsp)}2.2 grpc-health-probe调试健康检查服务: 启动dubbo-go-samples中的triple服务,提供org.apache.dubbogo.samples.api.Greeter服务。使用grpc-health-probe检查该服务的健康状态,grpc-health-probe -addr=localhost:20000 -service "org.apache.dubbogo.samples.api.Greeter"

参考: https://github.com/grpc/grpc/blob/master/doc/health-checking.mdhttps://github.com/grpc/grpc-go/tree/master/health

最后修改 December 16, 2022: Fix check (#1736) (97972c1)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3