Documentation ¶
Index ¶
- Constants
- Variables
- type Algorithm
- type BalancerConfig
- type Config
- type GrpcConnectionPolicy
- type Option
- func WithBalancingConfig(balancingConfig BalancerConfig) Option
- func WithCertificate(certificate *x509.Certificate) Option
- func WithCredentials(credentials credentials.Credentials) Option
- func WithDatabase(database string) Option
- func WithDialTimeout(timeout time.Duration) Option
- func WithDiscoveryInterval(discoveryInterval time.Duration) Option
- func WithEndpoint(endpoint string) Option
- func WithFastDial(fastDial bool) Option
- func WithGrpcConnectionPolicy(grpcConnectionPolicy GrpcConnectionPolicy) Option
- func WithGrpcConnectionTTL(ttl time.Duration) Option
- func WithNetDial(netDial func(context.Context, string) (net.Conn, error)) Option
- func WithOperationCancelAfter(operationCancelAfter time.Duration) Option
- func WithOperationTimeout(operationTimeout time.Duration) Option
- func WithRequestTimeout(requestTimeout time.Duration) Option
- func WithRequestsType(requestsType string) Option
- func WithSecure(secure bool) Option
- func WithStreamTimeout(streamTimeout time.Duration) Option
- func WithTrace(trace trace.Driver) Option
Constants ¶
View Source
const ( BalancingAlgorithmRandomChoice = iota BalancingAlgorithmRoundRobin DefaultBalancingAlgorithm = BalancingAlgorithmRandomChoice )
View Source
const (
DefaultDiscoveryInterval = time.Minute
)
Variables ¶
View Source
var ( // DefaultKeepaliveInterval contains default duration between grpc keepalive DefaultKeepaliveInterval = 10 * time.Second MinKeepaliveInterval = 10 * time.Second DefaultGrpcConnectionTTL = 6 * time.Minute DefaultGRPCMsgSize = 64 * 1024 * 1024 // 64MB )
View Source
var (
DefaultBalancer = BalancerConfig{Algorithm: DefaultBalancingAlgorithm, PreferLocal: true}
)
View Source
var ( DefaultGrpcConnectionPolicy = GrpcConnectionPolicy{ ClientParameters: keepalive.ClientParameters{ Time: DefaultKeepaliveInterval, Timeout: MinKeepaliveInterval, PermitWithoutStream: true, }, TTL: DefaultGrpcConnectionTTL, } )
Functions ¶
This section is empty.
Types ¶
type BalancerConfig ¶
type BalancerConfig struct { // Algorithm define balancing algorithm Algorithm Algorithm // PreferLocal adds endpoint selection logic when local endpoints // are always used first. // When no alive local endpoints left other endpoints will be used. // // NOTE: some balancing methods (such as p2c) also may use knowledge of // endpoint's locality. Difference is that with PreferLocal local // endpoints selected separately from others. That is, if there at least // one local endpoint it will be used regardless of its performance // indicators. // // NOTE: currently driver (and even ydb itself) does not track load factor // of each endpoint properly. Enabling this Option may lead to the // situation, when all but one nodes in local datacenter become inactive // and all clients will overload this single instance very quickly. That // is, currently this Option may be called as experimental. // You have been warned. PreferLocal bool }
type Config ¶
type Config interface { // Endpoint is a required starting endpoint for connect Endpoint() string // Database is a required database name. Database() string // Secure() is an flag for secure connection Secure() bool // Credentials is an ydb client credentials. // In most cases Credentials are required. Credentials() credentials.Credentials // Trace contains driver tracing options. Trace() trace.Driver // RequestTimeout is the maximum amount of time a Call() will wait for an // operation to complete. // If RequestTimeout is zero then no timeout is used. RequestTimeout() time.Duration // StreamTimeout is the maximum amount of time a StreamRead() will wait for // an operation to complete. // If StreamTimeout is zero then no timeout is used. StreamTimeout() time.Duration // OperationTimeout is the maximum amount of time a YDB server will process // an operation. After timeout exceeds YDB will try to cancel operation and // regardless of the cancellation appropriate error will be returned to // the client. // If OperationTimeout is zero then no timeout is used. OperationTimeout() time.Duration // OperationCancelAfter is the maximum amount of time a YDB server will process an // operation. After timeout exceeds YDB will try to cancel operation and if // it succeeds appropriate error will be returned to the client; otherwise // processing will be continued. // If OperationCancelAfter is zero then no timeout is used. OperationCancelAfter() time.Duration // DiscoveryInterval is the frequency of background tasks of ydb endpoints // discovery. // If DiscoveryInterval is zero then the DefaultDiscoveryInterval is used. // If DiscoveryInterval is negative, then no background discovery prepared. DiscoveryInterval() time.Duration // GrpcConnectionPolicy define lifecycle behavior of grpc connection // By default GrpcConnectionPolicy is sets to DefaultGrpcConnectionPolicy GrpcConnectionPolicy() GrpcConnectionPolicy // BalancingConfig is an optional configuration related to selected // BalancingMethod. That is, some balancing methods allow to be configured. BalancingConfig() BalancerConfig // RequestsType set an additional types hint to all requests. // It is needed only for debug purposes and advanced cases. RequestsType() string // FastDial will make dialer return Driver as soon as 1st connection succeeds. // NB: it may be not the fastest node to serve requests. FastDial() bool // DialTimeout is the maximum amount of time a dial will wait for a connect to // complete. // If DialTimeout is zero then no timeout is used. DialTimeout() time.Duration // TLSConfig specifies the TLS configuration to use for tls client. // If TLSConfig is zero then connections are insecure. TLSConfig() *tls.Config // NetDial is an optional function that may replace default network dialing // function such as net.Dial("tcp"). NetDial() func(context.Context, string) (net.Conn, error) }
Config contains driver configuration options.
type GrpcConnectionPolicy ¶
type GrpcConnectionPolicy struct { keepalive.ClientParameters // TTL is a duration for automatically close idle connections // Zero TTL will disable automatically closing of idle connections // By default TTL is sets to DefaultGrpcConnectionTTL TTL time.Duration }
type Option ¶
type Option func(c *config)
func WithBalancingConfig ¶
func WithBalancingConfig(balancingConfig BalancerConfig) Option
func WithCertificate ¶
func WithCertificate(certificate *x509.Certificate) Option
func WithCredentials ¶
func WithCredentials(credentials credentials.Credentials) Option
func WithDatabase ¶
func WithDialTimeout ¶
func WithDiscoveryInterval ¶
func WithEndpoint ¶
func WithFastDial ¶
func WithGrpcConnectionPolicy ¶
func WithGrpcConnectionPolicy(grpcConnectionPolicy GrpcConnectionPolicy) Option
func WithGrpcConnectionTTL ¶
func WithOperationTimeout ¶
func WithRequestTimeout ¶
func WithRequestsType ¶
func WithSecure ¶
func WithStreamTimeout ¶
Click to show internal directories.
Click to hide internal directories.