grpc: Index | Files | Directories

package xds

import ""

Package xds contains an implementation of the xDS suite of protocols, to be used by gRPC client and server applications.

On the client-side, users simply need to import this package to get all xDS functionality. On the server-side, users need to use the GRPCServer type exported by this package instead of the regular grpc.Server.

See for example.


Package Files

go113.go server.go xds.go

type GRPCServer Uses

type GRPCServer struct {
    // contains filtered or unexported fields

GRPCServer wraps a gRPC server and provides server-side xDS functionality, by communication with a management server using xDS APIs. It implements the grpc.ServiceRegistrar interface and can be passed to service registration functions in IDL generated code.


Notice: This type is EXPERIMENTAL and may be changed or removed in a later release.

func NewGRPCServer Uses

func NewGRPCServer(opts ...grpc.ServerOption) *GRPCServer

NewGRPCServer creates an xDS-enabled gRPC server using the passed in opts. The underlying gRPC server has no service registered and has not started to accept requests yet.


Notice: This API is EXPERIMENTAL and may be changed or removed in a later release.

func (*GRPCServer) GracefulStop Uses

func (s *GRPCServer) GracefulStop()

GracefulStop stops the underlying gRPC server gracefully. It stops the server from accepting new connections and RPCs and blocks until all the pending RPCs are finished.

func (*GRPCServer) RegisterService Uses

func (s *GRPCServer) RegisterService(sd *grpc.ServiceDesc, ss interface{})

RegisterService registers a service and its implementation to the underlying gRPC server. It is called from the IDL generated code. This must be called before invoking Serve.

func (*GRPCServer) Serve Uses

func (s *GRPCServer) Serve(lis net.Listener) error

Serve gets the underlying gRPC server to accept incoming connections on the listener lis, which is expected to be listening on a TCP port.

A connection to the management server, to receive xDS configuration, is initiated here.

Serve will return a non-nil error unless Stop or GracefulStop is called.

func (*GRPCServer) Stop Uses

func (s *GRPCServer) Stop()

Stop stops the underlying gRPC server. It immediately closes all open connections. It cancels all active RPCs on the server side and the corresponding pending RPCs on the client side will get notified by connection errors.


internalPackage internal contains functions/structs shared by xds balancers/resolvers.
internal/balancerPackage balancer installs all the xds balancers.
internal/balancer/balancergroupPackage balancergroup implements a utility struct to bind multiple balancers into one balancer.
internal/balancer/cdsbalancerPackage cdsbalancer implements a balancer to handle CDS responses.
internal/balancer/clustermanagerPackage clustermanager implements the cluster manager LB policy for xds.
internal/balancer/edsbalancerPackage edsbalancer contains EDS balancer implementation.
internal/balancer/lrsPackage lrs implements load reporting balancer for xds.
internal/balancer/orcaPackage orca implements Open Request Cost Aggregation.
internal/balancer/priorityPackage priority implements the priority balancer.
internal/balancer/weightedtargetPackage weightedtarget implements the weighted_target balancer.
internal/balancer/weightedtarget/weightedaggregatorPackage weightedaggregator implements state aggregator for weighted_target balancer.
internal/clientPackage client implementation a full fledged gRPC client for the xDS API used by the xds resolver and balancer implementations.
internal/client/bootstrapPackage bootstrap provides the functionality to initialize certain aspects of an xDS client by reading a bootstrap file.
internal/client/loadPackage load provides functionality to record and maintain load data.
internal/client/v2Package v2 provides xDS v2 transport protocol specific functionality.
internal/client/v3Package v3 provides xDS v3 transport protocol specific functionality.
internal/envPackage env acts a single source of definition for all environment variables related to the xDS implementation in gRPC.
internal/resolverPackage resolver implements the xds resolver, that does LDS and RDS to find the cluster to use.
internal/testutilsPackage testutils provides utility types, for use in xds tests.
internal/testutils/e2ePackage e2e provides utilities for end2end testing of xDS functionality.
internal/testutils/fakeclientPackage fakeclient provides a fake implementation of an xDS client.
internal/testutils/fakeserverPackage fakeserver provides a fake implementation of the management server.
internal/versionPackage version defines constants to distinguish between supported xDS API versions.

Package xds imports 22 packages (graph) and is imported by 2 packages. Updated 2021-01-16. Refresh now. Tools for package owners.