feat app 模块化启动
This commit is contained in:
@@ -3,27 +3,23 @@ package common
|
||||
import (
|
||||
"common/db/etcd"
|
||||
"common/log"
|
||||
"context"
|
||||
clientv3 "go.etcd.io/etcd/client/v3"
|
||||
)
|
||||
|
||||
// NewLeaseAndKeepAlive 创建租约并保活
|
||||
func NewLeaseAndKeepAlive(ttl int64) (clientv3.LeaseID, error) {
|
||||
lease, err := etcd.Client().Grant(context.Background(), ttl)
|
||||
lease, err := etcd.GetClient().Grant(ttl)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
chKeepAlive, err := etcd.Client().KeepAlive(context.Background(), lease.ID)
|
||||
chKeepAlive, err := etcd.GetClient().KeepAlive(lease.ID)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
go func() {
|
||||
for r := range chKeepAlive {
|
||||
if r == nil {
|
||||
log.Errorf("lease timeout!")
|
||||
return
|
||||
}
|
||||
go func(leaseID clientv3.LeaseID) {
|
||||
for range chKeepAlive {
|
||||
}
|
||||
}()
|
||||
log.Warnf("Lease %x expired or revoked", leaseID)
|
||||
}(lease.ID)
|
||||
return lease.ID, nil
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import (
|
||||
"common/db/etcd"
|
||||
"common/discover/common"
|
||||
"common/log"
|
||||
"context"
|
||||
"fmt"
|
||||
clientv3 "go.etcd.io/etcd/client/v3"
|
||||
"strconv"
|
||||
@@ -42,7 +41,7 @@ func RegisterInstance(sid int64, instanceID int, uniqueNo, ttl int64) error {
|
||||
return err
|
||||
}
|
||||
key := fmt.Sprintf("%v/%v/%v", common.KeyDiscoverInstance, instanceID, uniqueNo)
|
||||
_, err = etcd.Client().Put(context.Background(), key, strconv.Itoa(int(sid)), clientv3.WithLease(leaseID))
|
||||
_, err = etcd.GetClient().Put(key, strconv.Itoa(int(sid)), clientv3.WithLease(leaseID))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -55,7 +54,7 @@ func UnRegisterInstance(uniqueNo int64) {
|
||||
serverMU.Lock()
|
||||
defer serverMU.Unlock()
|
||||
if leaseID, ok := instanceLeaseM[uniqueNo]; ok {
|
||||
_, err := etcd.Client().Revoke(context.Background(), leaseID)
|
||||
_, err := etcd.GetClient().Revoke(leaseID)
|
||||
if err != nil {
|
||||
log.Errorf("UnRegisterInstance err: %v", err)
|
||||
}
|
||||
|
||||
@@ -3,8 +3,10 @@ package discover
|
||||
import (
|
||||
"common/db/etcd"
|
||||
"common/discover/common"
|
||||
"common/log"
|
||||
"common/utils"
|
||||
"context"
|
||||
"fmt"
|
||||
"go.etcd.io/etcd/api/v3/mvccpb"
|
||||
clientv3 "go.etcd.io/etcd/client/v3"
|
||||
"strconv"
|
||||
@@ -46,18 +48,19 @@ func Listen() {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
log.Infof(fmt.Sprintf("Discover start listen..."))
|
||||
// 服务
|
||||
serviceAll, _ := etcd.Client().Get(stopCtx, common.KeyDiscoverService, clientv3.WithPrefix())
|
||||
serviceAll, _ := etcd.GetClient().Get(common.KeyDiscoverService, clientv3.WithPrefix())
|
||||
for _, kv := range serviceAll.Kvs {
|
||||
onServerChange(clientv3.EventTypePut, string(kv.Key), string(kv.Value))
|
||||
}
|
||||
chService := etcd.Client().Watch(stopCtx, common.KeyDiscoverService, clientv3.WithPrefix(), clientv3.WithRev(serviceAll.Header.Revision+1))
|
||||
chService := etcd.GetClient().Watch(common.KeyDiscoverService, clientv3.WithPrefix(), clientv3.WithRev(serviceAll.Header.Revision+1))
|
||||
// 副本
|
||||
instanceAll, _ := etcd.Client().Get(stopCtx, common.KeyDiscoverInstance, clientv3.WithPrefix())
|
||||
instanceAll, _ := etcd.GetClient().Get(common.KeyDiscoverInstance, clientv3.WithPrefix())
|
||||
for _, kv := range instanceAll.Kvs {
|
||||
onInstanceChange(clientv3.EventTypePut, string(kv.Key), string(kv.Value), nil)
|
||||
}
|
||||
chInstance := etcd.Client().Watch(stopCtx, common.KeyDiscoverScene, clientv3.WithPrefix(), clientv3.WithRev(instanceAll.Header.Revision+1), clientv3.WithPrevKV())
|
||||
chInstance := etcd.GetClient().Watch(common.KeyDiscoverScene, clientv3.WithPrefix(), clientv3.WithRev(instanceAll.Header.Revision+1), clientv3.WithPrevKV())
|
||||
for {
|
||||
select {
|
||||
case msg := <-chService:
|
||||
|
||||
@@ -5,7 +5,6 @@ import (
|
||||
"common/discover/common"
|
||||
"common/log"
|
||||
"common/net/grpc/grpc_conn"
|
||||
"context"
|
||||
"fmt"
|
||||
clientv3 "go.etcd.io/etcd/client/v3"
|
||||
"google.golang.org/grpc"
|
||||
@@ -51,7 +50,7 @@ func RegisterGrpcServer(target string, sid int64, addr string, ttl int64) error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = etcd.Client().Put(context.Background(), fmt.Sprintf("%v/%v", target, sid), addr, clientv3.WithLease(leaseID))
|
||||
_, err = etcd.GetClient().Put(fmt.Sprintf("%v/%v", target, sid), addr, clientv3.WithLease(leaseID))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -64,7 +63,7 @@ func UnRegisterGrpcServer(sid int64) {
|
||||
serverMU.Lock()
|
||||
defer serverMU.Unlock()
|
||||
if leaseID, ok := serverLeaseM[sid]; ok {
|
||||
_, err := etcd.Client().Revoke(context.Background(), leaseID)
|
||||
_, err := etcd.GetClient().Revoke(leaseID)
|
||||
if err != nil {
|
||||
log.Errorf("server.go UnRegisterGrpcServer err: %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user