grpc health check

1837 단어 grpc
Health checks는 서버가 rpc 요청을 처리할 수 있는지 검사하는 데 사용됩니다.클라이언트와 서버의 운행 상황 검사는 점대점이나 일부 제어 시스템을 통해 진행할 수 있다.서버가 요청을 받아들일 준비가 되지 않았거나 닫고 있거나 다른 이유가 있을 때 "unhealthy"라고 대답합니다.만약 일정 시간 내에 응답을 받지 못하거나 건강하지 않다고 응답하면 클라이언트는 상응하는 조치를 취할 수 있다.
GRPC 서비스는 간단한 클라이언트에서 서버 시나리오와 다른 제어 시스템(예를 들어 부하 균형)에 대한 상태 점검 메커니즘으로 사용할 수 있다.grpc는 고급 서비스로서 다음과 같은 장점이 있다. 첫째, 그 자체가 GRPC 서비스이기 때문에 건강 검사를 하는 형식은 일반 rpc와 같다.둘째, 모든 서비스의 건강 상태와 같은 풍부한 의미를 가진다.셋째, GRPC 서비스로서 it is able reuse all the existing billing,quota infrastructure이기 때문에 서버는 운행 상황 검사 서비스의 접근을 완전히 제어할 수 있다.

서비스 정의


서버 측은 다음과 같은 proto를 정의합니다.
syntax = "proto3";

package grpc.health.v1;

message HealthCheckRequest {
  string service = 1;
}

message HealthCheckResponse {
  enum ServingStatus {
    UNKNOWN = 0;
    SERVING = 1;
    NOT_SERVING = 2;
  }
  ServingStatus status = 1;
}

service Health {
  rpc Check(HealthCheckRequest) returns (HealthCheckResponse);

  rpc Watch(HealthCheckRequest) returns (stream HealthCheckResponse);
}

클라이언트는 Check 방법을 호출하여 서버의 운행 상황을 조회할 수 있으며, 이 rpc에 deadline을 설정해야 합니다.클라이언트는 조회할 건강 상태를 설정할 서비스 이름을 스스로 선택할 수 있습니다.제안된 서비스 이름 형식은 package_names.ServiceName(예:grpc.health.v1.Health.
서버는 모든 서비스를 수동으로 등록하고 빈 서비스 이름과 상태를 포함한 단독 상태를 설정해야 한다.받은 모든 요청에 대해 등록표에서 서비스 이름을 찾을 수 있다면 OK 상태(200)로 응답을 전송하고 status 필드를 SERVING 또는 NOT_로 설정해야 합니다SERVING.서비스 이름이 등록되지 않으면 서버가 NOT_ 로 돌아갑니다.FOUND GRPC 상태.
서버는 클라이언트가 특정 서비스에 흥미가 없을 때 빈 요청으로 서버의 상태를 조회할 수 있도록 빈 문자열을 서버의 전체 운행 상황의 키로 사용해야 한다.서버는 어댑터 없이 서비스 이름을 정확하게 일치시킬 수 있습니다.그러나 서비스 소유자는 클라이언트와 서버가 모두 확인하는 더욱 복잡한 일치 의미를 자유롭게 실현할 수 있다.
만약 rpc가 일정 시간 후에 완성되지 않으면 클라이언트는 서버를 비정상으로 성명할 수 있습니다.클라이언트는 서버가 실행 중인 서비스가 없는 상황을 처리할 수 있어야 한다.
클라이언트는 Watch 방법을 호출하여 흐름 건강 검사를 수행할 수 있습니다.서버는 현재 서비스 상태를 표시하는 메시지를 즉시 보낼 것입니다.그 다음에 서비스의 서비스 상태가 바뀌면 새로운 메시지를 보냅니다.

좋은 웹페이지 즐겨찾기