feat sn 改成 int64

This commit is contained in:
2026-01-30 11:53:20 +08:00
parent 427fca7ed1
commit 5dc5391b07
20 changed files with 189 additions and 182 deletions

View File

@@ -32,13 +32,13 @@ var (
// ServiceProvider 服务提供者
type ServiceProvider struct {
Target string
SID string
SID int64
Addr string
}
// InstanceProvider 副本提供者
type InstanceProvider struct {
InstanceID int // 副本ID
UniqueNo string // 副本唯一编号
SID string
InstanceID int // 副本ID
UniqueNo int64 // 副本唯一编号
SID int64
}

View File

@@ -5,6 +5,7 @@ import (
"git.hlsq.asia/mmorpg/service-common/db/etcd"
"git.hlsq.asia/mmorpg/service-common/discover/common"
"git.hlsq.asia/mmorpg/service-common/log"
"git.hlsq.asia/mmorpg/service-common/utils"
clientv3 "go.etcd.io/etcd/client/v3"
"sync"
)
@@ -12,8 +13,8 @@ import (
// 大量读少量写的情况下读写锁比同步Map更高效
var (
instanceMU = sync.RWMutex{}
instanceM = make(map[string]string) // [uniqueNo]sid
instanceLeaseM = make(map[string]clientv3.LeaseID) // [uniqueNo]
instanceM = make(map[int64]int64) // [uniqueNo]sid
instanceLeaseM = make(map[int64]clientv3.LeaseID) // [uniqueNo]
)
func init() {
@@ -22,7 +23,7 @@ func init() {
}
// FindInstanceByUniqueNo 根据唯一标识查询副本
func FindInstanceByUniqueNo(uniqueNO string) (sid string) {
func FindInstanceByUniqueNo(uniqueNO int64) (sid int64) {
instanceMU.RLock()
defer instanceMU.RUnlock()
if c, ok := instanceM[uniqueNO]; ok {
@@ -32,7 +33,7 @@ func FindInstanceByUniqueNo(uniqueNO string) (sid string) {
}
// RegisterInstance 注册副本
func RegisterInstance(sid string, instanceID int32, uniqueNo string, ttl int64) error {
func RegisterInstance(sid int64, instanceID int32, uniqueNo int64, ttl int64) error {
serverMU.Lock()
defer serverMU.Unlock()
leaseID, err := common.NewLeaseAndKeepAlive(ttl)
@@ -40,7 +41,7 @@ func RegisterInstance(sid string, instanceID int32, uniqueNo string, ttl int64)
return err
}
key := fmt.Sprintf("%v/%v/%v", common.KeyDiscoverInstance, instanceID, uniqueNo)
_, err = etcd.GetClient().Put(key, sid, clientv3.WithLease(leaseID))
_, err = etcd.GetClient().Put(key, utils.Int64ToString(sid), clientv3.WithLease(leaseID))
if err != nil {
return err
}
@@ -49,7 +50,7 @@ func RegisterInstance(sid string, instanceID int32, uniqueNo string, ttl int64)
}
// UnRegisterInstance 解注册副本
func UnRegisterInstance(uniqueNo string) {
func UnRegisterInstance(uniqueNo int64) {
serverMU.Lock()
defer serverMU.Unlock()
if leaseID, ok := instanceLeaseM[uniqueNo]; ok {

View File

@@ -6,6 +6,7 @@ import (
"git.hlsq.asia/mmorpg/service-common/db/etcd"
"git.hlsq.asia/mmorpg/service-common/discover/common"
"git.hlsq.asia/mmorpg/service-common/log"
"git.hlsq.asia/mmorpg/service-common/utils"
"go.etcd.io/etcd/api/v3/mvccpb"
clientv3 "go.etcd.io/etcd/client/v3"
"strconv"
@@ -89,13 +90,13 @@ func onServerChange(t mvccpb.Event_EventType, key, value string) {
case clientv3.EventTypePut:
onCBByType(common.ListenerTypeNewServer, &common.ServiceProvider{
Target: common.KeyDiscoverService + "/" + split[2],
SID: split[3],
SID: utils.StringToInt64(split[3]),
Addr: value,
})
case clientv3.EventTypeDelete:
onCBByType(common.ListenerTypeCloseServer, &common.ServiceProvider{
Target: common.KeyDiscoverService + "/" + split[2],
SID: split[3],
SID: utils.StringToInt64(split[3]),
})
}
}
@@ -111,14 +112,14 @@ func onInstanceChange(t mvccpb.Event_EventType, key, value string, preKv *mvccpb
case clientv3.EventTypePut:
onCBByType(common.ListenerTypeNewInstance, &common.InstanceProvider{
InstanceID: instanceID,
UniqueNo: split[3],
SID: value,
UniqueNo: utils.StringToInt64(split[3]),
SID: utils.StringToInt64(value),
})
case clientv3.EventTypeDelete:
onCBByType(common.ListenerTypeCloseInstance, &common.InstanceProvider{
InstanceID: instanceID,
UniqueNo: split[3],
SID: string(preKv.Value),
UniqueNo: utils.StringToInt64(split[3]),
SID: utils.StringToInt64(string(preKv.Value)),
})
}
}

View File

@@ -15,7 +15,7 @@ import (
var (
serverMU = sync.RWMutex{}
conn = make(map[string]*grpc_conn.GrpcConnectionMgr)
serverLeaseM = make(map[string]clientv3.LeaseID)
serverLeaseM = make(map[int64]clientv3.LeaseID)
)
func init() {
@@ -24,7 +24,7 @@ func init() {
}
// FindServer 根据SID或随机查找服务
func FindServer(target string, sid ...string) (*grpc.ClientConn, error) {
func FindServer(target string, sid ...int64) (*grpc.ClientConn, error) {
serverMU.RLock()
defer serverMU.RUnlock()
if v, ok := conn[target]; ok {
@@ -33,17 +33,17 @@ func FindServer(target string, sid ...string) (*grpc.ClientConn, error) {
return nil, fmt.Errorf("cannot find server")
}
func FindServerAll(target string) map[string]*grpc.ClientConn {
func FindServerAll(target string) map[int64]*grpc.ClientConn {
serverMU.RLock()
defer serverMU.RUnlock()
if v, ok := conn[target]; ok {
return v.LoadAll()
}
return make(map[string]*grpc.ClientConn)
return make(map[int64]*grpc.ClientConn)
}
// RegisterGrpcServer 注册服务提供者
func RegisterGrpcServer(target string, sid string, addr string, ttl int64) error {
func RegisterGrpcServer(target string, sid int64, addr string, ttl int64) error {
serverMU.Lock()
defer serverMU.Unlock()
leaseID, err := common.NewLeaseAndKeepAlive(ttl)
@@ -59,7 +59,7 @@ func RegisterGrpcServer(target string, sid string, addr string, ttl int64) error
}
// UnRegisterGrpcServer 解注册服务提供者
func UnRegisterGrpcServer(sid string) {
func UnRegisterGrpcServer(sid int64) {
serverMU.Lock()
defer serverMU.Unlock()
if leaseID, ok := serverLeaseM[sid]; ok {