Get desktop application:
View/edit binary Protocol Buffers messages
Bidirectional rpc to get a list of servers.
This message should be sent on the first request to the load balancer.
The client stats should be periodically reported to the load balancer based on the duration defined in the InitialLoadBalanceResponse.
This message should be sent on the first response to the client.
Contains the list of servers selected by the load balancer. The client should send requests to these servers in the specified order.
If this field is set, then the client should eagerly enter fallback mode (even if there are existing, healthy connections to backends).
The LoadReporter service.
Report load from server to lb.
This message should be sent on the first request to the gRPC server.
This message should be sent on the first response to the load balancer.
Reports server-wide statistics for load balancing. This should be reported with every response.
A load report for each <tag, user_id> tuple. This could be considered to be a multimap indexed by <tag, user_id>. It is not strictly necessary to aggregate all entries into one entry per <tag, user_id> tuple, although it is preferred to do so.
Used in:
Name of the metric; may be empty.
Number of calls that finished and included this metric.
Sum of metric values across all calls that finished with this metric.
Contains client level statistics that are useful to load balancing. Each count except the timestamp should be reset to zero after reporting the stats.
Used in:
The timestamp of generating the report.
The total number of RPCs that started.
The total number of RPCs that finished.
The total number of RPCs that failed to reach a server except dropped RPCs.
The total number of RPCs that finished and are known to have been received by a server.
The list of dropped calls.
Contains the number of calls finished for a particular load balance token.
Used in:
See Server.load_balance_token.
The total number of RPCs that finished associated with the token.
Used in:
(message has no fields)
Used in:
The name of the load balanced service (e.g., service.googleapis.com). Its length should be less than 256 bytes. The name might include a port number. How to handle the port number is up to the balancer.
Used in:
This interval defines how often the client should send the client stats to the load balancer. Stats should only be reported when the duration is positive.
Used in:
The hostname this load reporter client is requesting load for.
Additional information to disambiguate orphaned load: load that should have gone to this load reporter client, but was not able to be sent since the load reporter client has disconnected. load_key is sent in orphaned load reports; see Load.load_key.
This interval defines how often the server should send load reports to the load balancer.
Used in:
Initial response returns the Load balancer ID. This must be plain text (printable ASCII).
Optional identifier of this implementation of the load reporting server.
Optional server_version should be a value that is modified (and monotonically increased) when changes are made to the server implementation.
Used in:
Standard Google C++ implementation.
Standard Google Java implementation.
Standard Google Go implementation.
Used in:
The (plain text) tag used by the calls covered by this load report. The tag is that part of the load balancer token after removing the load balancer id. Empty is equivalent to non-existent tag.
The user identity authenticated by the calls covered by this load report. Empty is equivalent to no known user_id.
IP address of the client that sent these requests, serialized in network-byte-order. It may either be an IPv4 or IPv6 address.
The number of calls started (since the last report) with the given tag and user_id.
Indicates whether this load report is an in-progress load report in which num_calls_in_progress is the only valid entry. If in_progress_report is not set, num_calls_in_progress will be ignored. If in_progress_report is set, fields other than num_calls_in_progress and orphaned_load will be ignored. TODO(juanlishen): A Load is either an in_progress_report or not. We should make this explicit in hierarchy. From the log, I see in_progress_report_ has a random num_calls_in_progress_ when not set, which might lead to bug when the balancer process the load report.
The number of calls in progress (instantaneously) per load balancer id.
The following values are counts or totals of call statistics that finished with the given tag and user_id.
Calls with status OK.
Calls with status non-OK.
Calls that finished with a status that maps to HTTP 5XX (see googleapis/google/rpc/code.proto). Note that this is a subset of num_calls_finished_with_error.
Totals are from calls that with _and_ without error.
Optional metrics reported for the call(s). Requires that metric_name is unique.
The following two fields are used for reporting orphaned load: load that could not be reported to the originating balancer either since the balancer is no longer connected or because the frontend sent an invalid token. These fields must not be set with normal (unorphaned) load reports.
Load_key is the load_key from the initial_request from the originating balancer.
If true then this load report is for calls that had an invalid token; the user is probably abusing the gRPC protocol. TODO(yankaiz): Rename load_key_unknown.
load_key and balancer_id are included in order to identify orphaned load from different origins.
Used in:
Reports the current utilization of the server (typical range [0.0 - 1.0]).
The total rate of calls handled by this server (including errors).
The total rate of error responses sent by this server.
Used in:
The load_key from the initial_request from the originating balancer.
The unique ID generated by LoadReporter to identify balancers. Here it distinguishes orphaned load with a same load_key.
Contains server information. When the drop field is not true, use the other fields.
Used in:
A resolved address for the server, serialized in network-byte-order. It may either be an IPv4 or IPv6 address.
A resolved port number for the server.
An opaque but printable token for load reporting. The client must include the token of the picked server into the initial metadata when it starts a call to that server. The token is used by the server to verify the request and to allow the server to report load to the gRPC LB system. The token is also used in client stats for reporting dropped calls. Its length can be variable but must be less than 50 bytes.
Indicates whether this particular request should be dropped by the client. If the request is dropped, there will be a corresponding entry in ClientStats.calls_finished_with_drop.
Used in:
Contains a list of servers selected by the load balancer. The list will be updated when server resolutions change or as needed to balance load across more servers. The client should consume the server list in order unless instructed otherwise via the client_config.