public abstract class LoadReportingService extends Object implements com.google.protobuf.Service
envoy.service.load_stats.v4alpha.LoadReportingService| Modifier and Type | Class and Description |
|---|---|
static interface |
LoadReportingService.BlockingInterface |
static interface |
LoadReportingService.Interface |
static class |
LoadReportingService.Stub |
| Modifier | Constructor and Description |
|---|---|
protected |
LoadReportingService() |
| Modifier and Type | Method and Description |
|---|---|
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) |
static com.google.protobuf.Descriptors.ServiceDescriptor |
getDescriptor() |
com.google.protobuf.Descriptors.ServiceDescriptor |
getDescriptorForType() |
com.google.protobuf.Message |
getRequestPrototype(com.google.protobuf.Descriptors.MethodDescriptor method) |
com.google.protobuf.Message |
getResponsePrototype(com.google.protobuf.Descriptors.MethodDescriptor method) |
static LoadReportingService.BlockingInterface |
newBlockingStub(com.google.protobuf.BlockingRpcChannel channel) |
static com.google.protobuf.BlockingService |
newReflectiveBlockingService(LoadReportingService.BlockingInterface impl) |
static com.google.protobuf.Service |
newReflectiveService(LoadReportingService.Interface impl) |
static LoadReportingService.Stub |
newStub(com.google.protobuf.RpcChannel channel) |
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.
|
public static com.google.protobuf.Service newReflectiveService(LoadReportingService.Interface impl)
public static com.google.protobuf.BlockingService newReflectiveBlockingService(LoadReportingService.BlockingInterface impl)
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.v4alpha.LoadStatsRequest) returns (stream .envoy.service.load_stats.v4alpha.LoadStatsResponse);public static final com.google.protobuf.Descriptors.ServiceDescriptor getDescriptor()
public final com.google.protobuf.Descriptors.ServiceDescriptor getDescriptorForType()
getDescriptorForType in interface com.google.protobuf.Servicepublic 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)
callMethod in interface com.google.protobuf.Servicepublic final com.google.protobuf.Message getRequestPrototype(com.google.protobuf.Descriptors.MethodDescriptor method)
getRequestPrototype in interface com.google.protobuf.Servicepublic final com.google.protobuf.Message getResponsePrototype(com.google.protobuf.Descriptors.MethodDescriptor method)
getResponsePrototype in interface com.google.protobuf.Servicepublic static LoadReportingService.Stub newStub(com.google.protobuf.RpcChannel channel)
public static LoadReportingService.BlockingInterface newBlockingStub(com.google.protobuf.BlockingRpcChannel channel)
Copyright © 2018–2021 The Envoy Project. All rights reserved.