discovery

package
v0.8.3 Latest Latest
Warning

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

Go to latest
Published: Jan 2, 2026 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConsulDiscovery

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

ConsulDiscovery implements Consul-based service discovery.

func NewConsulDiscovery

func NewConsulDiscovery(config ConsulDiscoveryConfig, logger forge.Logger) (*ConsulDiscovery, error)

NewConsulDiscovery creates a new Consul service discovery.

func (*ConsulDiscovery) DiscoverPeers

func (cd *ConsulDiscovery) DiscoverPeers(ctx context.Context) ([]internal.NodeInfo, error)

DiscoverPeers discovers peer nodes.

func (*ConsulDiscovery) GetNodeInfo

func (cd *ConsulDiscovery) GetNodeInfo(nodeID string) (*internal.NodeInfo, error)

GetNodeInfo returns information about a specific node.

func (*ConsulDiscovery) Start

func (cd *ConsulDiscovery) Start(ctx context.Context) error

Start starts the discovery service.

func (*ConsulDiscovery) Stop

func (cd *ConsulDiscovery) Stop(ctx context.Context) error

Stop stops the discovery service.

func (*ConsulDiscovery) WatchPeers

func (cd *ConsulDiscovery) WatchPeers(ctx context.Context) (<-chan []internal.NodeInfo, error)

WatchPeers watches for peer changes.

type ConsulDiscoveryConfig

type ConsulDiscoveryConfig struct {
	Address       string
	Datacenter    string
	Token         string
	ServiceName   string
	NodeID        string
	NodeAddress   string
	NodePort      int
	Tags          []string
	CheckInterval time.Duration
	CacheTTL      time.Duration
	HealthCheck   *api.AgentServiceCheck
}

ConsulDiscoveryConfig contains Consul discovery configuration.

type DNSDiscovery

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

DNSDiscovery implements DNS-based service discovery.

func NewDNSDiscovery

func NewDNSDiscovery(config DNSDiscoveryConfig, logger forge.Logger) *DNSDiscovery

NewDNSDiscovery creates a new DNS-based discovery service.

func (*DNSDiscovery) GetNodes

func (dd *DNSDiscovery) GetNodes(ctx context.Context) ([]internal.NodeInfo, error)

GetNodes returns all discovered nodes.

func (*DNSDiscovery) Register

func (dd *DNSDiscovery) Register(ctx context.Context, node internal.NodeInfo) error

Register registers this node with the discovery service (no-op for DNS).

func (*DNSDiscovery) Start

func (dd *DNSDiscovery) Start(ctx context.Context) error

Start starts the DNS discovery service.

func (*DNSDiscovery) Stop

func (dd *DNSDiscovery) Stop(ctx context.Context) error

Stop stops the DNS discovery service.

func (*DNSDiscovery) Unregister

func (dd *DNSDiscovery) Unregister(ctx context.Context) error

Unregister unregisters this node from the discovery service (no-op for DNS).

func (*DNSDiscovery) Watch

func (dd *DNSDiscovery) Watch(ctx context.Context) (<-chan internal.NodeChangeEvent, error)

Watch watches for node changes.

type DNSDiscoveryConfig

type DNSDiscoveryConfig struct {
	Domain          string
	Port            int
	RefreshInterval time.Duration
	DNSServers      []string
}

DNSDiscoveryConfig contains DNS discovery configuration.

type EtcdDiscovery

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

EtcdDiscovery implements service discovery using etcd.

func NewEtcdDiscovery

func NewEtcdDiscovery(config EtcdDiscoveryConfig, logger forge.Logger) (*EtcdDiscovery, error)

NewEtcdDiscovery creates a new etcd-based discovery service.

func (*EtcdDiscovery) GetNodeInfo

func (ed *EtcdDiscovery) GetNodeInfo(nodeID string) (*internal.NodeInfo, error)

GetNodeInfo returns information about a specific node.

func (*EtcdDiscovery) GetPeers

func (ed *EtcdDiscovery) GetPeers() ([]*internal.NodeInfo, error)

GetPeers returns the list of discovered peers.

func (*EtcdDiscovery) Health

func (ed *EtcdDiscovery) Health() error

Health checks the health of the discovery service.

func (*EtcdDiscovery) Start

func (ed *EtcdDiscovery) Start(ctx context.Context) error

Start starts the discovery service.

func (*EtcdDiscovery) Stop

func (ed *EtcdDiscovery) Stop(ctx context.Context) error

Stop stops the discovery service.

func (*EtcdDiscovery) UpdateNodeInfo

func (ed *EtcdDiscovery) UpdateNodeInfo(info *internal.NodeInfo) error

UpdateNodeInfo updates this node's information.

func (*EtcdDiscovery) Watch

func (ed *EtcdDiscovery) Watch(ctx context.Context) (<-chan internal.DiscoveryEvent, error)

Watch watches for peer changes.

type EtcdDiscoveryConfig

type EtcdDiscoveryConfig struct {
	NodeID    string
	Endpoints []string
	Prefix    string
	TTL       time.Duration
}

EtcdDiscoveryConfig contains etcd discovery configuration.

type KubernetesDiscovery

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

KubernetesDiscovery implements Kubernetes-based service discovery.

func NewKubernetesDiscovery

func NewKubernetesDiscovery(config KubernetesDiscoveryConfig, logger forge.Logger) (*KubernetesDiscovery, error)

NewKubernetesDiscovery creates a new Kubernetes service discovery.

func (*KubernetesDiscovery) DiscoverPeers

func (kd *KubernetesDiscovery) DiscoverPeers(ctx context.Context) ([]internal.NodeInfo, error)

DiscoverPeers discovers peer nodes from Kubernetes endpoints.

func (*KubernetesDiscovery) GetNodeInfo

func (kd *KubernetesDiscovery) GetNodeInfo(nodeID string) (*internal.NodeInfo, error)

GetNodeInfo returns information about a specific node.

func (*KubernetesDiscovery) Start

func (kd *KubernetesDiscovery) Start(ctx context.Context) error

Start starts the discovery service.

func (*KubernetesDiscovery) Stop

func (kd *KubernetesDiscovery) Stop(ctx context.Context) error

Stop stops the discovery service.

func (*KubernetesDiscovery) WatchPeers

func (kd *KubernetesDiscovery) WatchPeers(ctx context.Context) (<-chan []internal.NodeInfo, error)

WatchPeers watches for peer changes using Kubernetes watch API.

type KubernetesDiscoveryConfig

type KubernetesDiscoveryConfig struct {
	Namespace     string
	ServiceName   string
	LabelSelector string
	Port          int
	Kubeconfig    string
	CheckInterval time.Duration
	CacheTTL      time.Duration
}

KubernetesDiscoveryConfig contains Kubernetes discovery configuration.

type RegisteredNode

type RegisteredNode struct {
	Info         *internal.NodeInfo
	RegisteredAt time.Time
	LastSeen     time.Time
	Healthy      bool
	Metadata     map[string]any
}

RegisteredNode represents a registered node.

type Registry

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

Registry manages node registration and discovery with centralized coordination.

func NewRegistry

func NewRegistry(config RegistryConfig, logger forge.Logger) *Registry

NewRegistry creates a new registry.

func (*Registry) Deregister

func (r *Registry) Deregister(nodeID string) error

Deregister removes a node from the registry.

func (*Registry) GetAllNodes

func (r *Registry) GetAllNodes() map[string]*RegisteredNode

GetAllNodes returns all registered nodes including unhealthy.

func (*Registry) GetHealthyNodes

func (r *Registry) GetHealthyNodes() []*internal.NodeInfo

GetHealthyNodes returns only healthy nodes.

func (*Registry) GetNodeInfo

func (r *Registry) GetNodeInfo(nodeID string) (*internal.NodeInfo, error)

GetNodeInfo returns information about a node.

func (*Registry) GetNodeMetadata

func (r *Registry) GetNodeMetadata(nodeID string, key string) (any, error)

GetNodeMetadata gets metadata for a node.

func (*Registry) GetPeers

func (r *Registry) GetPeers() ([]*internal.NodeInfo, error)

GetPeers returns all registered peers.

func (*Registry) GetStatistics

func (r *Registry) GetStatistics() RegistryStatistics

GetStatistics returns registry statistics.

func (*Registry) GetUnhealthyNodes

func (r *Registry) GetUnhealthyNodes() []*internal.NodeInfo

GetUnhealthyNodes returns unhealthy nodes.

func (*Registry) Health

func (r *Registry) Health() error

Health checks registry health.

func (*Registry) Heartbeat

func (r *Registry) Heartbeat(nodeID string) error

Heartbeat updates the last seen time for a node.

func (*Registry) Register

func (r *Registry) Register(node *internal.NodeInfo) error

Register registers a node.

func (*Registry) SetNodeMetadata

func (r *Registry) SetNodeMetadata(nodeID string, key string, value any) error

SetNodeMetadata sets metadata for a node.

func (*Registry) Start

func (r *Registry) Start(ctx context.Context) error

Start starts the registry.

func (*Registry) Stop

func (r *Registry) Stop(ctx context.Context) error

Stop stops the registry.

func (*Registry) UpdateNodeInfo

func (r *Registry) UpdateNodeInfo(info *internal.NodeInfo) error

UpdateNodeInfo updates node information.

func (*Registry) Watch

func (r *Registry) Watch(ctx context.Context) (<-chan internal.DiscoveryEvent, error)

Watch watches for node changes.

type RegistryConfig

type RegistryConfig struct {
	NodeID              string
	HealthCheckInterval time.Duration
	NodeTimeout         time.Duration
	EnableAutoCleanup   bool
}

RegistryConfig contains registry configuration.

type RegistryStatistics

type RegistryStatistics struct {
	TotalNodes     int
	HealthyNodes   int
	UnhealthyNodes int
}

RegistryStatistics contains registry statistics.

type StaticDiscovery

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

StaticDiscovery implements static service discovery with a fixed peer list.

func NewStaticDiscovery

func NewStaticDiscovery(config StaticDiscoveryConfig, logger forge.Logger) *StaticDiscovery

NewStaticDiscovery creates a new static discovery service.

func (*StaticDiscovery) AddNode

func (sd *StaticDiscovery) AddNode(node internal.NodeInfo) error

AddNode dynamically adds a node (for testing/dynamic updates).

func (*StaticDiscovery) GetNodes

func (sd *StaticDiscovery) GetNodes(ctx context.Context) ([]internal.NodeInfo, error)

GetNodes returns all discovered nodes.

func (*StaticDiscovery) Register

func (sd *StaticDiscovery) Register(ctx context.Context, node internal.NodeInfo) error

Register registers this node with the discovery service.

func (*StaticDiscovery) RemoveNode

func (sd *StaticDiscovery) RemoveNode(nodeID string) error

RemoveNode dynamically removes a node (for testing/dynamic updates).

func (*StaticDiscovery) Start

func (sd *StaticDiscovery) Start(ctx context.Context) error

Start starts the discovery service.

func (*StaticDiscovery) Stop

func (sd *StaticDiscovery) Stop(ctx context.Context) error

Stop stops the discovery service.

func (*StaticDiscovery) Unregister

func (sd *StaticDiscovery) Unregister(ctx context.Context) error

Unregister unregisters this node from the discovery service.

func (*StaticDiscovery) Watch

func (sd *StaticDiscovery) Watch(ctx context.Context) (<-chan internal.NodeChangeEvent, error)

Watch watches for node changes.

type StaticDiscoveryConfig

type StaticDiscoveryConfig struct {
	Nodes []internal.NodeInfo
}

StaticDiscoveryConfig contains static discovery configuration.

Jump to

Keyboard shortcuts

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