d2

package
v2.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 12, 2024 License: BSD-2-Clause Imports: 16 Imported by: 0

Documentation

Overview

This file is largely a copy of https://github.com/prometheus/prometheus/blob/master/util/treecache/treecache.go, minus the external Prometheus dependencies. I will try my bet to keep these up to date if any changes are made to the original file

Index

Constants

View Source
const DefaultInitialUriWatchTimeout = 10 * time.Second

Variables

Functions

func ClustersPath

func ClustersPath(cluster string) string

func EnableD2Logging

func EnableD2Logging()

func ServicesPath

func ServicesPath(service string) string

func UrisPath

func UrisPath(clusterName string) string

Types

type Client

type Client struct {
	Conn *zk.Conn
	// During the initial listing of the /d2/uris node for a new cluster, this duration specifies how long to for the
	// first host to show up. If the /d2/services node exists for a service, it is impossible to know whether or not a
	// host will ever show up in the /d2/uris node for that service, which is why this timeout is provided.
	// A positive value will be used as-is, a 0 value will default to DefaultInitialUriWatchTimeout and a negative value
	// disables the timeout altogether
	InitialZkWatchTimeout time.Duration
	// contains filtered or unexported fields
}

func (*Client) ResolveHostnameAndContextForQuery

func (c *Client) ResolveHostnameAndContextForQuery(rootResource string, _ *url.URL) (*url.URL, error)

func (*Client) SingleServiceClient

func (c *Client) SingleServiceClient(serviceName string) *SingleServiceClient

SingleServiceClient will always return URIs from the given serviceName instead of getting them from the service specified in resourceBaseName in ResolveHostnameAndContextForQuery. Some services announce to special D2 cluster instead of the resource name (i.e. by default, the service name is equal to the resource name).

type Cluster

type Cluster struct {
	ClusterName         string `json:"clusterName"`
	PartitionProperties struct {
		HashAlgorithm     string `json:"hashAlgorithm"`
		PartitionCount    int    `json:"partitionCount"`
		PartitionKeyRegex string `json:"partitionKeyRegex"`
		PartitionType     string `json:"partitionType"`
	} `json:"partitionProperties"`
}

type Service

type Service struct {
	Path                        string
	ServiceName                 string   `json:"serviceName"`
	ClusterName                 string   `json:"clusterName"`
	PrioritizedSchemes          []string `json:"prioritizedSchemes"`
	SslSessionValidationStrings []string `json:"sslSessionValidationStrings"`
}

type SingleServiceClient

type SingleServiceClient struct {
	// contains filtered or unexported fields
}

func (*SingleServiceClient) ResolveHostnameAndContextForQuery

func (c *SingleServiceClient) ResolveHostnameAndContextForQuery(_ string, query *url.URL) (*url.URL, error)

type TreeCache

type TreeCache struct {
	// contains filtered or unexported fields
}

A TreeCache keeps data from all children of a Zookeeper path locally cached and updated according to received events.

func NewTreeCache

func NewTreeCache(conn *zk.Conn, path string, events chan TreeCacheEvent) *TreeCache

NewTreeCache creates a new TreeCache for a given path.

func (*TreeCache) Stop

func (tc *TreeCache) Stop()

Stop stops the tree cache.

type TreeCacheEvent

type TreeCacheEvent struct {
	Path string
	Data *[]byte
}

A TreeCacheEvent models a Zookeeper event for a path.

type Uri

type Uri struct {
	Weights       map[url.URL]float64
	Properties    map[url.URL]UriProperty
	PartitionDesc map[url.URL]map[int]float64
}

func (*Uri) UnmarshalJSON

func (u *Uri) UnmarshalJSON(data []byte) error

type UriProperty

type UriProperty struct {
	AppName    string `json:"com.linkedin.app.name"`
	AppVersion string `json:"com.linkedin.app.version"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL