2023-02-06 16:53:02 +08:00
|
|
|
// Package etcd...
|
|
|
|
//
|
|
|
|
// Description : etcd...
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2021-11-23 11:25 上午
|
|
|
|
package etcd
|
|
|
|
|
|
|
|
import (
|
|
|
|
"math"
|
|
|
|
"time"
|
|
|
|
|
2023-02-07 10:56:50 +08:00
|
|
|
"github.com/coreos/etcd/clientv3"
|
2023-02-06 16:53:02 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
// 初始化client各种默认配置
|
|
|
|
const (
|
|
|
|
// DefaultDialTimeout 默认超时时间
|
|
|
|
DefaultDialTimeout = 5 * time.Second
|
|
|
|
// DefaultDialKeepAliveTime 默认ping时间
|
|
|
|
DefaultDialKeepAliveTime = 3 * time.Second
|
|
|
|
// DefaultDialKeepAliveTimeout ping之后等待响应的超时时间, 超时未响应, 连接将会断开
|
|
|
|
DefaultDialKeepAliveTimeout = 5 * time.Second
|
|
|
|
// DefaultMaxCallSendMsgSize 客户端请求体最大字节数, 默认 2M , 和etcd默认值保持一致
|
|
|
|
DefaultMaxCallSendMsgSize = 2 * 1024 * 1024
|
|
|
|
// DefaultMaxCallRecvMsgSize 客户端接受的响应题最大大小, 默认int32最大值, 和etcd默认值保持一致
|
|
|
|
DefaultMaxCallRecvMsgSize = math.MaxInt32
|
|
|
|
)
|
|
|
|
|
|
|
|
// 操作过程中各种默认配置
|
|
|
|
const (
|
|
|
|
// DefaultPutTimeout put 默认超时时间
|
|
|
|
DefaultPutTimeout = time.Second
|
|
|
|
// DefaultGetTimeout get 默认超时时间
|
|
|
|
DefaultGetTimeout = time.Second
|
|
|
|
// DefaultDeleteTimeout 删除的超时时间
|
|
|
|
DefaultDeleteTimeout = time.Second
|
|
|
|
)
|
|
|
|
|
|
|
|
// WatcherHandler 监听key变化的处理函数
|
|
|
|
type WatcherHandler func(event *clientv3.Event)
|
|
|
|
|
|
|
|
// CancelWatcherHandler 取消监听后的处理函数
|
|
|
|
type CancelWatcherHandler func(key string, data interface{})
|
|
|
|
|
|
|
|
// TimeoutWatcherHandler 超时之后的回调函数
|
|
|
|
type TimeoutWatcherHandler func(key string, timeout time.Duration)
|
|
|
|
|
|
|
|
// LeaseKeepALiveHandler 续期成功的处理
|
|
|
|
type LeaseKeepALiveHandler func(data *LeaseKeepAliveData)
|
|
|
|
|
|
|
|
// LeaseKeepAliveData 自动续期的数据结构
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 8:28 下午 2021/11/23
|
|
|
|
type LeaseKeepAliveData struct {
|
|
|
|
Key string `json:"key"` // 续期key
|
|
|
|
StartTime int64 `json:"start_time"` // 开始续期时间
|
|
|
|
LastLeaseTime int64 `json:"last_lease_time"` // 上一次续期事件时间
|
|
|
|
LeaseCnt int64 `json:"lease_cnt"` // 续期次数
|
|
|
|
HasFinish bool `json:"has_finish"` // 是否完成
|
|
|
|
LeaseFinishType string `json:"lease_finish_type"` // 续期完成类型
|
|
|
|
LeaseFinishTime int64 `json:"lease_finish_time"` // 续期完成时间
|
|
|
|
LeaseDetail *clientv3.LeaseKeepAliveResponse `json:"lease_detail"` // 续约数据
|
|
|
|
Data map[string]interface{} `json:"data"` // 携带的数据
|
|
|
|
}
|