Documentation ¶
Overview ¶
Package client implementation a full fledged gRPC client for the xDS API used by the xds resolver and balancer implementations.
Index ¶
- type AddLocalityOptions
- type CDSUpdate
- type Client
- func (c *Client) Close()
- func (c *Client) ReportLoad(server string, clusterName string, loadStore lrs.Store) func()
- func (c *Client) WatchCluster(clusterName string, cdsCb func(CDSUpdate, error)) (cancel func())
- func (c *Client) WatchEndpoints(clusterName string, edsCb func(*EDSUpdate, error)) (cancel func())
- func (c *Client) WatchService(serviceName string, callback func(ServiceUpdate, error)) (cancel func())
- type ClusterLoadAssignmentBuilder
- type EDSUpdate
- type Endpoint
- type EndpointHealthStatus
- type Locality
- type Options
- type OverloadDropConfig
- type ServiceUpdate
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AddLocalityOptions ¶
type AddLocalityOptions struct { Health []corepb.HealthStatus Weight []uint32 }
AddLocalityOptions contains options when adding locality to the builder.
type CDSUpdate ¶
type CDSUpdate struct { // ServiceName is the service name corresponding to the clusterName which // is being watched for through CDS. ServiceName string // EnableLRS indicates whether or not load should be reported through LRS. EnableLRS bool }
CDSUpdate contains information from a received CDS response, which is of interest to the registered CDS watcher.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is a full fledged gRPC client which queries a set of discovery APIs (collectively termed as xDS) on a remote management server, to discover various dynamic resources.
A single client object will be shared by the xds resolver and balancer implementations. But the same client can only be shared by the same parent ClientConn.
func (*Client) ReportLoad ¶
ReportLoad sends the load of the given clusterName from loadStore to the given server. If the server is not an empty string, and is different from the xds server, a new ClientConn will be created.
The same options used for creating the Client will be used (including NodeProto, and dial options if necessary).
It returns a function to cancel the load reporting stream. If server is different from xds server, the ClientConn will also be closed.
func (*Client) WatchCluster ¶
WatchCluster uses CDS to discover information about the provided clusterName.
func (*Client) WatchEndpoints ¶
WatchEndpoints uses EDS to discover information about the endpoints in the provided clusterName.
func (*Client) WatchService ¶
func (c *Client) WatchService(serviceName string, callback func(ServiceUpdate, error)) (cancel func())
WatchService uses LDS and RDS protocols to discover information about the provided serviceName.
type ClusterLoadAssignmentBuilder ¶
type ClusterLoadAssignmentBuilder struct {
// contains filtered or unexported fields
}
ClusterLoadAssignmentBuilder builds a ClusterLoadAssignment, aka EDS response.
func NewClusterLoadAssignmentBuilder ¶
func NewClusterLoadAssignmentBuilder(clusterName string, dropPercents []uint32) *ClusterLoadAssignmentBuilder
NewClusterLoadAssignmentBuilder creates a ClusterLoadAssignmentBuilder.
func (*ClusterLoadAssignmentBuilder) AddLocality ¶
func (clab *ClusterLoadAssignmentBuilder) AddLocality(subzone string, weight uint32, priority uint32, addrsWithPort []string, opts *AddLocalityOptions)
AddLocality adds a locality to the builder.
func (*ClusterLoadAssignmentBuilder) Build ¶
func (clab *ClusterLoadAssignmentBuilder) Build() *xdspb.ClusterLoadAssignment
Build builds ClusterLoadAssignment.
type EDSUpdate ¶
type EDSUpdate struct { Drops []OverloadDropConfig Localities []Locality }
EDSUpdate contains an EDS update.
func ParseEDSRespProto ¶
func ParseEDSRespProto(m *xdspb.ClusterLoadAssignment) (*EDSUpdate, error)
ParseEDSRespProto turns EDS response proto message to EDSUpdate.
This is temporarily exported to be used in eds balancer, before it switches to use xds client. TODO: unexport.
func ParseEDSRespProtoForTesting ¶
func ParseEDSRespProtoForTesting(m *xdspb.ClusterLoadAssignment) *EDSUpdate
ParseEDSRespProtoForTesting parses EDS response, and panic if parsing fails. This is used by EDS balancer tests.
TODO: delete this. The EDS balancer tests should build an EDSUpdate directly,
instead of building and parsing a proto message.
type Endpoint ¶
type Endpoint struct { Address string HealthStatus EndpointHealthStatus Weight uint32 }
Endpoint contains information of an endpoint.
type EndpointHealthStatus ¶
type EndpointHealthStatus int32
EndpointHealthStatus represents the health status of an endpoint.
const ( // EndpointHealthStatusUnknown represents HealthStatus UNKNOWN. EndpointHealthStatusUnknown EndpointHealthStatus = iota // EndpointHealthStatusHealthy represents HealthStatus HEALTHY. EndpointHealthStatusHealthy // EndpointHealthStatusUnhealthy represents HealthStatus UNHEALTHY. EndpointHealthStatusUnhealthy // EndpointHealthStatusDraining represents HealthStatus DRAINING. EndpointHealthStatusDraining // EndpointHealthStatusTimeout represents HealthStatus TIMEOUT. EndpointHealthStatusTimeout // EndpointHealthStatusDegraded represents HealthStatus DEGRADED. EndpointHealthStatusDegraded )
type Options ¶
type Options struct { // Config contains a fully populated bootstrap config. It is the // responsibility of the caller to use some sane defaults here if the // bootstrap process returned with certain fields left unspecified. Config bootstrap.Config // DialOpts contains dial options to be used when dialing the xDS server. DialOpts []grpc.DialOption // TargetName is the target of the parent ClientConn. TargetName string }
Options provides all parameters required for the creation of an xDS client.
type OverloadDropConfig ¶
OverloadDropConfig contains the config to drop overloads.
type ServiceUpdate ¶
type ServiceUpdate struct {
Cluster string
}
ServiceUpdate contains update about the service.