Class LoadReportingService
- java.lang.Object
-
- io.envoyproxy.envoy.service.load_stats.v3.LoadReportingService
-
- All Implemented Interfaces:
com.google.protobuf.Service
- Direct Known Subclasses:
LoadReportingService.Stub
public abstract class LoadReportingService extends Object implements com.google.protobuf.Service
Protobuf serviceenvoy.service.load_stats.v3.LoadReportingService
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceLoadReportingService.BlockingInterfacestatic interfaceLoadReportingService.Interfacestatic classLoadReportingService.Stub
-
Constructor Summary
Constructors Modifier Constructor Description protectedLoadReportingService()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidcallMethod(com.google.protobuf.Descriptors.MethodDescriptor method, com.google.protobuf.RpcController controller, com.google.protobuf.Message request, com.google.protobuf.RpcCallback<com.google.protobuf.Message> done)static com.google.protobuf.Descriptors.ServiceDescriptorgetDescriptor()com.google.protobuf.Descriptors.ServiceDescriptorgetDescriptorForType()com.google.protobuf.MessagegetRequestPrototype(com.google.protobuf.Descriptors.MethodDescriptor method)com.google.protobuf.MessagegetResponsePrototype(com.google.protobuf.Descriptors.MethodDescriptor method)static LoadReportingService.BlockingInterfacenewBlockingStub(com.google.protobuf.BlockingRpcChannel channel)static com.google.protobuf.BlockingServicenewReflectiveBlockingService(LoadReportingService.BlockingInterface impl)static com.google.protobuf.ServicenewReflectiveService(LoadReportingService.Interface impl)static LoadReportingService.StubnewStub(com.google.protobuf.RpcChannel channel)abstract voidstreamLoadStats(com.google.protobuf.RpcController controller, LoadStatsRequest request, com.google.protobuf.RpcCallback<LoadStatsResponse> done)Advanced API to allow for multi-dimensional load balancing by remote server.
-
-
-
Method Detail
-
newReflectiveService
public static com.google.protobuf.Service newReflectiveService(LoadReportingService.Interface impl)
-
newReflectiveBlockingService
public static com.google.protobuf.BlockingService newReflectiveBlockingService(LoadReportingService.BlockingInterface impl)
-
streamLoadStats
public abstract void streamLoadStats(com.google.protobuf.RpcController controller, LoadStatsRequest request, com.google.protobuf.RpcCallback<LoadStatsResponse> done)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.rpc StreamLoadStats(stream .envoy.service.load_stats.v3.LoadStatsRequest) returns (stream .envoy.service.load_stats.v3.LoadStatsResponse);
-
getDescriptor
public static final com.google.protobuf.Descriptors.ServiceDescriptor getDescriptor()
-
getDescriptorForType
public final com.google.protobuf.Descriptors.ServiceDescriptor getDescriptorForType()
- Specified by:
getDescriptorForTypein interfacecom.google.protobuf.Service
-
callMethod
public final void callMethod(com.google.protobuf.Descriptors.MethodDescriptor method, com.google.protobuf.RpcController controller, com.google.protobuf.Message request, com.google.protobuf.RpcCallback<com.google.protobuf.Message> done)- Specified by:
callMethodin interfacecom.google.protobuf.Service
-
getRequestPrototype
public final com.google.protobuf.Message getRequestPrototype(com.google.protobuf.Descriptors.MethodDescriptor method)
- Specified by:
getRequestPrototypein interfacecom.google.protobuf.Service
-
getResponsePrototype
public final com.google.protobuf.Message getResponsePrototype(com.google.protobuf.Descriptors.MethodDescriptor method)
- Specified by:
getResponsePrototypein interfacecom.google.protobuf.Service
-
newStub
public static LoadReportingService.Stub newStub(com.google.protobuf.RpcChannel channel)
-
newBlockingStub
public static LoadReportingService.BlockingInterface newBlockingStub(com.google.protobuf.BlockingRpcChannel channel)
-
-