backends

package
v0.0.0-...-ebb7ec8 Latest Latest
Warning

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

Go to latest
Published: Oct 12, 2018 License: Apache-2.0 Imports: 6 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	//ErrNotSupported 不支持的服务协议错误, 目前只支持(zk://|etcd://|consul://)
	ErrNotSupported = errors.New("backend not supported.")
	//ErrNotImplemented 未实现的发现服务
	ErrNotImplemented = errors.New("not implemented in this backend.")
	//ErrEntryInvlid 节点Entry无效,一般为编解码Entry失败
	ErrEntryInvlid = errors.New("entry invalid.")
	//ErrEntryKeyInvalid 节点Entry对应Key值无效
	ErrEntryKeyInvalid = errors.New("entry key invalid.")
	//ErrWatchException 节点Watch异常
	ErrWatchException = errors.New("unexpected watch error.")
	//ErrWatchPairInvalid 节点Watch值Pair为nil无效
	ErrWatchPairInvalid = errors.New("watch pair invalid.")
	//ErrRegistLoopQuit 节点退出注册
	ErrRegistLoopQuit = errors.New("regist loop quited.")
)

错误异常信息定义

Functions

func EnCodeEntry

func EnCodeEntry(entry *Entry) ([]byte, error)

EnCodeEntry 编码一个Entry数据

func Register

func Register(scheme string, backend Backend) error

Register 注册发现后端类别 scheme:"zk"、"etcd"、"consul" Backend: 一个已构建的Backend实例

Types

type Backend

type Backend interface {
	//Watcher 每个后端必须实现Watcher接口, 监视节点变化
	Watcher
	//Initialize 初始化服务发现功能, 传入uris, heartbeat(心跳频率), ttl(超时阈值)和一个map选项设置
	Initialize(rawuri string, heartbeat time.Duration, ttl time.Duration, configopts map[string]string) error
	//Register 注册到一个发现服务, 传入节点key, data(附加数据)
	Register(key string, data []byte, stopCh <-chan struct{}) <-chan error
}

Backend 后端抽象接口定义 由一个Backend实体实现, 主要用于集群节点的发现管理和节点注册

func New

func New(rawuri string, heartbeat time.Duration, ttl time.Duration, configopts map[string]string) (Backend, error)

New 构建一个Backend实例 构造时根据scheme查找所带入的rawuri是否支持,不支持则返回ErrNotSupported错误 rawuri:后端服务发现路径 heartbeat: 心跳间隔 ttl: 节点过期阈值 configopts: 发现设置附加属性

type Entries

type Entries []*Entry

Entries 节点切片定义 代表多个Entry节点信息

func PressEntriesData

func PressEntriesData(data [][]byte) (Entries, error)

PressEntriesData 将数据集转换并返回一个[]*Entry data: 多个节点数据信息 一但有节点数据转换失败,则返回nil

func (Entries) Contains

func (entries Entries) Contains(entry *Entry) bool

Contains 查找entry在entries中是否存在

func (Entries) Diff

func (entries Entries) Diff(cmp Entries) (Entries, Entries)

Diff 比较两个Entries差异 added:新加入节点 removed: 删除的节点

type Entry

type Entry struct {
	Key  string `json:"key"`
	Data []byte `json:"data"`
}

Entry 节点信息 Key: 集群节点唯一编码 Data: 节点附加数据, 可为nil

func DeCodeEntry

func DeCodeEntry(data []byte) (*Entry, error)

DeCodeEntry 解码一个Entry数据

func NewEntry

func NewEntry(key string, data []byte) *Entry

NewEntry 创建一个新的节点信息

func (*Entry) Equals

func (entry *Entry) Equals(cmp *Entry) bool

Equals 判断两个Entry是否相等

func (*Entry) String

func (entry *Entry) String() string

String 返回Entry字符串形式 该函数只返回Key值

type Watcher

type Watcher interface {
	//WatchNodes 提供在集群上监视节点的加入与离开功能, 由一个具体的Backend实体实现
	//stopCh: 传入一个非nil chan, 立即停止监视, 一般服务端需传入nil, 而命令方式查看一般传入非nil实体.
	//Entries:返回监视到的在线节点信息
	//error: 返回一个监视异常错误
	WatchNodes(stopCh <-chan struct{}) (<-chan Entries, <-chan error)
	//WatchExtend 监视一个扩展路径
	//key: 监视路径
	//stopCh: 传入一个非nil chan, 立即停止监视, 一般服务端需传入nil, 而命令方式查看一般传入非nil实体.
	//data:路径信息
	//error: 返回一个监视异常错误
	WatchExtend(key string, stopCh <-chan struct{}) (<-chan []byte, <-chan error)
}

Watcher 监视接口定义

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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