go_consul_instance_manager

package module
v1.1.1 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2023 License: MIT Imports: 15 Imported by: 0

README

go-consul-instance-manager

Библиотека для отслеживания состояния экземпляров какого-либо сервиса через Hashicorp Consul.

Пример использования

см. в директории /example

Консистентное хэширование

В основе механизма определения держателя ключа (метод iman.GetDataOwner(key)) лежит механизм консистентного хэширования на основе хэш-кольца. Подробнее можно почитать ЗДЕСЬ и ЗДЕСЬ.

Диаграмма классов

Диаграмма классов

instance status

instance_status_diagram

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrInvalidInstanceStatus = errors.New("not a valid InstanceStatus")

Functions

func WithBackupHashring added in v1.1.1

func WithBackupHashring(hashFunc hashring.HashFunc) options.Option[Client]

func WithConsulClient

func WithConsulClient(cc *consul.Client) options.Option[Client]

Sets custon consul client to operate with. Default is client based on DefaultConfig().

func WithDownHoldDuration

func WithDownHoldDuration(dur time.Duration) options.Option[Client]

Sets duration, for which node will be marked as pending before being removed from instances list. Default is 15s.

func WithLogger

func WithLogger(l zerolog.Logger) options.Option[Client]

Sets custom logger. Default is stdout console logger.

func WithPollInterval

func WithPollInterval(dur time.Duration) options.Option[Client]

Sets interval to check instances list. Default is 1s.

Types

type Client

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

func NewClient

func NewClient(appName string, opts ...options.Option[Client]) (*Client, error)

Creates new client to operate with.

func (*Client) Deregister

func (cl *Client) Deregister(hostname string) error

Deregisters instance of cl.appName with given parameters.

func (*Client) GetDataHolders added in v1.1.1

func (cl *Client) GetDataHolders(key string) ([]*Instance, error)

Get list of instances that hold given key. Client must be started to run this method properly.

func (*Client) GetInstances

func (cl *Client) GetInstances() ([]*Instance, error)

Get list of alive instances now. Client must be started to run this method properly.

func (*Client) Register

func (cl *Client) Register(hostname string, address string) error

Registers new instance of cl.appName with given parameters.

func (*Client) Start

func (cl *Client) Start(ctx context.Context) (resErr error)

type Comparable

type Comparable interface{ comparable }

type Instance

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

func (*Instance) Address

func (ins *Instance) Address() string

func (*Instance) Name

func (ins *Instance) Name() string

func (*Instance) Status

func (ins *Instance) Status() InstanceStatus

type InstanceStatus

type InstanceStatus uint8

ENUM(alive, pending)

const (
	// InstanceStatusAlive is a InstanceStatus of type Alive.
	InstanceStatusAlive InstanceStatus = iota
	// InstanceStatusPending is a InstanceStatus of type Pending.
	InstanceStatusPending
)

func ParseInstanceStatus

func ParseInstanceStatus(name string) (InstanceStatus, error)

ParseInstanceStatus attempts to convert a string to a InstanceStatus.

func (InstanceStatus) IsValid

func (x InstanceStatus) IsValid() bool

IsValid provides a quick way to determine if the typed value is part of the allowed enumerated values

func (InstanceStatus) String

func (x InstanceStatus) String() string

String implements the Stringer interface.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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