client-rust/proto/resource_usage_agent.proto

51 lines
1.5 KiB
Protocol Buffer

syntax = "proto3";
package resource_usage_agent;
import "gogoproto/gogo.proto";
import "rustproto.proto";
option (gogoproto.marshaler_all) = true;
option (gogoproto.sizer_all) = true;
option (gogoproto.unmarshaler_all) = true;
option (rustproto.lite_runtime_all) = true;
option java_package = "org.tikv.kvproto";
// ResourceUsageAgent is the service for storing resource usage records.
service ResourceUsageAgent {
// Report the resource usage records. By default, the records with the same
// resource group tag will be batched by minute.
rpc Report(stream ResourceUsageRecord) returns (EmptyResponse) {}
}
// TiKV implements ResourceMeteringPubSub service for clients to subscribe to resource metering records.
service ResourceMeteringPubSub {
// Clients subscribe to resource metering records through this RPC, and TiKV periodically (e.g. per minute)
// publishes resource metering records to clients via gRPC stream.
rpc Subscribe(ResourceMeteringRequest) returns (stream ResourceUsageRecord) {}
}
message ResourceMeteringRequest {}
message EmptyResponse {}
message ResourceUsageRecord {
oneof record_oneof {
GroupTagRecord record = 1;
}
}
// GroupTagRecord is a set of resource usage data grouped by resource_group_tag.
message GroupTagRecord {
bytes resource_group_tag = 1;
repeated GroupTagRecordItem items = 2;
}
message GroupTagRecordItem {
uint64 timestamp_sec = 1;
uint32 cpu_time_ms = 2;
uint32 read_keys = 3;
uint32 write_keys = 4;
}