feat app 模块化启动

This commit is contained in:
2025-12-13 18:22:35 +08:00
parent 71d4e593c7
commit bc656247c9
41 changed files with 730 additions and 253 deletions

View File

@@ -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
}

View File

@@ -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)
}

View File

@@ -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:

View File

@@ -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)
}