- 优化etcd
continuous-integration/drone/push Build was killed Details

master v1.0.11
李光春 2 years ago
parent 4a25820a3f
commit 1afda9306f

@ -16,8 +16,9 @@ type EtcdConfig struct {
type Etcd struct {
EtcdConfig // 配置
Client *clientv3.Client // 驱动
Kv clientv3.KV // Kv api
Lease clientv3.Lease // Lease api
Kv clientv3.KV // kv API子集
Lease clientv3.Lease // lease租约对象
leaseId clientv3.LeaseID // 租约编号
}
// Close 关闭

@ -27,8 +27,10 @@ func NewEtcdServer(config *EtcdConfig) (*Etcd, error) {
return nil, errors.New("连接失败:" + err.Error())
}
// 得到KV和Lease的API子集
// kv API子集
e.Kv = clientv3.NewKV(e.Client)
// 创建一个lease租约对象
e.Lease = clientv3.NewLease(e.Client)
return e, nil

@ -28,11 +28,13 @@ func NewEtcdWorker(config *EtcdConfig) (*Etcd, error) {
return nil, errors.New("连接失败:" + err.Error())
}
// 得到KV和Lease的API子集
// 获得kv API子集
e.Kv = clientv3.NewKV(e.Client)
// 创建一个lease租约对象
e.Lease = clientv3.NewLease(e.Client)
// 注册
// 注册服务
go e.RegisterWorker()
return e, nil
@ -56,17 +58,17 @@ func (e Etcd) RegisterWorker() {
cancelFunc = nil
// 创建租约
// 申请一个10秒的租约
leaseGrantResp, err = e.Lease.Grant(context.TODO(), 10)
log.Println("创建租约")
if err != nil {
log.Println("申请一个10秒的租约失败", err)
goto RETRY
}
// 自动续租
// 自动永久续租
keepAliveChan, err = e.Lease.KeepAlive(context.TODO(), leaseGrantResp.ID)
log.Println("自动续租")
if err != nil {
log.Println("自动永久续租失败", err)
goto RETRY
}
@ -79,13 +81,15 @@ func (e Etcd) RegisterWorker() {
goto RETRY
}
// 处理续租应答
// 处理续约应答的协程
for {
select {
case keepAliveResp = <-keepAliveChan:
if keepAliveResp == nil { // 续租失败
if keepAliveResp == nil {
log.Println("续租失败")
goto RETRY
} else {
log.Println("收到自动续租应答:", leaseGrantResp.ID)
}
}
}

@ -1,3 +1,3 @@
package gojobs
const Version = "1.0.10"
const Version = "1.0.11"

Loading…
Cancel
Save