resolve offline comments

pull/2806/head
yang-g 10 years ago
parent 72d796f2bc
commit 481b016e2e
  1. 33
      doc/health-checking.md

@ -3,14 +3,15 @@ GRPC Health Checking Protocol
Health checks are used to probe whether the server is able to handle rpcs. The Health checks are used to probe whether the server is able to handle rpcs. The
client-to-server health checking can happen from point to point or via some client-to-server health checking can happen from point to point or via some
load balancing mechanism. A server may choose to reply “unhealthy” because it control system. A server may choose to reply “unhealthy” because it
has not been ready to take requests, it is shutting down or some other reason. is not ready to take requests, it is shutting down or some other reason.
The client can act accordingly if the response is not received within some time The client can act accordingly if the response is not received within some time
window or the response says unhealthy in it. window or the response says unhealthy in it.
A GRPC service is used as the health checking mechanism for both simple A GRPC service is used as the health checking mechanism for both simple
client-to-server scenario and other systems such as load-balancing. Being a high client-to-server scenario and other control systems such as load-balancing.
Being a high
level service provides some benefits. Firstly, since it is a GRPC service level service provides some benefits. Firstly, since it is a GRPC service
itself, doing a health check is in the same format as a normal rpc. Secondly, 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 it has rich semantics such as per-service health status. Thirdly, as a GRPC
@ -28,8 +29,7 @@ syntax = "proto3";
package grpc.health.v1alpha; package grpc.health.v1alpha;
message HealthCheckRequest { message HealthCheckRequest {
string host = 1; string service = 1;
string service = 2;
} }
message HealthCheckResponse { message HealthCheckResponse {
@ -47,25 +47,22 @@ service Health {
``` ```
A client can query the server’s health status by calling the `Check` method, and A client can query the server’s health status by calling the `Check` method, and
a deadline should be set on the rpc. The client can optionally set the host a deadline should be set on the rpc. The client can optionally set the service
string. The client can optionally set the service name it wants to query for name it wants to query for health status. The suggested format of service name
health status. The suggested format of service name is is `package_names.ServiceName`, such as `grpc.health.v1alpha.Health`.
`grpc.health.v1alpha.Health`.
The server should register all the services for all the hosts manually and set The server should register all the services manually and set
the individual status, including an empty service name and its status. For each the individual status, including an empty service name and its status. For each
request received, if the (host, service_name) pair can be found in the registry, request received, if the service name can be found in the registry,
a response must be sent back with an `OK` status and the status field should be a response must be sent back with an `OK` status and the status field should be
set to `SERVING` or `NOT_SERVING` accordingly. If the service name is not set to `SERVING` or `NOT_SERVING` accordingly. If the service name is not
registered, the server returns a `NOT_FOUND` GRPC status. registered, the server returns a `NOT_FOUND` GRPC status.
It is recommended that the server use an empty string as the default host string It is recommended that the server use an empty string as the key for server’s
and create a (“”, “”) pair as the key for server’s health status as a whole. The health status as a whole. The server can just do exact matching of the
server can just do exact matching of the (host, service_name) pair and does not service name support any kind of wildcard matching. However, the service owner
support any kind of wildcard matching. However, the service owner has the has the freedom to implement more complicated matching semantics that both the
freedom to implement more complicated matching semantics that both the client client and server agree upon.
and server agree upon.
A client can declare the server as unhealthy if the rpc is not finished after A client can declare the server as unhealthy if the rpc is not finished after
some amount of time. The client should be able to handle the case where server some amount of time. The client should be able to handle the case where server

Loading…
Cancel
Save