discovery

package module
v0.0.0-...-e919b88 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2023 License: MIT Imports: 10 Imported by: 1

README

Go - Discovery

Go Report Card License MIT Go Doc

A collection of service discovery implementations.

Install

go get -u github.com/danielgatis/go-discovery

And then import the package in your code:

import "github.com/danielgatis/go-discovery"
Example

An example described below is one of the use cases.

package main

import (
	"context"
	"flag"
	"fmt"
	"time"

	"github.com/danielgatis/go-ctrlc"
	"github.com/danielgatis/go-discovery"
	"github.com/sirupsen/logrus"
)

var (
	port int
)

func init() {
	flag.IntVar(&port, "port", 3001, "port number")
}

func main() {
	flag.Parse()

	discovery := discovery.NewMdnsDiscovery(fmt.Sprintf("test:%d", port), "_test._tcp", "local.", port, logrus.StandardLogger())
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)

	ctrlc.Watch(func() {
		cancel()
	})

	go func() {
		discovery.Register(ctx)
	}()

	for {
		select {
		case <-ctx.Done():
			return
		default:
			peers, err := discovery.Lookup()
			if err != nil {
				logrus.Fatal(err)
			}

			for _, peer := range peers {
				logrus.Info(peer)
			}
		}
	}
}
❯ go run main.go -p 3001
❯ go run main.go -p 3002
License

Copyright (c) 2021-present Daniel Gatis

Licensed under MIT License

Buy me a coffee

Liked some of my work? Buy me a coffee (or more likely a beer)

Buy Me A Coffee

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Discovery

type Discovery interface {
	// Lookup returns the found peers. A peer is a ip:port.
	Lookup() ([]string, error)

	// Register registers self as a peer.
	Register(ctx context.Context) error
}

Discovery represents a base interface for all resolvers.

type DummyDiscovery

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

DummyDiscovery is a dummy resolver for static peers.

func NewDummyDiscovery

func NewDummyDiscovery(peers []string, logger logrus.FieldLogger) *DummyDiscovery

NewDummyDiscovery returns a new dummy resolver.

func (*DummyDiscovery) Lookup

func (d *DummyDiscovery) Lookup() ([]string, error)

Lookup implements discovery.Discovery.

func (*DummyDiscovery) Register

func (d *DummyDiscovery) Register(ctx context.Context) error

Register implements discovery.Discovery.

type K8sDiscovery

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

K8sDiscovery is a k8s resolver.

func NewK8sDiscovery

func NewK8sDiscovery(clientset kubernetes.Interface, namespace string, portName string, labels map[string]string, logger logrus.FieldLogger) *K8sDiscovery

NewK8sDiscovery returns a new k8s resolver.

func (*K8sDiscovery) Lookup

func (d *K8sDiscovery) Lookup() ([]string, error)

Lookup implements discovery.Discovery.

func (*K8sDiscovery) Register

func (d *K8sDiscovery) Register(ctx context.Context) error

Register implements discovery.Discovery.

type MdnsDiscovery

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

MdnsDiscovery is a mDNS resolver.

func NewMdnsDiscovery

func NewMdnsDiscovery(instance, service, domain string, port int, logger logrus.FieldLogger) *MdnsDiscovery

NewMdnsDiscovery returns a new mDNS resolver.

func (*MdnsDiscovery) Lookup

func (d *MdnsDiscovery) Lookup() ([]string, error)

Lookup implements discovery.Discovery.

func (*MdnsDiscovery) Register

func (d *MdnsDiscovery) Register(ctx context.Context) error

Register implements discovery.Discovery.

type NullDiscovery

type NullDiscovery struct {
}

NullDiscovery is a dummy resolver for static peers.

func NewNullDiscovery

func NewNullDiscovery() *NullDiscovery

NewNullDiscovery returns a new null resolver.

func (*NullDiscovery) Lookup

func (d *NullDiscovery) Lookup() ([]string, error)

Lookup implements discovery.Discovery.

func (*NullDiscovery) Register

func (d *NullDiscovery) Register(ctx context.Context) error

Register implements discovery.Discovery.

Jump to

Keyboard shortcuts

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