etcdkv

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

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

Go to latest
Published: Apr 10, 2020 License: MIT Imports: 11 Imported by: 0

README

etcdkv

一个etcd的快速可拓展key/value事件监听包,可以快速用于服务注册与发现
也可以快速的实现一个简单的服务配置中心

例子

向etcd指定的命名空间下注册

	register := NewRegister(
		RegisterClient(
			ClientEndpoints("127.0.0.1:2379,127.0.0.1:2389,127.0.0.1:2399"),
			ClientDialKeepAliveTime(time.Second*5),
			ClientDialTimeout(time.Second*5),
			ClientDialKeepAliveTimeout(time.Second*5),
		),
		RegisterTTL(time.Second*10),
		RegisterNamespace("/"),
		RegisterKvs("1", "1111:1:1:1"),
		RegisterKvs("2", "2222:2:2:2"),
		RegisterKvs("3", "3333:3:3:3"),
	)

	defer register.Close()
	register.Start()

监听etcd指定的命名空间

	watcher := NewWatcher(
		WatcherClient(
			ClientEndpoints("127.0.0.1:2379,127.0.0.1:2389,127.0.0.1:2399"),
			ClientDialKeepAliveTime(time.Second*5),
			ClientDialTimeout(time.Second*5),
			ClientDialKeepAliveTimeout(time.Second*5),
		),
		WatcherNamespace("/"),
		WatcherTTL(time.Second*5),
		WatcherResolver(&PrintWatchKvResolver{}),
	)

	defer watcher.Close()
	watcher.Start()

自定义处理监听到变化的key/value信息

通过:etcdkv.WatcherResolver(&PrintWatchKvResolver{})这个设置可以指定监听到key/value变化时的处理方式
通过实现接口来实现自定义:

    type WatcherKvResolver interface {
    	Get(rawKv, namespace, key, value string, putTime, version int64) // 主动检测拉取时触发
    	Put(rawKv, namespace, key, value string, putTime, version int64) // 监听到有PUT事件时触发
    	Del(rawKv, namespace, key, value string, putTime, version int64) // 监听到有DELETE事件时触发
    }

设置注册和监听的错误处理器,可以自己处理错误

etcdkv.SetRegisterErrorHandler(func (err error) {
    // handle error
})

etcdkv.SetWatcherErrorHandler(func (err error) {
    // handle error
})

简单的测试

注册 监听

Documentation

Index

Constants

View Source
const (
	DefaultKey   = "default"
	DefaultValue = "default"
)
View Source
const DefaultClientName = "globalClient"

Variables

This section is empty.

Functions

func ClientV3

func ClientV3(name string) *clientv3.Client

func NewClientV3

func NewClientV3(opts ...ClientOption) error

func SetRegisterErrorHandler

func SetRegisterErrorHandler(fn func(error))

func SetWatcherErrorHandler

func SetWatcherErrorHandler(fn func(error))

Types

type ClientOption

type ClientOption func(*clientOption)

func ClientAutoSyncInterval

func ClientAutoSyncInterval(interval time.Duration) ClientOption

func ClientContext

func ClientContext(ctx context.Context) ClientOption

func ClientDialKeepAliveTime

func ClientDialKeepAliveTime(alive time.Duration) ClientOption

func ClientDialKeepAliveTimeout

func ClientDialKeepAliveTimeout(timeout time.Duration) ClientOption

func ClientDialOptions

func ClientDialOptions(options ...grpc.DialOption) ClientOption

func ClientDialTimeout

func ClientDialTimeout(timeout time.Duration) ClientOption

func ClientEndpoints

func ClientEndpoints(endpoints string) ClientOption

func ClientMaxCallRecvMsgSize

func ClientMaxCallRecvMsgSize(size int) ClientOption

func ClientMaxCallSendMsgSize

func ClientMaxCallSendMsgSize(size int) ClientOption

func ClientName

func ClientName(name string) ClientOption

func ClientPassword

func ClientPassword(password string) ClientOption

func ClientRejectOldCluster

func ClientRejectOldCluster(reject bool) ClientOption

func ClientTLS

func ClientTLS(cfg *tls.Config) ClientOption

func ClientUsername

func ClientUsername(username string) ClientOption

type PrintWatchKvResolver

type PrintWatchKvResolver struct{}

默认实现接口,打印信息

func (*PrintWatchKvResolver) Del

func (*PrintWatchKvResolver) Del(rawKv, namespace, key, value string, putTime, version int64)

func (*PrintWatchKvResolver) Get

func (*PrintWatchKvResolver) Get(rawKv, namespace, key, value string, putTime, version int64)

func (*PrintWatchKvResolver) Put

func (*PrintWatchKvResolver) Put(rawKv, namespace, key, value string, putTime, version int64)

type Register

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

func NewRegister

func NewRegister(opts ...RegisterOption) *Register

func (*Register) Close

func (r *Register) Close()

func (*Register) Start

func (r *Register) Start()

type RegisterOption

type RegisterOption func(*registerOption)

func RegisterClient

func RegisterClient(opts ...ClientOption) RegisterOption

func RegisterKvs

func RegisterKvs(k, v string) RegisterOption

func RegisterNamespace

func RegisterNamespace(namespace string) RegisterOption

func RegisterSetClient

func RegisterSetClient(client *clientv3.Client) RegisterOption

func RegisterTTL

func RegisterTTL(ttl time.Duration) RegisterOption

type Watcher

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

func NewWatcher

func NewWatcher(opts ...WatcherOption) *Watcher

func (*Watcher) Close

func (w *Watcher) Close()

func (*Watcher) Start

func (w *Watcher) Start()

type WatcherKvResolver

type WatcherKvResolver interface {
	Get(rawKv, namespace, key, value string, putTime, version int64)
	Put(rawKv, namespace, key, value string, putTime, version int64)
	Del(rawKv, namespace, key, value string, putTime, version int64)
}

type WatcherOption

type WatcherOption func(*watcherOption)

func WatcherClient

func WatcherClient(opts ...ClientOption) WatcherOption

func WatcherNamespace

func WatcherNamespace(namespace string) WatcherOption

func WatcherResolver

func WatcherResolver(resolver WatcherKvResolver) WatcherOption

func WatcherSetClient

func WatcherSetClient(client *clientv3.Client) WatcherOption

func WatcherTTL

func WatcherTTL(ttl time.Duration) WatcherOption

Jump to

Keyboard shortcuts

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