Documentation ¶
Index ¶
- Constants
- Variables
- func RegisterLoadReportingServiceServer(s grpc.ServiceRegistrar, srv LoadReportingServiceServer)
- type LoadReportingServiceClient
- type LoadReportingServiceServer
- type LoadReportingService_StreamLoadStatsClient
- type LoadReportingService_StreamLoadStatsServer
- type LoadStatsRequest
- func (*LoadStatsRequest) Descriptor() ([]byte, []int)deprecated
- func (x *LoadStatsRequest) GetClusterStats() []*endpoint.ClusterStats
- func (x *LoadStatsRequest) GetNode() *core.Node
- func (*LoadStatsRequest) ProtoMessage()
- func (x *LoadStatsRequest) ProtoReflect() protoreflect.Message
- func (x *LoadStatsRequest) Reset()
- func (x *LoadStatsRequest) String() string
- type LoadStatsResponse
- func (*LoadStatsResponse) Descriptor() ([]byte, []int)deprecated
- func (x *LoadStatsResponse) GetClusters() []string
- func (x *LoadStatsResponse) GetLoadReportingInterval() *durationpb.Duration
- func (x *LoadStatsResponse) GetReportEndpointGranularity() bool
- func (x *LoadStatsResponse) GetSendAllClusters() bool
- func (*LoadStatsResponse) ProtoMessage()
- func (x *LoadStatsResponse) ProtoReflect() protoreflect.Message
- func (x *LoadStatsResponse) Reset()
- func (x *LoadStatsResponse) String() string
- type UnimplementedLoadReportingServiceServer
- type UnsafeLoadReportingServiceServer
Constants ¶
const (
LoadReportingService_StreamLoadStats_FullMethodName = "/envoy.service.load_stats.v2.LoadReportingService/StreamLoadStats"
)
Variables ¶
var File_envoy_service_load_stats_v2_lrs_proto protoreflect.FileDescriptor
var LoadReportingService_ServiceDesc = grpc.ServiceDesc{ ServiceName: "envoy.service.load_stats.v2.LoadReportingService", HandlerType: (*LoadReportingServiceServer)(nil), Methods: []grpc.MethodDesc{}, Streams: []grpc.StreamDesc{ { StreamName: "StreamLoadStats", Handler: _LoadReportingService_StreamLoadStats_Handler, ServerStreams: true, ClientStreams: true, }, }, Metadata: "envoy/service/load_stats/v2/lrs.proto", }
LoadReportingService_ServiceDesc is the grpc.ServiceDesc for LoadReportingService service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)
Functions ¶
func RegisterLoadReportingServiceServer ¶
func RegisterLoadReportingServiceServer(s grpc.ServiceRegistrar, srv LoadReportingServiceServer)
Types ¶
type LoadReportingServiceClient ¶
type LoadReportingServiceClient interface { // Advanced API to allow for multi-dimensional load balancing by remote // server. For receiving LB assignments, the steps are: // 1, The management server is configured with per cluster/zone/load metric // // capacity configuration. The capacity configuration definition is // outside of the scope of this document. // 2. Envoy issues a standard {Stream,Fetch}Endpoints request for the clusters // to balance. // // Independently, Envoy will initiate a StreamLoadStats bidi stream with a // management server: // 1. Once a connection establishes, the management server publishes a // LoadStatsResponse for all clusters it is interested in learning load // stats about. // 2. For each cluster, Envoy load balances incoming traffic to upstream hosts // based on per-zone weights and/or per-instance weights (if specified) // based on intra-zone LbPolicy. This information comes from the above // {Stream,Fetch}Endpoints. // 3. When upstream hosts reply, they optionally add header <define header // name> with ASCII representation of EndpointLoadMetricStats. // 4. Envoy aggregates load reports over the period of time given to it in // LoadStatsResponse.load_reporting_interval. This includes aggregation // stats Envoy maintains by itself (total_requests, rpc_errors etc.) as // well as load metrics from upstream hosts. // 5. When the timer of load_reporting_interval expires, Envoy sends new // LoadStatsRequest filled with load reports for each cluster. // 6. The management server uses the load reports from all reported Envoys // from around the world, computes global assignment and prepares traffic // assignment destined for each zone Envoys are located in. Goto 2. StreamLoadStats(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[LoadStatsRequest, LoadStatsResponse], error) }
LoadReportingServiceClient is the client API for LoadReportingService service.
For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
func NewLoadReportingServiceClient ¶
func NewLoadReportingServiceClient(cc grpc.ClientConnInterface) LoadReportingServiceClient
type LoadReportingServiceServer ¶
type LoadReportingServiceServer interface { // Advanced API to allow for multi-dimensional load balancing by remote // server. For receiving LB assignments, the steps are: // 1, The management server is configured with per cluster/zone/load metric // // capacity configuration. The capacity configuration definition is // outside of the scope of this document. // 2. Envoy issues a standard {Stream,Fetch}Endpoints request for the clusters // to balance. // // Independently, Envoy will initiate a StreamLoadStats bidi stream with a // management server: // 1. Once a connection establishes, the management server publishes a // LoadStatsResponse for all clusters it is interested in learning load // stats about. // 2. For each cluster, Envoy load balances incoming traffic to upstream hosts // based on per-zone weights and/or per-instance weights (if specified) // based on intra-zone LbPolicy. This information comes from the above // {Stream,Fetch}Endpoints. // 3. When upstream hosts reply, they optionally add header <define header // name> with ASCII representation of EndpointLoadMetricStats. // 4. Envoy aggregates load reports over the period of time given to it in // LoadStatsResponse.load_reporting_interval. This includes aggregation // stats Envoy maintains by itself (total_requests, rpc_errors etc.) as // well as load metrics from upstream hosts. // 5. When the timer of load_reporting_interval expires, Envoy sends new // LoadStatsRequest filled with load reports for each cluster. // 6. The management server uses the load reports from all reported Envoys // from around the world, computes global assignment and prepares traffic // assignment destined for each zone Envoys are located in. Goto 2. StreamLoadStats(grpc.BidiStreamingServer[LoadStatsRequest, LoadStatsResponse]) error // contains filtered or unexported methods }
LoadReportingServiceServer is the server API for LoadReportingService service. All implementations must embed UnimplementedLoadReportingServiceServer for forward compatibility.
type LoadReportingService_StreamLoadStatsClient ¶
type LoadReportingService_StreamLoadStatsClient = grpc.BidiStreamingClient[LoadStatsRequest, LoadStatsResponse]
This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type LoadReportingService_StreamLoadStatsServer ¶
type LoadReportingService_StreamLoadStatsServer = grpc.BidiStreamingServer[LoadStatsRequest, LoadStatsResponse]
This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type LoadStatsRequest ¶
type LoadStatsRequest struct { // Node identifier for Envoy instance. Node *core.Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // A list of load stats to report. ClusterStats []*endpoint.ClusterStats `protobuf:"bytes,2,rep,name=cluster_stats,json=clusterStats,proto3" json:"cluster_stats,omitempty"` // contains filtered or unexported fields }
A load report Envoy sends to the management server. [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
func (*LoadStatsRequest) Descriptor
deprecated
func (*LoadStatsRequest) Descriptor() ([]byte, []int)
Deprecated: Use LoadStatsRequest.ProtoReflect.Descriptor instead.
func (*LoadStatsRequest) GetClusterStats ¶
func (x *LoadStatsRequest) GetClusterStats() []*endpoint.ClusterStats
func (*LoadStatsRequest) GetNode ¶
func (x *LoadStatsRequest) GetNode() *core.Node
func (*LoadStatsRequest) ProtoMessage ¶
func (*LoadStatsRequest) ProtoMessage()
func (*LoadStatsRequest) ProtoReflect ¶
func (x *LoadStatsRequest) ProtoReflect() protoreflect.Message
func (*LoadStatsRequest) Reset ¶
func (x *LoadStatsRequest) Reset()
func (*LoadStatsRequest) String ¶
func (x *LoadStatsRequest) String() string
type LoadStatsResponse ¶
type LoadStatsResponse struct { // Clusters to report stats for. // Not populated if *send_all_clusters* is true. Clusters []string `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` // If true, the client should send all clusters it knows about. // Only clients that advertise the "envoy.lrs.supports_send_all_clusters" capability in their // :ref:`client_features<envoy_api_field_core.Node.client_features>` field will honor this field. SendAllClusters bool `protobuf:"varint,4,opt,name=send_all_clusters,json=sendAllClusters,proto3" json:"send_all_clusters,omitempty"` // The minimum interval of time to collect stats over. This is only a minimum for two reasons: // 1. There may be some delay from when the timer fires until stats sampling occurs. // 2. For clusters that were already feature in the previous *LoadStatsResponse*, any traffic // that is observed in between the corresponding previous *LoadStatsRequest* and this // *LoadStatsResponse* will also be accumulated and billed to the cluster. This avoids a period // of inobservability that might otherwise exists between the messages. New clusters are not // subject to this consideration. LoadReportingInterval *durationpb.Duration `` /* 126-byte string literal not displayed */ // Set to *true* if the management server supports endpoint granularity // report. ReportEndpointGranularity bool `` /* 139-byte string literal not displayed */ // contains filtered or unexported fields }
The management server sends envoy a LoadStatsResponse with all clusters it is interested in learning load stats about. [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs.
func (*LoadStatsResponse) Descriptor
deprecated
func (*LoadStatsResponse) Descriptor() ([]byte, []int)
Deprecated: Use LoadStatsResponse.ProtoReflect.Descriptor instead.
func (*LoadStatsResponse) GetClusters ¶
func (x *LoadStatsResponse) GetClusters() []string
func (*LoadStatsResponse) GetLoadReportingInterval ¶
func (x *LoadStatsResponse) GetLoadReportingInterval() *durationpb.Duration
func (*LoadStatsResponse) GetReportEndpointGranularity ¶
func (x *LoadStatsResponse) GetReportEndpointGranularity() bool
func (*LoadStatsResponse) GetSendAllClusters ¶
func (x *LoadStatsResponse) GetSendAllClusters() bool
func (*LoadStatsResponse) ProtoMessage ¶
func (*LoadStatsResponse) ProtoMessage()
func (*LoadStatsResponse) ProtoReflect ¶
func (x *LoadStatsResponse) ProtoReflect() protoreflect.Message
func (*LoadStatsResponse) Reset ¶
func (x *LoadStatsResponse) Reset()
func (*LoadStatsResponse) String ¶
func (x *LoadStatsResponse) String() string
type UnimplementedLoadReportingServiceServer ¶
type UnimplementedLoadReportingServiceServer struct{}
UnimplementedLoadReportingServiceServer must be embedded to have forward compatible implementations.
NOTE: this should be embedded by value instead of pointer to avoid a nil pointer dereference when methods are called.
func (UnimplementedLoadReportingServiceServer) StreamLoadStats ¶
func (UnimplementedLoadReportingServiceServer) StreamLoadStats(grpc.BidiStreamingServer[LoadStatsRequest, LoadStatsResponse]) error
type UnsafeLoadReportingServiceServer ¶
type UnsafeLoadReportingServiceServer interface {
// contains filtered or unexported methods
}
UnsafeLoadReportingServiceServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to LoadReportingServiceServer will result in compilation errors.