cluster

package
v0.0.0-...-7b44a9b Latest Latest
Warning

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

Go to latest
Published: Dec 19, 2024 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HTTP protocol = "http"
	GRPC protocol = "grpc"
)

Variables

This section is empty.

Functions

func ExternalIP

func ExternalIP(names ...string) (string, error)

func GRPCHealthCheck

func GRPCHealthCheck(ctx context.Context, healthyConfig *HealthyConfig, service string, options ...grpc.DialOption) error

func HTTPHealthCheck

func HTTPHealthCheck(ctx context.Context, healthyConfig *HealthyConfig) error

func IP

func IP() (string, error)

func SetupSnowflakeNode

func SetupSnowflakeNode(node *snowflake.Node)

func SnowflakeID

func SnowflakeID() snowflake.ID

func SnowflakeIDInt64

func SnowflakeIDInt64() int64

Types

type Endpoint

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

func NewEndpoint

func NewEndpoint(service, host string, port uint16, options ...EndpointOption) *Endpoint

func (*Endpoint) Healthy

func (e *Endpoint) Healthy(ctx context.Context) error

func (*Endpoint) Host

func (e *Endpoint) Host() string

func (*Endpoint) Metadata

func (e *Endpoint) Metadata() Metadata

func (*Endpoint) NodeID

func (e *Endpoint) NodeID() string

func (*Endpoint) Port

func (e *Endpoint) Port() uint16

func (*Endpoint) Service

func (e *Endpoint) Service() string

type EndpointOption

type EndpointOption func(*Endpoint)

func WithHealthy

func WithHealthy(healthy *HealthyConfig) EndpointOption

func WithMetadata

func WithMetadata(key string, val ...string) EndpointOption

func WithNodeID

func WithNodeID(nodeID string) EndpointOption

type HealthChecker

type HealthChecker interface {
	Healthy(ctx context.Context) error
}

type HealthyConfig

type HealthyConfig struct {
	Protocol Protocol
	Target   string
	Options  Metadata
}

func NewHealthyConfig

func NewHealthyConfig(protocol Protocol, target string, options ...HealthyConfigOption) *HealthyConfig

type HealthyConfigOption

type HealthyConfigOption func(*HealthyConfig)

func WithHealthyConfigOptions

func WithHealthyConfigOptions(key string, val ...string) HealthyConfigOption

type Metadata

type Metadata map[string][]string

Metadata the key is case-insensitive

func (Metadata) Add

func (m Metadata) Add(key string, values ...string)

func (Metadata) Del

func (m Metadata) Del(key string)

func (Metadata) Get

func (m Metadata) Get(key string) string

func (Metadata) Gets

func (m Metadata) Gets(key string) []string

func (Metadata) Set

func (m Metadata) Set(key string, value string)

type Protocol

type Protocol interface {
	Is(v protocol) bool
	// contains filtered or unexported methods
}

type Registry

type Registry interface {
	Register(ctx context.Context, endpoint *Endpoint) error
	Deregister(ctx context.Context, endpoint *Endpoint) error
}

type SnowflakeNode

type SnowflakeNode struct {
	*snowflake.Node
	// contains filtered or unexported fields
}

func NewSnowflakeNode

func NewSnowflakeNode(ctx context.Context, client redis.UniversalClient, service, id string) (*SnowflakeNode, error)

NewSnowflakeNode 基于 redis SetEx 实现自动分配服务节点序号,保证每个节点序号在服务内唯一,并将节点序号作为 NodeID 创建 snowflake.Node 对象。 注意:获取到节点序号后需要定期刷新(运行SnowflakeNode.Start()),保持当前节点对该序号的持有状态。 警告:节点序号范围为 0~1023,节点数量超过范围将无法分配序号。同时缓存有一小时过期时间,如果服务内所有节点一小时内累计异常重启次数超过1023次, 也可能导致无法分配序号。

func NewSnowflakeNodeWithEndpoint

func NewSnowflakeNodeWithEndpoint(ctx context.Context, client redis.UniversalClient, endpoint *Endpoint) (
	*SnowflakeNode, error,
)

func (*SnowflakeNode) Runner

func (s *SnowflakeNode) Runner() SnowflakeNodeRunner

func (*SnowflakeNode) Start

func (s *SnowflakeNode) Start(ctx context.Context) error

func (*SnowflakeNode) Stop

func (s *SnowflakeNode) Stop(ctx context.Context) error

type SnowflakeNodeRunner

type SnowflakeNodeRunner interface {
	Start(ctx context.Context) error
	Stop(ctx context.Context) error
}

Jump to

Keyboard shortcuts

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