From 2bc157dd2d787f30cd16f8a29bea9df658298d80 Mon Sep 17 00:00:00 2001 From: flswld Date: Fri, 30 Dec 2022 18:27:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 31 ++- cmd/dispatch/main.go | 5 +- cmd/gate/application.toml | 3 +- common/config/config.go | 3 +- dispatch/controller/dispatch_controller.go | 216 ++++++++++--------- doc/HK4E登录流程.jpg | Bin 0 -> 229684 bytes doc/README.md | 1 + fight/app/app.go | 10 + fight/engine/fight_engine.go | 4 + gate/app/app.go | 11 + gate/client_proto/README.md | 17 +- gate/client_proto/client_proto_gen_test.go | 3 +- gate/net/forward.go | 14 +- gate/net/kcp_connect_manager.go | 2 +- gs/app/app.go | 10 + gs/game/user_fight_sync.go | 3 + gs/game/user_manager.go | 20 +- node/api/api.natsrpc.pb.go | 6 +- node/api/api.pb.go | 229 ++++++++++++++------- node/api/api.proto | 7 +- node/service/discovery.go | 95 ++++++--- pathfinding/app/app.go | 10 + 22 files changed, 467 insertions(+), 233 deletions(-) create mode 100644 doc/HK4E登录流程.jpg create mode 100644 doc/README.md diff --git a/README.md b/README.md index 1717d467..c7ed2151 100644 --- a/README.md +++ b/README.md @@ -6,18 +6,31 @@ hk4e game server * Go >= 1.18 -1. 首次需要安装工具 `make dev_tool` -2. 生成协议 `make gen` +> 1. 首次需要安装工具 `make dev_tool` +> 2. 生成协议 `make gen` ## 快速运行 +#### 第三方组件 + * mongodb * nats-server +* redis -1. 启动节点服务器(仅单节点) `cmd/node && go run .` -2. 启动http登录服务器(可多节点) `cmd/dispatch && go run .` -3. 启动网关服务器(可多节点) `cd cmd/gate && go run .` -4. 启动战斗服务器(可多节点) `cmd/fight && go run .` -5. 启动寻路服务器(可多节点) `cmd/pathfinding && go run .` -6. 启动游戏服务器(可多节点) `cd cmd/gs && go run .` -7. 启动游戏管理服务器(仅单节点) `cmd/gm && go run .` +#### 启动顺序 + +> 1. 启动节点服务器(仅单节点 有状态) `cmd/node && go run .` +> 2. 启动http登录服务器(可多节点 无状态) `cmd/dispatch && go run .` +> 3. 启动网关服务器(可多节点 有状态) `cd cmd/gate && go run .` +> 4. 启动战斗服务器(可多节点 有状态) `cmd/fight && go run .` +> 5. 启动寻路服务器(可多节点 无状态) `cmd/pathfinding && go run .` +> 6. 启动游戏服务器(可多节点 有状态) `cd cmd/gs && go run .` +> 7. 启动游戏管理服务器(仅单节点 无状态) `cmd/gm && go run .` + +#### 其它 + +* 配置运行时环境变量 + +```shell +GOLANG_PROTOBUF_REGISTRATION_CONFLICT=ignore +``` diff --git a/cmd/dispatch/main.go b/cmd/dispatch/main.go index 1ee7a757..b26501a6 100644 --- a/cmd/dispatch/main.go +++ b/cmd/dispatch/main.go @@ -18,10 +18,7 @@ var ( func main() { flag.Parse() go func() { - err := statsviz_serve.Serve("0.0.0.0:2345") - if err != nil { - panic(err) - } + _ = statsviz_serve.Serve("0.0.0.0:2345") }() err := app.Run(context.TODO(), *config) if err != nil { diff --git a/cmd/gate/application.toml b/cmd/gate/application.toml index 0bd44456..84025f16 100644 --- a/cmd/gate/application.toml +++ b/cmd/gate/application.toml @@ -1,7 +1,8 @@ [hk4e] -kcp_addr = "127.0.0.1" +kcp_addr = "127.0.0.1" # 该地址只用来注册到节点服务器 并非网关本地监听地址 本地监听为0.0.0.0 kcp_port = 22103 client_proto_proxy_enable = false +version = "320" [logger] level = "DEBUG" diff --git a/common/config/config.go b/common/config/config.go index b8006762..da44872f 100644 --- a/common/config/config.go +++ b/common/config/config.go @@ -38,12 +38,13 @@ type Redis struct { // Hk4e 原神相关 type Hk4e struct { - KcpPort int32 `toml:"kcp_port"` + KcpPort int32 `toml:"kcp_port"` // 该地址只用来注册到节点服务器 并非网关本地监听地址 本地监听为0.0.0.0 KcpAddr string `toml:"kcp_addr"` ResourcePath string `toml:"resource_path"` GameDataConfigPath string `toml:"game_data_config_path"` GachaHistoryServer string `toml:"gacha_history_server"` ClientProtoProxyEnable bool `toml:"client_proto_proxy_enable"` + Version string `toml:"version"` } // MQ 消息队列 diff --git a/dispatch/controller/dispatch_controller.go b/dispatch/controller/dispatch_controller.go index f87fe920..506313b7 100644 --- a/dispatch/controller/dispatch_controller.go +++ b/dispatch/controller/dispatch_controller.go @@ -19,6 +19,7 @@ import ( ) func (c *Controller) query_security_file(context *gin.Context) { + // 很早以前2.6.0版本的时候抓包为了完美还原写的 不清楚有没有副作用暂时不要了 return file, err := os.ReadFile("static/security_file") if err != nil { @@ -35,22 +36,11 @@ func (c *Controller) query_region_list(context *gin.Context) { _, _ = context.Writer.WriteString(regionListBase64) } -func (c *Controller) query_cur_region(context *gin.Context) { - versionName := context.Query("version") - response := "CAESGE5vdCBGb3VuZCB2ZXJzaW9uIGNvbmZpZw==" - if len(context.Request.URL.RawQuery) > 0 { - addr, err := c.discovery.GetGateServerAddr(context.Request.Context(), &api.NullMsg{}) - if err != nil { - logger.Error("get gate server addr error: %v", err) - return - } - regionCurrBase64 := region.GetRegionCurrBase64(addr.IpAddr, int32(addr.Port), c.ec2b) - response = regionCurrBase64 - } +func (c *Controller) getClientVersionByName(versionName string) (int, string) { reg, err := regexp.Compile("[0-9]+") if err != nil { logger.Error("compile regexp error: %v", err) - return + return 0, "" } versionSlice := reg.FindAllString(versionName, -1) version := 0 @@ -58,7 +48,7 @@ func (c *Controller) query_cur_region(context *gin.Context) { v, err := strconv.Atoi(versionSlice[index]) if err != nil { logger.Error("parse client version error: %v", err) - return + return 0, "" } for i := 0; i < len(versionSlice)-1-index; i++ { v *= 10 @@ -69,88 +59,126 @@ func (c *Controller) query_cur_region(context *gin.Context) { // 测试版本 version /= 10 } - if version >= 275 { - logger.Debug("do hk4e 2.8 rsa logic") - if context.Query("dispatchSeed") == "" { - rsp := &httpapi.QueryCurRegionRspJson{ - Content: response, - Sign: "TW9yZSBsb3ZlIGZvciBVQSBQYXRjaCBwbGF5ZXJz", - } - context.JSON(http.StatusOK, rsp) - return - } - keyId := context.Query("key_id") - encPubPrivKey, exist := c.encRsaKeyMap[keyId] - if !exist { - logger.Error("can not found key id: %v", keyId) - return - } - regionInfo, err := base64.StdEncoding.DecodeString(response) - if err != nil { - logger.Error("decode region info error: %v", err) - return - } - chunkSize := 256 - 11 - regionInfoLength := len(regionInfo) - numChunks := int(math.Ceil(float64(regionInfoLength) / float64(chunkSize))) - encryptedRegionInfo := make([]byte, 0) - for i := 0; i < numChunks; i++ { - from := i * chunkSize - to := int(math.Min(float64((i+1)*chunkSize), float64(regionInfoLength))) - chunk := regionInfo[from:to] - pubKey, err := endec.RsaParsePubKeyByPrivKey(encPubPrivKey) - if err != nil { - logger.Error("parse rsa pub key error: %v", err) - return - } - privKey, err := endec.RsaParsePrivKey(encPubPrivKey) - if err != nil { - logger.Error("parse rsa priv key error: %v", err) - return - } - encrypt, err := endec.RsaEncrypt(chunk, pubKey) - if err != nil { - logger.Error("rsa enc error: %v", err) - return - } - decrypt, err := endec.RsaDecrypt(encrypt, privKey) - if err != nil { - logger.Error("rsa dec error: %v", err) - return - } - if bytes.Compare(decrypt, chunk) != 0 { - logger.Error("rsa dec test fail") - return - } - encryptedRegionInfo = append(encryptedRegionInfo, encrypt...) - } - signPrivkey, err := endec.RsaParsePrivKey(c.signRsaKey) - if err != nil { - logger.Error("parse rsa priv key error: %v", err) - return - } - signData, err := endec.RsaSign(regionInfo, signPrivkey) - if err != nil { - logger.Error("rsa sign error: %v", err) - return - } - ok, err := endec.RsaVerify(regionInfo, signData, &signPrivkey.PublicKey) - if err != nil { - logger.Error("rsa verify error: %v", err) - return - } - if !ok { - logger.Error("rsa verify test fail") - return - } + return version, strconv.Itoa(version) +} + +func (c *Controller) query_cur_region(context *gin.Context) { + rspError := func() { + rspContentError := "CAESGE5vdCBGb3VuZCB2ZXJzaW9uIGNvbmZpZw==" + rspSignError := "TW9yZSBsb3ZlIGZvciBVQSBQYXRjaCBwbGF5ZXJz" rsp := &httpapi.QueryCurRegionRspJson{ - Content: base64.StdEncoding.EncodeToString(encryptedRegionInfo), - Sign: base64.StdEncoding.EncodeToString(signData), + Content: rspContentError, + Sign: rspSignError, } context.JSON(http.StatusOK, rsp) - return - } else { - context.Header("Content-type", "text/html; charset=UTF-8") - _, _ = context.Writer.WriteString(response) } + versionName := context.Query("version") + if versionName == "" { + rspError() + return + } + version, versionStr := c.getClientVersionByName(versionName) + if version == 0 { + rspError() + return + } + addr, err := c.discovery.GetGateServerAddr(context.Request.Context(), &api.GetGateServerAddrReq{ + Version: versionStr, + }) + if err != nil { + logger.Error("get gate server addr error: %v", err) + rspError() + return + } + regionCurrBase64 := region.GetRegionCurrBase64(addr.IpAddr, int32(addr.Port), c.ec2b) + if version < 275 { + context.Header("Content-type", "text/html; charset=UTF-8") + _, _ = context.Writer.WriteString(regionCurrBase64) + return + } + logger.Debug("do hk4e 2.8 rsa logic") + if context.Query("dispatchSeed") == "" { + rspError() + return + } + keyId := context.Query("key_id") + encPubPrivKey, exist := c.encRsaKeyMap[keyId] + if !exist { + logger.Error("can not found key id: %v", keyId) + rspError() + return + } + regionInfo, err := base64.StdEncoding.DecodeString(regionCurrBase64) + if err != nil { + logger.Error("decode region info error: %v", err) + rspError() + return + } + chunkSize := 256 - 11 + regionInfoLength := len(regionInfo) + numChunks := int(math.Ceil(float64(regionInfoLength) / float64(chunkSize))) + encryptedRegionInfo := make([]byte, 0) + for i := 0; i < numChunks; i++ { + from := i * chunkSize + to := int(math.Min(float64((i+1)*chunkSize), float64(regionInfoLength))) + chunk := regionInfo[from:to] + pubKey, err := endec.RsaParsePubKeyByPrivKey(encPubPrivKey) + if err != nil { + logger.Error("parse rsa pub key error: %v", err) + rspError() + return + } + privKey, err := endec.RsaParsePrivKey(encPubPrivKey) + if err != nil { + logger.Error("parse rsa priv key error: %v", err) + rspError() + return + } + encrypt, err := endec.RsaEncrypt(chunk, pubKey) + if err != nil { + logger.Error("rsa enc error: %v", err) + rspError() + return + } + decrypt, err := endec.RsaDecrypt(encrypt, privKey) + if err != nil { + logger.Error("rsa dec error: %v", err) + rspError() + return + } + if bytes.Compare(decrypt, chunk) != 0 { + logger.Error("rsa dec test fail") + rspError() + return + } + encryptedRegionInfo = append(encryptedRegionInfo, encrypt...) + } + signPrivkey, err := endec.RsaParsePrivKey(c.signRsaKey) + if err != nil { + logger.Error("parse rsa priv key error: %v", err) + rspError() + return + } + signData, err := endec.RsaSign(regionInfo, signPrivkey) + if err != nil { + logger.Error("rsa sign error: %v", err) + rspError() + return + } + ok, err := endec.RsaVerify(regionInfo, signData, &signPrivkey.PublicKey) + if err != nil { + logger.Error("rsa verify error: %v", err) + rspError() + return + } + if !ok { + logger.Error("rsa verify test fail") + rspError() + return + } + rsp := &httpapi.QueryCurRegionRspJson{ + Content: base64.StdEncoding.EncodeToString(encryptedRegionInfo), + Sign: base64.StdEncoding.EncodeToString(signData), + } + context.JSON(http.StatusOK, rsp) } diff --git a/doc/HK4E登录流程.jpg b/doc/HK4E登录流程.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11ccb534fbb55d9750fb25c9698d910f7b7825a2 GIT binary patch literal 229684 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 I4a=ba1w~YR@c;k- literal 0 HcmV?d00001 diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 00000000..0da528a3 --- /dev/null +++ b/doc/README.md @@ -0,0 +1 @@ +# 关于框架的一些小说明 diff --git a/fight/app/app.go b/fight/app/app.go index cb49cb5a..b978ef79 100644 --- a/fight/app/app.go +++ b/fight/app/app.go @@ -36,6 +36,16 @@ func Run(ctx context.Context, configFile string) error { return err } APPID = rsp.GetAppId() + go func() { + ticker := time.NewTicker(time.Second * 15) + for { + <-ticker.C + _, _ = client.Discovery.KeepaliveServer(context.TODO(), &api.KeepaliveServerReq{ + ServerType: api.FIGHT, + AppId: APPID, + }) + } + }() defer func() { _, _ = client.Discovery.CancelServer(context.TODO(), &api.CancelServerReq{ ServerType: api.FIGHT, diff --git a/fight/engine/fight_engine.go b/fight/engine/fight_engine.go index 8e4c2ca1..7d96a229 100644 --- a/fight/engine/fight_engine.go +++ b/fight/engine/fight_engine.go @@ -238,6 +238,10 @@ func (f *FightRoutine) attackHandle(gameMsg *mq.GameMsg) { continue } attackResult := hitInfo.AttackResult + if attackResult == nil { + logger.Error("attackResult is nil") + continue + } // logger.Debug("run attack handler, attackResult: %v", attackResult) target := f.entityMap[attackResult.DefenseId] if target == nil { diff --git a/gate/app/app.go b/gate/app/app.go index 9ad411de..3414624b 100644 --- a/gate/app/app.go +++ b/gate/app/app.go @@ -34,11 +34,22 @@ func Run(ctx context.Context, configFile string) error { IpAddr: config.CONF.Hk4e.KcpAddr, Port: uint32(config.CONF.Hk4e.KcpPort), }, + Version: config.CONF.Hk4e.Version, }) if err != nil { return err } APPID = rsp.GetAppId() + go func() { + ticker := time.NewTicker(time.Second * 15) + for { + <-ticker.C + _, _ = client.Discovery.KeepaliveServer(context.TODO(), &api.KeepaliveServerReq{ + ServerType: api.GATE, + AppId: APPID, + }) + } + }() defer func() { _, _ = client.Discovery.CancelServer(context.TODO(), &api.CancelServerReq{ ServerType: api.GATE, diff --git a/gate/client_proto/README.md b/gate/client_proto/README.md index 612555ff..4150bca6 100644 --- a/gate/client_proto/README.md +++ b/gate/client_proto/README.md @@ -2,15 +2,14 @@ ## 功能介绍 -### 开启本功能后,网关服务器以及游戏服务器等其他服务器,将预先对客户端上行和服务器下行的协议数据做前置转换,采用任意版本的协议文件(必要字段名必须与现有的协议保持一致)均可,避免了因协议序号混淆等频繁变动,而造成游戏服务器代码不必要的频繁改动 +#### 开启本功能后,网关服务器以及游戏服务器等其他服务器,将预先对客户端上行和服务器下行的协议数据做前置转换,采用任意版本的协议文件(必要字段名必须与现有的协议保持一致)均可,避免了因协议序号混淆等频繁变动,而造成游戏服务器代码不必要的频繁改动 ## 使用方法 -1. 在此目录下建立bin目录和proto目录 -2. 将client_cmd.csv文件放到bin目录下 -3. 将对应版本的proto协议文件复制到proto目录下并编译成pb.go -4. 将client_proto_gen_test.go的TestClientProtoGen方法添加运行配置 -5. 将运行配置输出目录和工作目录都设置为bin目录 -6. 运行并生成client_proto_gen.go -7. 将client_cmd.csv放入gate和gs和fight服务器的运行目录下 -8. 将gate和gs和fight服务器的配置文件中开启client_proto_proxy_enable客户端协议代理功能 +> 1. 在此目录下建立bin目录和proto目录 +> 2. 将对应版本的proto协议文件复制到proto目录下并编译成pb.go +> 3. 将client_proto_gen_test.go的TestClientProtoGen方法添加运行配置 +> 4. 将运行配置输出目录和工作目录都设置为bin目录 +> 5. 运行并生成client_proto_gen.go +> 6. 将client_cmd.csv放入gate和gs和fight服务器的运行目录下 +> 7. 将gate和gs和fight服务器的配置文件中开启client_proto_proxy_enable客户端协议代理功能 diff --git a/gate/client_proto/client_proto_gen_test.go b/gate/client_proto/client_proto_gen_test.go index 78ab21c7..f2e22e36 100644 --- a/gate/client_proto/client_proto_gen_test.go +++ b/gate/client_proto/client_proto_gen_test.go @@ -14,9 +14,8 @@ func TestClientProtoGen(t *testing.T) { nameList := make([]string, 0) for _, entry := range dir { split := strings.Split(entry.Name(), ".") - if len(split) != 2 { + if len(split) != 2 || split[1] != "proto" { continue - //panic("file name error") } nameList = append(nameList, split[0]) } diff --git a/gate/net/forward.go b/gate/net/forward.go index ff99d205..c7c49dab 100644 --- a/gate/net/forward.go +++ b/gate/net/forward.go @@ -295,7 +295,7 @@ func (k *KcpConnectManager) getPlayerToken(req *proto.GetPlayerTokenReq, session } oldSession := k.GetSessionByUserId(tokenVerifyRsp.PlayerID) if oldSession != nil { - // 顶号 + // 本地顶号 kickFinishNotifyChan := make(chan bool) k.kcpEventInput <- &KcpEvent{ ConvId: oldSession.conn.GetConv(), @@ -303,6 +303,18 @@ func (k *KcpConnectManager) getPlayerToken(req *proto.GetPlayerTokenReq, session EventMessage: kickFinishNotifyChan, } <-kickFinishNotifyChan + } else { + // 远程全局顶号 + connCtrlMsg := new(mq.ConnCtrlMsg) + connCtrlMsg.KickUserId = tokenVerifyRsp.PlayerID + connCtrlMsg.KickReason = kcp.EnetServerRelogin + k.messageQueue.SendToAll(&mq.NetMsg{ + MsgType: mq.MsgTypeConnCtrl, + EventId: mq.KickPlayerNotify, + ConnCtrlMsg: connCtrlMsg, + }) + // TODO 确保旧连接已下线 已通知GS已保存好数据 + time.Sleep(time.Second) } // 关联玩家uid和连接信息 session.userId = tokenVerifyRsp.PlayerID diff --git a/gate/net/kcp_connect_manager.go b/gate/net/kcp_connect_manager.go index 88b00c1a..3cd42164 100644 --- a/gate/net/kcp_connect_manager.go +++ b/gate/net/kcp_connect_manager.go @@ -83,7 +83,7 @@ func (k *KcpConnectManager) Start() { k.dispatchKey = regionEc2b.XorKey() // kcp port := strconv.Itoa(int(config.CONF.Hk4e.KcpPort)) - listener, err := kcp.ListenWithOptions(config.CONF.Hk4e.KcpAddr+":"+port, nil, 0, 0) + listener, err := kcp.ListenWithOptions("0.0.0.0:"+port, nil, 0, 0) if err != nil { logger.Error("listen kcp err: %v", err) return diff --git a/gs/app/app.go b/gs/app/app.go index babf40c1..90a2b63f 100644 --- a/gs/app/app.go +++ b/gs/app/app.go @@ -43,6 +43,16 @@ func Run(ctx context.Context, configFile string) error { return err } APPID = rsp.GetAppId() + go func() { + ticker := time.NewTicker(time.Second * 15) + for { + <-ticker.C + _, _ = client.Discovery.KeepaliveServer(context.TODO(), &api.KeepaliveServerReq{ + ServerType: api.GS, + AppId: APPID, + }) + } + }() GSID = rsp.GetGsId() defer func() { _, _ = client.Discovery.CancelServer(context.TODO(), &api.CancelServerReq{ diff --git a/gs/game/user_fight_sync.go b/gs/game/user_fight_sync.go index fe92bd29..46c6317a 100644 --- a/gs/game/user_fight_sync.go +++ b/gs/game/user_fight_sync.go @@ -263,6 +263,9 @@ func (g *GameManager) ClientAbilityChangeNotify(player *model.Player, payloadMsg if worldAvatar == nil { continue } + if abilityMetaAddAbility.Ability == nil { + continue + } worldAvatar.abilityList = append(worldAvatar.abilityList, abilityMetaAddAbility.Ability) case proto.AbilityInvokeArgument_ABILITY_INVOKE_ARGUMENT_META_MODIFIER_CHANGE: abilityMetaModifierChange := new(proto.AbilityMetaModifierChange) diff --git a/gs/game/user_manager.go b/gs/game/user_manager.go index 9bdcfc0b..1bdf82ca 100644 --- a/gs/game/user_manager.go +++ b/gs/game/user_manager.go @@ -174,6 +174,7 @@ func (u *UserManager) OfflineUser(player *model.Player, changeGsInfo *ChangeGsIn logger.Error("deep copy player error: %v", err) return } + playerCopy.DbState = player.DbState go func() { u.SaveUserToDbSync(playerCopy) u.SaveUserToRedisSync(playerCopy) @@ -342,6 +343,7 @@ func (u *UserManager) SaveTempOfflineUser(player *model.Player) { logger.Error("deep copy player error: %v", err) return } + playerCopy.DbState = player.DbState go func() { u.SaveUserToDbSync(playerCopy) }() @@ -384,10 +386,20 @@ func (u *UserManager) LoadUserFromDbSync(userId uint32) *model.Player { } func (u *UserManager) SaveUserToDbSync(player *model.Player) { - err := u.dao.UpdatePlayer(player) - if err != nil { - logger.Error("update player error: %v", err) - return + if player.DbState == model.DbInsert { + err := u.dao.InsertPlayer(player) + if err != nil { + logger.Error("insert player error: %v", err) + return + } + } else if player.DbState == model.DbNormal { + err := u.dao.UpdatePlayer(player) + if err != nil { + logger.Error("update player error: %v", err) + return + } + } else { + logger.Error("invalid player db state: %v", player.DbState) } } diff --git a/node/api/api.natsrpc.pb.go b/node/api/api.natsrpc.pb.go index c89b9ece..42253945 100644 --- a/node/api/api.natsrpc.pb.go +++ b/node/api/api.natsrpc.pb.go @@ -32,7 +32,7 @@ type DiscoveryNATSRPCServer interface { // 获取区服密钥信息 GetRegionEc2B(ctx context.Context, req *NullMsg) (*RegionEc2B, error) // 获取负载最小的网关服务器的地址和端口 - GetGateServerAddr(ctx context.Context, req *NullMsg) (*GateServerAddr, error) + GetGateServerAddr(ctx context.Context, req *GetGateServerAddrReq) (*GateServerAddr, error) } // RegisterDiscoveryNATSRPCServer register Discovery service @@ -53,7 +53,7 @@ type DiscoveryNATSRPCClient interface { // 获取区服密钥信息 GetRegionEc2B(ctx context.Context, req *NullMsg, opt ...natsrpc.CallOption) (*RegionEc2B, error) // 获取负载最小的网关服务器的地址和端口 - GetGateServerAddr(ctx context.Context, req *NullMsg, opt ...natsrpc.CallOption) (*GateServerAddr, error) + GetGateServerAddr(ctx context.Context, req *GetGateServerAddrReq, opt ...natsrpc.CallOption) (*GateServerAddr, error) } type _DiscoveryNATSRPCClient struct { @@ -96,7 +96,7 @@ func (c *_DiscoveryNATSRPCClient) GetRegionEc2B(ctx context.Context, req *NullMs err := c.c.Request(ctx, "GetRegionEc2B", req, rep, opt...) return rep, err } -func (c *_DiscoveryNATSRPCClient) GetGateServerAddr(ctx context.Context, req *NullMsg, opt ...natsrpc.CallOption) (*GateServerAddr, error) { +func (c *_DiscoveryNATSRPCClient) GetGateServerAddr(ctx context.Context, req *GetGateServerAddrReq, opt ...natsrpc.CallOption) (*GateServerAddr, error) { rep := &GateServerAddr{} err := c.c.Request(ctx, "GetGateServerAddr", req, rep, opt...) return rep, err diff --git a/node/api/api.pb.go b/node/api/api.pb.go index b18bace9..9ae3025a 100644 --- a/node/api/api.pb.go +++ b/node/api/api.pb.go @@ -159,6 +159,7 @@ type RegisterServerReq struct { ServerType string `protobuf:"bytes,1,opt,name=server_type,json=serverType,proto3" json:"server_type,omitempty"` GateServerAddr *GateServerAddr `protobuf:"bytes,2,opt,name=gate_server_addr,json=gateServerAddr,proto3" json:"gate_server_addr,omitempty"` + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` } func (x *RegisterServerReq) Reset() { @@ -207,6 +208,13 @@ func (x *RegisterServerReq) GetGateServerAddr() *GateServerAddr { return nil } +func (x *RegisterServerReq) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + type RegisterServerRsp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -372,6 +380,53 @@ func (x *KeepaliveServerReq) GetAppId() string { return "" } +type GetGateServerAddrReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` +} + +func (x *GetGateServerAddrReq) Reset() { + *x = GetGateServerAddrReq{} + if protoimpl.UnsafeEnabled { + mi := &file_api_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetGateServerAddrReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetGateServerAddrReq) ProtoMessage() {} + +func (x *GetGateServerAddrReq) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetGateServerAddrReq.ProtoReflect.Descriptor instead. +func (*GetGateServerAddrReq) Descriptor() ([]byte, []int) { + return file_api_proto_rawDescGZIP(), []int{7} +} + +func (x *GetGateServerAddrReq) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + type RegionEc2B struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -383,7 +438,7 @@ type RegionEc2B struct { func (x *RegionEc2B) Reset() { *x = RegionEc2B{} if protoimpl.UnsafeEnabled { - mi := &file_api_proto_msgTypes[7] + mi := &file_api_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -396,7 +451,7 @@ func (x *RegionEc2B) String() string { func (*RegionEc2B) ProtoMessage() {} func (x *RegionEc2B) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_msgTypes[7] + mi := &file_api_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -409,7 +464,7 @@ func (x *RegionEc2B) ProtoReflect() protoreflect.Message { // Deprecated: Use RegionEc2B.ProtoReflect.Descriptor instead. func (*RegionEc2B) Descriptor() ([]byte, []int) { - return file_api_proto_rawDescGZIP(), []int{7} + return file_api_proto_rawDescGZIP(), []int{8} } func (x *RegionEc2B) GetData() []byte { @@ -431,7 +486,7 @@ type GateServerAddr struct { func (x *GateServerAddr) Reset() { *x = GateServerAddr{} if protoimpl.UnsafeEnabled { - mi := &file_api_proto_msgTypes[8] + mi := &file_api_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -444,7 +499,7 @@ func (x *GateServerAddr) String() string { func (*GateServerAddr) ProtoMessage() {} func (x *GateServerAddr) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_msgTypes[8] + mi := &file_api_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -457,7 +512,7 @@ func (x *GateServerAddr) ProtoReflect() protoreflect.Message { // Deprecated: Use GateServerAddr.ProtoReflect.Descriptor instead. func (*GateServerAddr) Descriptor() ([]byte, []int) { - return file_api_proto_rawDescGZIP(), []int{8} + return file_api_proto_rawDescGZIP(), []int{9} } func (x *GateServerAddr) GetIpAddr() string { @@ -485,63 +540,68 @@ var file_api_proto_rawDesc = []byte{ 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x2a, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x52, 0x73, 0x70, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, - 0x49, 0x64, 0x22, 0x78, 0x0a, 0x11, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x67, 0x61, 0x74, 0x65, - 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x52, 0x0e, 0x67, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x22, 0x3f, 0x0a, 0x11, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x73, - 0x70, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x67, 0x73, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x67, 0x73, 0x49, 0x64, 0x22, 0x49, 0x0a, - 0x0f, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x12, 0x4b, 0x65, 0x65, 0x70, - 0x61, 0x6c, 0x69, 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1f, - 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22, 0x20, 0x0a, 0x0a, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x45, 0x63, 0x32, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3d, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x70, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x70, 0x41, - 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x32, 0xad, 0x03, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x4c, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x11, - 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x4d, 0x73, - 0x67, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0f, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x4e, 0x75, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0e, 0x47, 0x65, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x41, 0x70, 0x70, 0x49, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x49, 0x64, 0x22, 0x92, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x42, 0x0a, 0x10, 0x67, 0x61, 0x74, + 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x52, 0x0e, 0x67, + 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x11, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x73, 0x70, 0x12, 0x15, 0x0a, 0x06, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x67, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x04, 0x67, 0x73, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x0f, 0x43, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0b, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x06, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, + 0x70, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x12, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, + 0x64, 0x22, 0x30, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x22, 0x20, 0x0a, 0x0a, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x63, 0x32, + 0x62, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3d, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x70, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, + 0x70, 0x6f, 0x72, 0x74, 0x32, 0xba, 0x03, 0x0a, 0x09, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x12, 0x4c, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x1a, 0x1b, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x3e, 0x0a, 0x0c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x12, 0x19, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x22, 0x00, + 0x12, 0x44, 0x0a, 0x0f, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4b, + 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x1a, 0x11, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x75, 0x6c, + 0x6c, 0x4d, 0x73, 0x67, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1b, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x70, 0x70, - 0x49, 0x64, 0x52, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x63, 0x32, 0x62, 0x12, 0x11, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x1a, 0x14, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x63, 0x32, - 0x62, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x11, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x1a, 0x18, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x41, 0x64, 0x64, 0x72, 0x22, 0x00, 0x42, 0x13, 0x5a, 0x11, 0x68, 0x6b, 0x34, 0x65, 0x2f, - 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x49, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x52, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x45, 0x63, 0x32, 0x62, 0x12, 0x11, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x4d, 0x73, 0x67, 0x1a, 0x14, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x63, 0x32, 0x62, 0x22, 0x00, + 0x12, 0x4f, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1e, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x47, 0x65, 0x74, 0x47, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, + 0x64, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x47, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x22, + 0x00, 0x42, 0x13, 0x5a, 0x11, 0x68, 0x6b, 0x34, 0x65, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -556,32 +616,33 @@ func file_api_proto_rawDescGZIP() []byte { return file_api_proto_rawDescData } -var file_api_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_api_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_api_proto_goTypes = []interface{}{ - (*NullMsg)(nil), // 0: node.api.NullMsg - (*GetServerAppIdReq)(nil), // 1: node.api.GetServerAppIdReq - (*GetServerAppIdRsp)(nil), // 2: node.api.GetServerAppIdRsp - (*RegisterServerReq)(nil), // 3: node.api.RegisterServerReq - (*RegisterServerRsp)(nil), // 4: node.api.RegisterServerRsp - (*CancelServerReq)(nil), // 5: node.api.CancelServerReq - (*KeepaliveServerReq)(nil), // 6: node.api.KeepaliveServerReq - (*RegionEc2B)(nil), // 7: node.api.RegionEc2b - (*GateServerAddr)(nil), // 8: node.api.GateServerAddr + (*NullMsg)(nil), // 0: node.api.NullMsg + (*GetServerAppIdReq)(nil), // 1: node.api.GetServerAppIdReq + (*GetServerAppIdRsp)(nil), // 2: node.api.GetServerAppIdRsp + (*RegisterServerReq)(nil), // 3: node.api.RegisterServerReq + (*RegisterServerRsp)(nil), // 4: node.api.RegisterServerRsp + (*CancelServerReq)(nil), // 5: node.api.CancelServerReq + (*KeepaliveServerReq)(nil), // 6: node.api.KeepaliveServerReq + (*GetGateServerAddrReq)(nil), // 7: node.api.GetGateServerAddrReq + (*RegionEc2B)(nil), // 8: node.api.RegionEc2b + (*GateServerAddr)(nil), // 9: node.api.GateServerAddr } var file_api_proto_depIdxs = []int32{ - 8, // 0: node.api.RegisterServerReq.gate_server_addr:type_name -> node.api.GateServerAddr + 9, // 0: node.api.RegisterServerReq.gate_server_addr:type_name -> node.api.GateServerAddr 3, // 1: node.api.Discovery.RegisterServer:input_type -> node.api.RegisterServerReq 5, // 2: node.api.Discovery.CancelServer:input_type -> node.api.CancelServerReq 6, // 3: node.api.Discovery.KeepaliveServer:input_type -> node.api.KeepaliveServerReq 1, // 4: node.api.Discovery.GetServerAppId:input_type -> node.api.GetServerAppIdReq 0, // 5: node.api.Discovery.GetRegionEc2b:input_type -> node.api.NullMsg - 0, // 6: node.api.Discovery.GetGateServerAddr:input_type -> node.api.NullMsg + 7, // 6: node.api.Discovery.GetGateServerAddr:input_type -> node.api.GetGateServerAddrReq 4, // 7: node.api.Discovery.RegisterServer:output_type -> node.api.RegisterServerRsp 0, // 8: node.api.Discovery.CancelServer:output_type -> node.api.NullMsg 0, // 9: node.api.Discovery.KeepaliveServer:output_type -> node.api.NullMsg 2, // 10: node.api.Discovery.GetServerAppId:output_type -> node.api.GetServerAppIdRsp - 7, // 11: node.api.Discovery.GetRegionEc2b:output_type -> node.api.RegionEc2b - 8, // 12: node.api.Discovery.GetGateServerAddr:output_type -> node.api.GateServerAddr + 8, // 11: node.api.Discovery.GetRegionEc2b:output_type -> node.api.RegionEc2b + 9, // 12: node.api.Discovery.GetGateServerAddr:output_type -> node.api.GateServerAddr 7, // [7:13] is the sub-list for method output_type 1, // [1:7] is the sub-list for method input_type 1, // [1:1] is the sub-list for extension type_name @@ -680,7 +741,7 @@ func file_api_proto_init() { } } file_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegionEc2B); i { + switch v := v.(*GetGateServerAddrReq); i { case 0: return &v.state case 1: @@ -692,6 +753,18 @@ func file_api_proto_init() { } } file_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RegionEc2B); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GateServerAddr); i { case 0: return &v.state @@ -710,7 +783,7 @@ func file_api_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_proto_rawDesc, NumEnums: 0, - NumMessages: 9, + NumMessages: 10, NumExtensions: 0, NumServices: 1, }, diff --git a/node/api/api.proto b/node/api/api.proto index 34667b0c..f84710d8 100644 --- a/node/api/api.proto +++ b/node/api/api.proto @@ -16,7 +16,7 @@ service Discovery { // 获取区服密钥信息 rpc GetRegionEc2b (NullMsg) returns (RegionEc2b) {} // 获取负载最小的网关服务器的地址和端口 - rpc GetGateServerAddr (NullMsg) returns (GateServerAddr) {} + rpc GetGateServerAddr (GetGateServerAddrReq) returns (GateServerAddr) {} } message NullMsg { @@ -33,6 +33,7 @@ message GetServerAppIdRsp { message RegisterServerReq { string server_type = 1; GateServerAddr gate_server_addr = 2; + string version = 3; } message RegisterServerRsp { @@ -50,6 +51,10 @@ message KeepaliveServerReq { string app_id = 2; } +message GetGateServerAddrReq { + string version = 1; +} + message RegionEc2b { bytes data = 1; } diff --git a/node/service/discovery.go b/node/service/discovery.go index 41c1e763..33f4ee9d 100644 --- a/node/service/discovery.go +++ b/node/service/discovery.go @@ -4,7 +4,9 @@ import ( "context" "sort" "strings" + "sync" "sync/atomic" + "time" "hk4e/common/region" "hk4e/node/api" @@ -35,28 +37,29 @@ type ServerInstance struct { appId string gateServerIpAddr string gateServerPort uint32 + version string + lastAliveTime int64 } type DiscoveryService struct { - regionEc2b *random.Ec2b - // TODO 加锁 - serverInstanceMap map[string]map[string]*ServerInstance - serverAppIdMap map[string]bool - gsIdCounter uint32 + regionEc2b *random.Ec2b // 全局区服密钥信息 + serverInstanceMap map[string]*sync.Map // 全部服务器实例集合 key:服务器类型 value:服务器实例集合 -> key:appid value:服务器实例 + serverAppIdMap map[string]bool // 服务器appid集合 key:appid value:是否存在 + gsIdCounter uint32 // GSID计数器 } func NewDiscoveryService() *DiscoveryService { r := new(DiscoveryService) r.regionEc2b = region.NewRegionEc2b() logger.Info("region ec2b create ok, seed: %v", r.regionEc2b.Seed()) - r.serverInstanceMap = map[string]map[string]*ServerInstance{ - api.GATE: make(map[string]*ServerInstance), - api.GS: make(map[string]*ServerInstance), - api.FIGHT: make(map[string]*ServerInstance), - api.PATHFINDING: make(map[string]*ServerInstance), - } + r.serverInstanceMap = make(map[string]*sync.Map) + r.serverInstanceMap[api.GATE] = &sync.Map{} + r.serverInstanceMap[api.GS] = &sync.Map{} + r.serverInstanceMap[api.FIGHT] = &sync.Map{} + r.serverInstanceMap[api.PATHFINDING] = &sync.Map{} r.serverAppIdMap = make(map[string]bool) r.gsIdCounter = 0 + go r.removeDeadServer() return r } @@ -84,8 +87,9 @@ func (s *DiscoveryService) RegisterServer(ctx context.Context, req *api.Register logger.Info("register new gate server, ip: %v, port: %v", req.GateServerAddr.IpAddr, req.GateServerAddr.Port) inst.gateServerIpAddr = req.GateServerAddr.IpAddr inst.gateServerPort = req.GateServerAddr.Port + inst.version = req.Version } - instMap[appId] = inst + instMap.Store(appId, inst) logger.Info("new server appid is: %v", appId) rsp := &api.RegisterServerRsp{ AppId: appId, @@ -103,11 +107,11 @@ func (s *DiscoveryService) CancelServer(ctx context.Context, req *api.CancelServ if !exist { return nil, errors.New("server type not exist") } - _, exist = instMap[req.AppId] + _, exist = instMap.Load(req.AppId) if !exist { return nil, errors.New("server not exist") } - delete(instMap, req.AppId) + instMap.Delete(req.AppId) return &api.NullMsg{}, nil } @@ -117,12 +121,12 @@ func (s *DiscoveryService) KeepaliveServer(ctx context.Context, req *api.Keepali if !exist { return nil, errors.New("server type not exist") } - inst, exist := instMap[req.AppId] + inst, exist := instMap.Load(req.AppId) if !exist { return nil, errors.New("server not exist") } - // TODO - _ = inst + serverInstance := inst.(*ServerInstance) + serverInstance.lastAliveTime = time.Now().Unix() return &api.NullMsg{}, nil } @@ -133,7 +137,7 @@ func (s *DiscoveryService) GetServerAppId(ctx context.Context, req *api.GetServe if !exist { return nil, errors.New("server type not exist") } - if len(instMap) == 0 { + if s.getServerInstanceMapLen(instMap) == 0 { return nil, errors.New("no server found") } inst := s.getRandomServerInstance(instMap) @@ -152,16 +156,28 @@ func (s *DiscoveryService) GetRegionEc2B(ctx context.Context, req *api.NullMsg) } // GetGateServerAddr 获取负载最小的网关服务器的地址和端口 -func (s *DiscoveryService) GetGateServerAddr(ctx context.Context, req *api.NullMsg) (*api.GateServerAddr, error) { +func (s *DiscoveryService) GetGateServerAddr(ctx context.Context, req *api.GetGateServerAddrReq) (*api.GateServerAddr, error) { logger.Debug("get gate server addr") instMap, exist := s.serverInstanceMap[api.GATE] if !exist { return nil, errors.New("gate server not exist") } - if len(instMap) == 0 { + if s.getServerInstanceMapLen(instMap) == 0 { return nil, errors.New("no gate server found") } - inst := s.getRandomServerInstance(instMap) + versionInstMap := sync.Map{} + instMap.Range(func(key, value any) bool { + serverInstance := value.(*ServerInstance) + if serverInstance.version != req.Version { + return true + } + versionInstMap.Store(key, serverInstance) + return true + }) + if s.getServerInstanceMapLen(&versionInstMap) == 0 { + return nil, errors.New("no gate server found") + } + inst := s.getRandomServerInstance(&versionInstMap) logger.Debug("get gate server addr is, ip: %v, port: %v", inst.gateServerIpAddr, inst.gateServerPort) return &api.GateServerAddr{ IpAddr: inst.gateServerIpAddr, @@ -169,13 +185,42 @@ func (s *DiscoveryService) GetGateServerAddr(ctx context.Context, req *api.NullM }, nil } -func (s *DiscoveryService) getRandomServerInstance(instMap map[string]*ServerInstance) *ServerInstance { +func (s *DiscoveryService) getRandomServerInstance(instMap *sync.Map) *ServerInstance { instList := make(ServerInstanceSortList, 0) - for _, v := range instMap { - instList = append(instList, v) - } + instMap.Range(func(key, value any) bool { + instList = append(instList, value.(*ServerInstance)) + return true + }) sort.Stable(instList) index := random.GetRandomInt32(0, int32(len(instList)-1)) inst := instList[index] return inst } + +func (s *DiscoveryService) getServerInstanceMapLen(instMap *sync.Map) int { + count := 0 + instMap.Range(func(key, value any) bool { + count++ + return true + }) + return count +} + +// 定时移除掉线服务器 +func (s *DiscoveryService) removeDeadServer() { + ticker := time.NewTicker(time.Second * 60) + for { + <-ticker.C + nowTime := time.Now().Unix() + for _, instMap := range s.serverInstanceMap { + instMap.Range(func(key, value any) bool { + serverInstance := value.(*ServerInstance) + if nowTime-serverInstance.lastAliveTime > 60 { + logger.Warn("remove dead server, server type: %v, appid: %v", serverInstance.serverType, serverInstance.appId) + instMap.Delete(key) + } + return true + }) + } + } +} diff --git a/pathfinding/app/app.go b/pathfinding/app/app.go index f02a6d7c..56307df1 100644 --- a/pathfinding/app/app.go +++ b/pathfinding/app/app.go @@ -35,6 +35,16 @@ func Run(ctx context.Context, configFile string) error { return err } APPID = rsp.GetAppId() + go func() { + ticker := time.NewTicker(time.Second * 15) + for { + <-ticker.C + _, _ = client.Discovery.KeepaliveServer(context.TODO(), &api.KeepaliveServerReq{ + ServerType: api.PATHFINDING, + AppId: APPID, + }) + } + }() defer func() { _, _ = client.Discovery.CancelServer(context.TODO(), &api.CancelServerReq{ ServerType: api.PATHFINDING,