集群架构优化

This commit is contained in:
hahwu 2025-12-01 15:17:07 +08:00
parent 39cf03a4ab
commit 200cbaec68
6 changed files with 37 additions and 2 deletions

View File

@ -126,6 +126,7 @@ func SendServerMsg(m *msg.Msg, serverId int) error {
}
func CallServerMsg(m *msg.Msg, serverId int) (*msg.Msg, error) {
m.UniKey = GoUtil.UniKey(fmt.Sprintf("%v,Cluster Msg", m))
if v, ok := serverAgent.Load(serverId); ok {
data, err := GoUtil.GobMarshal(m)
if err != nil {
@ -134,7 +135,6 @@ func CallServerMsg(m *msg.Msg, serverId int) (*msg.Msg, error) {
}
v.(network.Agent).WriteMsg(data)
}
m.UniKey = GoUtil.UniKey("clusterGlobal")
newChan := make(chan *msg.Msg, 1)
registerChanel(m.UniKey, newChan)
timeout := time.After(15 * time.Second)

View File

@ -47,6 +47,7 @@ var Server struct {
ListenAddr string
CenterAddr string
CenterNode int
RemoteAddr string
GameConfPath string

View File

@ -25,6 +25,10 @@
"ServerCenter" : 1,
"GameConfPath": "D:/Github/pet_home_server/src/server/gamedata/config/",
"ListenAddr":":9001",
"CenterAddr": "pethome.bywaystudios.com:9000",
"RemoteAddr":"host.docker.internal:9001",
"RedisAddr":"127.0.0.1",
"RedisPort" :"6379",
"RedisPwd" :"",
@ -35,7 +39,6 @@
"RedisConnType":"Direct",
"GoogleVerify":false,
"RemoteAddr":"host.docker.internal:9001",
"Partition":3,
"KafkaHost":"kafka-server",
"CountryCode":"004",

View File

@ -37,4 +37,20 @@ func init() {
RegisterClusterHandler(msg.HANDLE_TYPE_REQ_CARD, FriendMgrSend)
RegisterClusterHandler(msg.HANDLE_TYPE_AGREE_CARD, FriendMgrSend)
RegisterClusterHandler(msg.CLUSTER_FRIEND_SYNC, ClusterFriendSync)
RegisterClusterHandler(msg.HANDLE_TYPE_CHAMPSHIP_INRANK, champshipInrankHandler)
RegisterClusterHandler(msg.HANDLE_TYPE_CHAMPSHIP_RANK_INFO, champshipRankInfoHandler)
}
func champshipInrankHandler(m *msg.Msg) error {
G_GameLogicPtr.ChampshipMgrSend(m)
return nil
}
func champshipRankInfoHandler(m *msg.Msg) error {
data := G_GameLogicPtr.ChampshipMgrCall(m)
m.To = m.From
m.From = 0
m.Extra = data
FriendMgrSend(m)
return nil
}

View File

@ -90,6 +90,8 @@ func (f *FriendMgr) Init() {
f.RegisterHandler(msg.HANDLE_TYPE_VAR_USER_SET, f.SetVarUserData)
f.RegisterHandler(msg.HANDLE_TYPE_VAR_EXPIRE_SET, f.SetExpireVarData)
f.RegisterHandler(msg.HANDLE_TYPE_CHAMPSHIP_LOGIN, f.SendMsgToCenter)
}
func (f *FriendMgr) getData() *FirendData {
@ -252,6 +254,15 @@ func ClusterFriendSync(m *msg.Msg) error {
return nil
}
// 异步发送消息给中心服
func (f *FriendMgr) SendMsgToCenter(m *msg.Msg) (interface{}, error) {
return nil, mergeCluster.SendServerMsg(m, conf.Server.CenterNode)
}
func (f *FriendMgr) CallMsgToCenter(m *msg.Msg) (interface{}, error) {
return mergeCluster.CallServerMsg(m, conf.Server.CenterNode)
}
func FriendMgrCall(m *msg.Msg) interface{} {
ToServer := GoUtil.GetServerIdByUid(m.To)
if ToServer != conf.Server.ServerID {

View File

@ -107,6 +107,10 @@ const (
HANDLE_TYPE_FRIEND_GREETING_REPLY // 好友问候回复
HANDLE_TYPE_FRIEND_SPONSOER // 好友赞助体力
HANDLE_TYPE_CHAMPSHIP_LOGIN // 锦标赛登录
HANDLE_TYPE_CHAMPSHIP_RANK_INFO // 锦标赛排名信息
)
const (