From 7c30d076fb120de591c4374f76db225791af660d Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 12 Nov 2025 20:00:14 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/FriendMgr.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index 4ca00c64..6d391bf8 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -8,6 +8,7 @@ import ( mergeCluster "server/cluster" "server/conf" "server/game/mod/card" + "server/game/mod/friend" "server/game/mod/item" "server/game/mod/msg" "server/pkg/github.com/name5566/leaf/log" @@ -28,7 +29,7 @@ func (f *FriendMgr) Init() { gob.Register(card.CardInfo{}) gob.Register(item.Item{}) gob.Register([]*item.Item{}) // 注册 []*item.Item 类型 - + gob.Register(friend.ReplyInfo{}) f.key = FRIEND_MGR_KEY f.data = &FirendData{ List: make(map[int][]*msg.Msg), From ee2a87988be5f2e46192363363fccdf2bcc7a0c8 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 13 Nov 2025 10:40:59 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E6=96=AD=E7=BA=BF=E9=87=8D=E8=BF=9E?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/db/Mysql.go | 57 ++++++++++++++++++++++++++++++++---- src/server/db/Redis.go | 47 +++++++++++++++++++++++++++-- src/server/game/FriendMgr.go | 1 - 3 files changed, 96 insertions(+), 9 deletions(-) diff --git a/src/server/db/Mysql.go b/src/server/db/Mysql.go index 309d5cdc..43f835ca 100644 --- a/src/server/db/Mysql.go +++ b/src/server/db/Mysql.go @@ -1,7 +1,6 @@ package db import ( - //"database/sql" "fmt" "reflect" "server/GoUtil" @@ -9,6 +8,8 @@ import ( "server/conf" "server/pkg/github.com/name5566/leaf/log" "strings" + "sync" + "time" // "server/game" _ "github.com/go-sql-driver/mysql" @@ -23,14 +24,60 @@ type user struct { } var SqlDb *sqlx.DB +var sqlDbMu sync.Mutex + +// 封装创建连接 +func connectMySQL() (*sqlx.DB, error) { + MysqlPwd, _ := GoUtil.Decrypt(conf.Server.MySqlPwd) + connect := fmt.Sprintf("%s:%s@(%s:%s)/%s", conf.Server.MySqlUsr, MysqlPwd, conf.Server.MySqlAddr, conf.Server.MySqlPort, conf.Server.DbName) + db, err := sqlx.Connect("mysql", connect) + if err != nil { + return nil, err + } + db.SetMaxOpenConns(20) + return db, nil +} func InitDB() { //"用户名:密码@[连接方式](主机名:端口号)/数据库名" - MysqlPwd, _ := GoUtil.Decrypt(conf.Server.MySqlPwd) - connect := fmt.Sprintf("%s:%s@(%s:%s)/%s", conf.Server.MySqlUsr, MysqlPwd, conf.Server.MySqlAddr, conf.Server.MySqlPort, conf.Server.DbName) - SqlDb = sqlx.MustConnect("mysql", connect) // 设置连接数据库的参数 - SqlDb.SetMaxOpenConns(20) // 设置最大打开的连接数 + db, err := connectMySQL() + if err != nil { + log.Debug("connect mysql failed: %v", err) + return + } + SqlDb = db log.Debug("connect mysql success") + + // 定时检测与重连 + go func() { + ticker := time.NewTicker(time.Second) + defer ticker.Stop() + for range ticker.C { + sqlDbMu.Lock() + cur := SqlDb + sqlDbMu.Unlock() + if cur == nil || cur.Ping() != nil { + log.Debug("mysql ping failed, start reconnect") + ReconnectDB() + } + } + }() +} + +// 自动重连 +func ReconnectDB() { + sqlDbMu.Lock() + defer sqlDbMu.Unlock() + newDb, err := connectMySQL() + if err != nil { + log.Debug("mysql reconnect failed: %v", err) + return + } + if SqlDb != nil { + _ = SqlDb.Close() + } + SqlDb = newDb + log.Debug("mysql reconnect success") } func SeriesTransaction(sqlstrs []string, params [][]any) (err error) { diff --git a/src/server/db/Redis.go b/src/server/db/Redis.go index 850f2ec0..820aa2e9 100644 --- a/src/server/db/Redis.go +++ b/src/server/db/Redis.go @@ -4,6 +4,7 @@ import ( "context" "server/conf" "server/pkg/github.com/name5566/leaf/log" + "sync" "time" "github.com/redis/go-redis/v9" @@ -11,22 +12,62 @@ import ( var ctx = context.Background() +var redisMu sync.Mutex + var Rdb *redis.Client -func InitRedis() { +// 封装创建连接 +func connectRedis() (*redis.Client, error) { rdb := redis.NewClient(&redis.Options{ Addr: conf.Server.RedisAddr + ":" + conf.Server.RedisPort, Password: conf.Server.RedisPwd, // no password set DB: conf.Server.RedisDb, }) + if _, err := rdb.Ping(ctx).Result(); err != nil { + return nil, err + } + return rdb, nil +} - _, err := rdb.Ping(ctx).Result() +func InitRedis() { + rdb, err := connectRedis() if err != nil { log.Debug("连接redis出错,错误信息:%v", err) return } - log.Debug("成功连接redis") Rdb = rdb + log.Debug("成功连接redis") + + // 定时检测与重连 + go func() { + ticker := time.NewTicker(time.Minute) + defer ticker.Stop() + for range ticker.C { + redisMu.Lock() + cur := Rdb + redisMu.Unlock() + if cur == nil || cur.Ping(ctx).Err() != nil { + log.Debug("redis ping failed, start reconnect") + ReconnectRedis() + } + } + }() +} + +// 重连 +func ReconnectRedis() { + redisMu.Lock() + defer redisMu.Unlock() + newRdb, err := connectRedis() + if err != nil { + log.Debug("redis reconnect failed: %v", err) + return + } + if Rdb != nil { + _ = Rdb.Close() + } + Rdb = newRdb + log.Debug("redis reconnect success") } func RedisSetKey(key string, value string, expiration time.Duration) { diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index 6d391bf8..033029a3 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -25,7 +25,6 @@ type FirendData struct { } func (f *FriendMgr) Init() { - gob.Register(card.CardInfo{}) gob.Register(item.Item{}) gob.Register([]*item.Item{}) // 注册 []*item.Item 类型 From fe0fe15890c6328f495bb0ec79baa6d132c9ee96 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 13 Nov 2025 18:02:01 +0800 Subject: [PATCH 03/12] =?UTF-8?q?gm=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Gm.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index e7e48bca..13cd3314 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -1,6 +1,7 @@ package game import ( + "bytes" "encoding/gob" "fmt" "os" @@ -506,7 +507,20 @@ func ReqGmCommand_(player *Player, Command string) error { BaseMod.Uid = player.M_DwUin BaseMod.NickName = player.PlayMod.getBaseMod().NickName BaseMod.LoginTime = GoUtil.Now() - player.PlayMod.mod_list = p1.PlayMod.mod_list + // deep copy p1.PlayMod.mod_list to avoid sharing internal pointers + var modCopy PlayerModList + var buf bytes.Buffer + enc := gob.NewEncoder(&buf) + if err := enc.Encode(p1.PlayMod.mod_list); err != nil { + log.Error("failed to encode mod_list: %v", err) + return err + } + dec := gob.NewDecoder(&buf) + if err := dec.Decode(&modCopy); err != nil { + log.Error("failed to decode mod_list: %v", err) + return err + } + player.PlayMod.mod_list = modCopy player.PlayMod.mod_list.Base = *BaseMod case "orderMerge": // 获取order订单的mergeId OrderMod := player.PlayMod.getOrderMod() From 187742a6ca198b45c31c909b47fb70efdb5cbb2d Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 14 Nov 2025 17:38:24 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E7=AB=9E=E6=A0=87=E8=B5=9B=E6=8E=92?= =?UTF-8?q?=E8=A1=8C=E6=A6=9C=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/ChampshipMgr.go | 1 + src/server/game/RegisterNetworkFunc.go | 2 +- src/server/game/UnitTest.go | 9 +++++++++ src/server/msg/Gameapi.pb.go | 25 +++++++++++++++++++++---- 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/server/game/ChampshipMgr.go b/src/server/game/ChampshipMgr.go index 86a0db04..8b5d029f 100644 --- a/src/server/game/ChampshipMgr.go +++ b/src/server/game/ChampshipMgr.go @@ -254,6 +254,7 @@ func (c *ChampshipMgr) GetPreRankMsg(Uid int) *proto.ResChampshipPreRank { Avatar: int32(SimplePlayer.Avatar), Face: int32(SimplePlayer.Face), Level: int32(SimplePlayer.Level), + Type: int32(v.Type), } } } diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index f218c40b..4d2cc4e1 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -515,7 +515,7 @@ func ReqDecorate(player *Player, buf []byte) error { } if DecorateMod.GetAreaId() != AreaId { // 解锁上报 player.TeLog("plot_unlock", map[string]interface{}{ - "plot_id": AreaId, + "plot_id": DecorateMod.GetAreaId(), }) } player.TeLog("finish_deco", map[string]interface{}{ diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index a8eb4b4f..513e40b0 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -298,6 +298,15 @@ func UnitTriggerMail(p *Player) error { return nil } +func UnitDecorateErr(p *Player) error { + DecorateMod := p.PlayMod.getDecorateMod() + if len(DecorateMod.FinishList) != DecorateMod.Progress { + log.Debug("decorate error uid %d", p.M_DwUin) + } + log.Debug("decorate ok uid %d", p.M_DwUin) + return nil +} + func UnitPlayroomOrder(p *Player) error { PlayroomMod := p.PlayMod.getPlayroomMod() PlayroomMod.CreateOrderReward(100, p.PlayMod.getItemMod()) diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index c2fa39ee..ffa1b440 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -704,6 +704,8 @@ const ( TIME_LINE_TYPE_LOG_TYPE_CARD_GIVE_ACCEPT TIME_LINE_TYPE = 28 // 接受卡牌请求 TIME_LINE_TYPE_LOG_TYPE_FRIEND_INVITE TIME_LINE_TYPE = 29 // 邀请注册 TIME_LINE_TYPE_LOG_TYPE_TREASURE_HELP TIME_LINE_TYPE = 30 // 宠物宝藏帮助 + TIME_LINE_TYPE_LOG_TYPE_FRIEND_SPONSOR TIME_LINE_TYPE = 31 // 好友赞助体力 + TIME_LINE_TYPE_LOG_TYPE_FRIEND_SPONSOR_GET TIME_LINE_TYPE = 32 // 获得好友赞助体力 ) // Enum value maps for TIME_LINE_TYPE. @@ -738,6 +740,8 @@ var ( 28: "LOG_TYPE_CARD_GIVE_ACCEPT", 29: "LOG_TYPE_FRIEND_INVITE", 30: "LOG_TYPE_TREASURE_HELP", + 31: "LOG_TYPE_FRIEND_SPONSOR", + 32: "LOG_TYPE_FRIEND_SPONSOR_GET", } TIME_LINE_TYPE_value = map[string]int32{ "DEFAULT": 0, @@ -769,6 +773,8 @@ var ( "LOG_TYPE_CARD_GIVE_ACCEPT": 28, "LOG_TYPE_FRIEND_INVITE": 29, "LOG_TYPE_TREASURE_HELP": 30, + "LOG_TYPE_FRIEND_SPONSOR": 31, + "LOG_TYPE_FRIEND_SPONSOR_GET": 32, } ) @@ -13551,6 +13557,7 @@ type ResPlayerRank struct { Avatar int32 `protobuf:"varint,4,opt,name=Avatar,proto3" json:"Avatar,omitempty"` Level int32 `protobuf:"varint,5,opt,name=Level,proto3" json:"Level,omitempty"` Score float32 `protobuf:"fixed32,6,opt,name=score,proto3" json:"score,omitempty"` + Type int32 `protobuf:"varint,7,opt,name=type,proto3" json:"type,omitempty"` // 排行类型 0:玩家 2:机器人 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -13627,6 +13634,13 @@ func (x *ResPlayerRank) GetScore() float32 { return 0 } +func (x *ResPlayerRank) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + type ResFriendLog struct { state protoimpl.MessageState `protogen:"open.v1"` Player *ResPlayerSimple `protobuf:"bytes,1,opt,name=Player,proto3" json:"Player,omitempty"` @@ -28123,14 +28137,15 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x06ActLog\x12\x12\n" + "\x04Type\x18\x01 \x01(\x05R\x04Type\x12\x12\n" + "\x04Time\x18\x02 \x01(\x03R\x04Time\x12\x14\n" + - "\x05Param\x18\x03 \x01(\tR\x05Param\"\x8d\x01\n" + + "\x05Param\x18\x03 \x01(\tR\x05Param\"\xa1\x01\n" + "\rResPlayerRank\x12\x10\n" + "\x03Uid\x18\x01 \x01(\x03R\x03Uid\x12\x12\n" + "\x04Name\x18\x02 \x01(\tR\x04Name\x12\x12\n" + "\x04Face\x18\x03 \x01(\x05R\x04Face\x12\x16\n" + "\x06Avatar\x18\x04 \x01(\x05R\x06Avatar\x12\x14\n" + "\x05Level\x18\x05 \x01(\x05R\x05Level\x12\x14\n" + - "\x05score\x18\x06 \x01(\x02R\x05score\"\xa7\x01\n" + + "\x05score\x18\x06 \x01(\x02R\x05score\x12\x12\n" + + "\x04type\x18\a \x01(\x05R\x04type\"\xa7\x01\n" + "\fResFriendLog\x121\n" + "\x06Player\x18\x01 \x01(\v2\x19.tutorial.ResPlayerSimpleR\x06Player\x12\x12\n" + "\x04Type\x18\x02 \x01(\x05R\x04Type\x12\x12\n" + @@ -29255,7 +29270,7 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\n" + "CODE_LOGIN\x10\x01\x12\x10\n" + "\fDEVICE_LOGIN\x10\x02\x12\r\n" + - "\tSDK_LOGIN\x10\x03*\xb9\x06\n" + + "\tSDK_LOGIN\x10\x03*\xf7\x06\n" + "\x0eTIME_LINE_TYPE\x12\v\n" + "\aDEFAULT\x10\x00\x12\x19\n" + "\x15LOG_TYPE_FRIEND_APPLY\x10\x01\x12\x1a\n" + @@ -29286,7 +29301,9 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\x1aLOG_TYPE_PLAYROOM_CAT_LOSE\x10\x1b\x12\x1d\n" + "\x19LOG_TYPE_CARD_GIVE_ACCEPT\x10\x1c\x12\x1a\n" + "\x16LOG_TYPE_FRIEND_INVITE\x10\x1d\x12\x1a\n" + - "\x16LOG_TYPE_TREASURE_HELP\x10\x1e*\x9b\x01\n" + + "\x16LOG_TYPE_TREASURE_HELP\x10\x1e\x12\x1b\n" + + "\x17LOG_TYPE_FRIEND_SPONSOR\x10\x1f\x12\x1f\n" + + "\x1bLOG_TYPE_FRIEND_SPONSOR_GET\x10 *\x9b\x01\n" + "\rCHESS_EX_TYPE\x12\x11\n" + "\rCHESS_EX_NONE\x10\x00\x12\x13\n" + "\x0fCHESS_EX_BUBBLE\x10\x01\x12\x10\n" + From 300d307b8771f5cfa2a04706fd4656fabf2c7123 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 18 Nov 2025 14:05:04 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=8E=92=E8=A1=8C=E6=A6=9C=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/RankMgr.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/server/game/RankMgr.go b/src/server/game/RankMgr.go index df44cfc1..f476e269 100644 --- a/src/server/game/RankMgr.go +++ b/src/server/game/RankMgr.go @@ -3,6 +3,7 @@ package game import ( "fmt" "server/GoUtil" + "server/conf" "server/db" "server/game/mod/msg" "sort" @@ -33,7 +34,8 @@ const ( RANK_TYPE_USER = 1 // 玩家排行榜 RANK_TYPE_GLOBAL = 2 // 全球排行榜 - RANK_USER = "rank_user" // redis玩家排行榜 + RANK_USER = "rank_user" // redis玩家排行榜 + RANK_COUNTRY_USER = "rank_country_user" // redis国家排行榜 ) type Rank struct { @@ -168,17 +170,19 @@ func (r *RankMgr) inRank(m *msg.Msg) (interface{}, error) { } return false }) - - // if len(rankList) >= 100 { - // rankList = rankList[:100] - // } r.setRank(data.RankType, rankList) if data.RankType == RANK_TYPE_USER { + // 全球玩家排行榜 Uid := strconv.Itoa(data.Uid) TimeSort := fmt.Sprintf("0.%d", RANK_TIME_SORT-GoUtil.Now()) TimeSortF, _ := strconv.ParseFloat(TimeSort, 64) db.RedisZAdd(RANK_USER, Uid, data.Score+TimeSortF) + + // 地区玩家排行榜 + RedisKey := fmt.Sprintf("%s_%s", RANK_COUNTRY_USER, conf.Server.CountryCode) + db.RedisZAdd(RedisKey, Uid, data.Score+TimeSortF) } + r.update = true return nil, nil } From 2ee93f24083ed89b4cd905c7aee26cbb97304b2c Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 20 Nov 2025 11:39:54 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Player.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 57c8d6c8..8d7a89c3 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -982,7 +982,7 @@ func (p *Player) UpdateUserInfo() { simple.Physiology = p.PlayMod.getPlayroomMod().GetPhysiologyList() value, _ := json.Marshal(simple) IdStr := strconv.Itoa(int(p.M_DwUin)) - db.RedisSetKey(IdStr, string(value), 0) + go db.RedisSetKey(IdStr, string(value), 0) } func (p *Player) HandleInUserRank() { From edae9c0a5e73ed36ce6cbc9431c4d4a5edfde0bc Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 21 Nov 2025 17:25:57 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E9=80=94=E6=B8=B8GA=E6=89=93=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/json.go | 5 + src/server/conf/server.json | 10 +- src/server/db/Redis.go | 177 +++++++---- src/server/ga/log.go | 29 ++ src/server/galog/.gitignore | 7 + src/server/galog/README.md | 292 ++++++++++++++++++ src/server/galog/buffer.go | 78 +++++ src/server/galog/entry.go | 139 +++++++++ src/server/galog/examples/hey.go | 83 +++++ src/server/galog/examples/main.go | 107 +++++++ src/server/galog/examples/worker/print.go | 43 +++ src/server/galog/examples/worker/report.go | 94 ++++++ src/server/galog/examples/worker/worker.go | 176 +++++++++++ src/server/galog/file.go | 264 ++++++++++++++++ src/server/galog/galog.go | 99 ++++++ src/server/galog/galog_test.go | 85 +++++ src/server/galog/go.mod | 3 + src/server/galog/img/WX20240226-183250@2x.png | Bin 0 -> 239663 bytes src/server/galog/img/WX20240226-184752@2x.png | Bin 0 -> 220996 bytes src/server/galog/log.go | 261 ++++++++++++++++ src/server/galog/suger.go | 122 ++++++++ src/server/galog/suger_test.go | 34 ++ src/server/game/GameLogic.go | 13 - src/server/game/Player.go | 23 +- src/server/game/external.go | 1 + src/server/game/mod/base/Base.go | 1 + src/server/go.mod | 8 +- src/server/go.sum | 10 - 28 files changed, 2076 insertions(+), 88 deletions(-) create mode 100644 src/server/ga/log.go create mode 100644 src/server/galog/.gitignore create mode 100644 src/server/galog/README.md create mode 100644 src/server/galog/buffer.go create mode 100644 src/server/galog/entry.go create mode 100644 src/server/galog/examples/hey.go create mode 100644 src/server/galog/examples/main.go create mode 100644 src/server/galog/examples/worker/print.go create mode 100644 src/server/galog/examples/worker/report.go create mode 100644 src/server/galog/examples/worker/worker.go create mode 100644 src/server/galog/file.go create mode 100644 src/server/galog/galog.go create mode 100644 src/server/galog/galog_test.go create mode 100644 src/server/galog/go.mod create mode 100644 src/server/galog/img/WX20240226-183250@2x.png create mode 100644 src/server/galog/img/WX20240226-184752@2x.png create mode 100644 src/server/galog/log.go create mode 100644 src/server/galog/suger.go create mode 100644 src/server/galog/suger_test.go diff --git a/src/server/conf/json.go b/src/server/conf/json.go index 936a4f4c..471018f0 100644 --- a/src/server/conf/json.go +++ b/src/server/conf/json.go @@ -32,6 +32,11 @@ var Server struct { RedisPwd string RedisDb int + RedisWriteAddr string // 主写地址(host:port 或 单独 host, 仍兼容旧 RedisAddr/RedisPort) + RedisReadAddrs string // 只读地址,逗号分隔(host:port,...) + RedisMasterName string // 哨兵模式下的 master 名称 + RedisConnType string // "Direct" 或 "Sentinel" + GameName string ServerType string diff --git a/src/server/conf/server.json b/src/server/conf/server.json index 4f0f78d4..e139badd 100644 --- a/src/server/conf/server.json +++ b/src/server/conf/server.json @@ -25,9 +25,15 @@ "ServerCenter" : 1, "GameConfPath": "D:/Github/pet_home_server/src/server/gamedata/config/", - "RedisAddr":"127.0.0.1", - "RedisPort" :"6379", + "RedisAddr":"127.0.0.1", + "RedisPort" :"6379", "RedisPwd" :"", + + "RedisWriteAddr":"127.0.0.1:6379", + "RedisReadAddrs":"127.0.0.1:6379", + "RedisMasterName":"mymaster", + "RedisConnType":"Direct", + "GoogleVerify":false, "RemoteAddr":"host.docker.internal:9001", "Partition":3, diff --git a/src/server/db/Redis.go b/src/server/db/Redis.go index 820aa2e9..f8f59896 100644 --- a/src/server/db/Redis.go +++ b/src/server/db/Redis.go @@ -4,7 +4,7 @@ import ( "context" "server/conf" "server/pkg/github.com/name5566/leaf/log" - "sync" + "strings" "time" "github.com/redis/go-redis/v9" @@ -12,15 +12,21 @@ import ( var ctx = context.Background() -var redisMu sync.Mutex +var RdbWrite *redis.Client +var RdbRead *redis.Client -var Rdb *redis.Client - -// 封装创建连接 -func connectRedis() (*redis.Client, error) { +// helper: 创建单个客户端(addr 可以为 host:port 或 host) +func connectClient(addr string) (*redis.Client, error) { + if addr == "" { + return nil, nil + } + // 如果没有端口且配置了旧的 RedisPort,则尝试补端口 + if !strings.Contains(addr, ":") && conf.Server.RedisPort != "" { + addr = addr + ":" + conf.Server.RedisPort + } rdb := redis.NewClient(&redis.Options{ - Addr: conf.Server.RedisAddr + ":" + conf.Server.RedisPort, - Password: conf.Server.RedisPwd, // no password set + Addr: addr, + Password: conf.Server.RedisPwd, DB: conf.Server.RedisDb, }) if _, err := rdb.Ping(ctx).Result(); err != nil { @@ -29,57 +35,95 @@ func connectRedis() (*redis.Client, error) { return rdb, nil } +// InitRedis: 初始化读写分离客户端(向后兼容旧配置) func InitRedis() { - rdb, err := connectRedis() - if err != nil { - log.Debug("连接redis出错,错误信息:%v", err) - return - } - Rdb = rdb - log.Debug("成功连接redis") - - // 定时检测与重连 - go func() { - ticker := time.NewTicker(time.Minute) - defer ticker.Stop() - for range ticker.C { - redisMu.Lock() - cur := Rdb - redisMu.Unlock() - if cur == nil || cur.Ping(ctx).Err() != nil { - log.Debug("redis ping failed, start reconnect") - ReconnectRedis() + // 决定写地址:优先使用 RedisWriteAddr,其次使用旧的 RedisAddr:RedisPort + writeAddr := conf.Server.RedisWriteAddr + if writeAddr == "" { + if conf.Server.RedisAddr != "" { + writeAddr = conf.Server.RedisAddr + if conf.Server.RedisPort != "" && !strings.Contains(writeAddr, ":") { + writeAddr = writeAddr + ":" + conf.Server.RedisPort } } - }() -} + } -// 重连 -func ReconnectRedis() { - redisMu.Lock() - defer redisMu.Unlock() - newRdb, err := connectRedis() + // 决定读地址:优先使用 RedisReadAddrs(逗号分隔),若为空则回退到写地址 + readAddrs := conf.Server.RedisReadAddrs + if strings.TrimSpace(readAddrs) == "" { + readAddrs = writeAddr + } + + // 取第一个可用的只读地址(简单实现) + var readClient *redis.Client + for _, a := range strings.Split(readAddrs, ",") { + a = strings.TrimSpace(a) + if a == "" { + continue + } + c, err := connectClient(a) + if err == nil { + readClient = c + break + } + log.Debug("connect read addr %s failed: %v", a, err) + } + + // 如果所有只读都不可用,尝试连接写地址作为回退 + writeClient, err := connectClient(writeAddr) if err != nil { - log.Debug("redis reconnect failed: %v", err) + log.Debug("连接redis写节点出错,错误信息:%v", err) + // 若读已连上则也作为写回退,否则返回 + if readClient != nil { + RdbWrite = readClient + RdbRead = readClient + log.Debug("只有只读节点可用,读写共用该节点") + return + } return } - if Rdb != nil { - _ = Rdb.Close() + + // 如果读未连接成功,读回退到写 + if readClient == nil { + readClient = writeClient } - Rdb = newRdb - log.Debug("redis reconnect success") + + RdbWrite = writeClient + RdbRead = readClient + log.Debug("成功初始化 redis(读写分离),写: %v, 读: %v", writeAddr, readAddrs) } +// 写操作使用 RdbWrite func RedisSetKey(key string, value string, expiration time.Duration) { - err := Rdb.Set(ctx, key, value, expiration).Err() + if RdbWrite == nil { + log.Debug("redis write client is nil") + return + } + err := RdbWrite.Set(ctx, key, value, expiration).Err() if err != nil { log.Debug("redis set failed, err:%v\n", err) } } -// 获取锁 +// 新增:写入字节数据,避免 string 转换拷贝 +func RedisSetKeyBytes(key string, value []byte, expiration time.Duration) { + if RdbWrite == nil { + log.Debug("redis write client is nil") + return + } + err := RdbWrite.Set(ctx, key, value, expiration).Err() + if err != nil { + log.Debug("redis set failed, err:%v\n", err) + } +} + +// 获取锁(写) func RedisLock(key string, value string, expiration time.Duration) bool { - ok, err := Rdb.SetNX(ctx, key, value, expiration).Result() + if RdbWrite == nil { + log.Debug("redis write client is nil") + return false + } + ok, err := RdbWrite.SetNX(ctx, key, value, expiration).Result() if err != nil { log.Debug("redis lock failed, err:%v\n", err) return false @@ -87,8 +131,12 @@ func RedisLock(key string, value string, expiration time.Duration) bool { return ok } -// 释放锁 +// 释放锁(写) func RedisUnlock(key string, value string) bool { + if RdbWrite == nil { + log.Debug("redis write client is nil") + return false + } script := ` if redis.call("GET", KEYS[1]) == ARGV[1] then return redis.call("DEL", KEYS[1]) @@ -96,7 +144,7 @@ func RedisUnlock(key string, value string) bool { return 0 end ` - result, err := Rdb.Eval(ctx, script, []string{key}, value).Result() + result, err := RdbWrite.Eval(ctx, script, []string{key}, value).Result() if err != nil { log.Debug("redis unlock failed, err:%v\n", err) return false @@ -104,8 +152,12 @@ func RedisUnlock(key string, value string) bool { return result.(int64) == 1 } +// 读操作使用 RdbRead func RedisGetKey(key string) (string, error) { - val, err := Rdb.Get(ctx, key).Result() + if RdbRead == nil { + return "", nil + } + val, err := RdbRead.Get(ctx, key).Result() if err != nil { return "", err } @@ -113,21 +165,32 @@ func RedisGetKey(key string) (string, error) { } func RedisDelKey(key string) { - err := Rdb.Del(ctx, key).Err() + if RdbWrite == nil { + log.Debug("redis write client is nil") + return + } + err := RdbWrite.Del(ctx, key).Err() if err != nil { log.Debug("redis del failed, err:%v\n", err) } } func RedisZAdd(key string, member string, score float64) { - err := Rdb.ZAdd(ctx, key, redis.Z{Score: score, Member: member}).Err() + if RdbWrite == nil { + log.Debug("redis write client is nil") + return + } + err := RdbWrite.ZAdd(ctx, key, redis.Z{Score: score, Member: member}).Err() if err != nil { log.Debug("redis zadd failed, err:%v\n", err) } } func RedisZRangeWithScores(key string, start, stop int64) ([]redis.Z, error) { - val, err := Rdb.ZRangeWithScores(ctx, key, start, stop).Result() + if RdbRead == nil { + return nil, nil + } + val, err := RdbRead.ZRangeWithScores(ctx, key, start, stop).Result() if err != nil { return nil, err } @@ -135,7 +198,10 @@ func RedisZRangeWithScores(key string, start, stop int64) ([]redis.Z, error) { } func RedisZRevRangeWithScores(key string, start, stop int64) ([]redis.Z, error) { - val, err := Rdb.ZRevRangeWithScores(ctx, key, start, stop).Result() + if RdbRead == nil { + return nil, nil + } + val, err := RdbRead.ZRevRangeWithScores(ctx, key, start, stop).Result() if err != nil { return nil, err } @@ -143,11 +209,14 @@ func RedisZRevRangeWithScores(key string, start, stop int64) ([]redis.Z, error) } func RedisZRankWithScores(key, member string) (int64, float64, error) { - val, err := Rdb.ZRank(ctx, key, member).Result() + if RdbRead == nil { + return 0, 0, nil + } + val, err := RdbRead.ZRank(ctx, key, member).Result() if err != nil { return 0, 0, err } - score, err := Rdb.ZScore(ctx, key, member).Result() + score, err := RdbRead.ZScore(ctx, key, member).Result() if err != nil { return 0, 0, err } @@ -155,7 +224,11 @@ func RedisZRankWithScores(key, member string) (int64, float64, error) { } func RedisDel(key string) { - err := Rdb.Del(ctx, key).Err() + if RdbWrite == nil { + log.Debug("redis write client is nil") + return + } + err := RdbWrite.Del(ctx, key).Err() if err != nil { log.Debug("redis del failed, err:%v\n", err) } diff --git a/src/server/ga/log.go b/src/server/ga/log.go new file mode 100644 index 00000000..340020d3 --- /dev/null +++ b/src/server/ga/log.go @@ -0,0 +1,29 @@ +package ga + +import ( + galog "github.com/tuyou/galog" +) + +const ( + PROJECT_ID = "20659" + CLIENT_ID = "Android_5.00_tyGuest,facebook.googleplay.0-hall20659.googleplay.Meowment" +) + +var glogger *galog.GALogger + +func init() { + glog, err := galog.NewGALogger("logs", PROJECT_ID, CLIENT_ID, galog.LogTypeTrack) + if err != nil { + panic(err) + } + glogger = glog +} + +func GAlogEvent(event string, userID string, deviceID string, properties map[string]interface{}) { + glogger. + GetEntry(event). + SetDeviceID(deviceID). + SetUserID(userID). + SetProperties(properties). + Flush() +} diff --git a/src/server/galog/.gitignore b/src/server/galog/.gitignore new file mode 100644 index 00000000..e3c5d3e4 --- /dev/null +++ b/src/server/galog/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +.vscode/ +.idea/ +*.log +logs/ +ga_log/ +asset_log/ \ No newline at end of file diff --git a/src/server/galog/README.md b/src/server/galog/README.md new file mode 100644 index 00000000..70e08d0b --- /dev/null +++ b/src/server/galog/README.md @@ -0,0 +1,292 @@ +# galog + +galog是一个无三方依赖、支持单CPU最高5wQPS写入的ga-sdk组件,可直接用于GA事实日志和资产日志打点。 + +> 说明:默认是异步写入模式,异步队列长度=100,较大QPS时可自行调整,详见参数: +> - enableAsync +> - defaultAsyncMsgLen + +## Usage + +```golang +// ga日志初始化 +projectID := "20433" +clientID := "Android_5.0_tyGuest,weixinPay,tyAccount.alipay.0-hall20433.tuyoo.sdktest" +glogger, err := galog.NewGALogger("logs", projectID, clientID, galog.LogTypeTrack) +if err != nil { + panic(err) +} + +// ga日志打点调用 +props := map[string]interface{}{ + "ip_address": "127.0.0.1", + "proj_app_id": "10010", + "uuid": "4951d472-2c46-4fe5-9c4f-c35b6fb53f67", + "ts": tt.UnixNano(), +} +glogger. + GetEntry("sdk_s_login_succ"). + SetDeviceID("device001"). + SetUserID("10086"). + SetProperties(props). + Flush() +``` + +```golang +// asset日志初始化 +projectID := "28" +clientID := "Android_4.827_tyGuest,nearme.nearme.0-hall28.oppo.bydzz" +glogger, err := galog.NewGALogger("logs", projectID, clientID, galog.LogTypeAsset) +if err != nil { + panic(err) +} + +// asset日志打点调用 +asset := galog.AssetProperties{} +asset. + SetAssetID("13101"). + SetAssetName("\u9501\u5b9a"). + SetAssetType("6"). + SetAssetFinal("2"). + SetAssetAssociated("3"). + SetAssetStartTime("0"). + SetAssetTimeLimit("0"). + SetAssetSource(""). + SetKV("uuid", "uuid-v4") + +glogger. + GetEntry("asset_increase"). + SetDeviceID(""). + SetUserID("10086"). + SetProperties(asset). + Flush() +``` + +## suger usage + +```golang +package chat_log + +import ( + "log" + "strconv" + + "tygit.tuyoo.com/gocomponents/galog" +) + +var ( + slogger *galog.Logger + galogger *galog.GALogger + + lerr error +) + +// MustInitLoggerOnce 服务启动后初始化一次 +func MustInitLoggerOnce() { + slogger, lerr = galog.NewServerLogger(&galog.ServerLogOptions{ + LogDir: "run/logs", + EnableAsync: true, + AsyncQueueSize: 1000, + }) + if lerr != nil { + log.Printf("MustInitLoggerOnce err: %s\n", lerr.Error()) + panic("MustInitLoggerOnce err") + } +} + +// MustInitGALoggerOnce 服务启动后初始化一次 +func MustInitGALoggerOnce() { + galogger, lerr = galog.NewServerGALogger(&galog.ServerGALogOptions{ + LogDir: "run/bi", + EnableAsync: true, + AsyncQueueSize: 1000, + ProjectID: ProjectId, + ClientID: ClientId, + LogType: galog.LogTypeTrack, + }) + if lerr != nil { + log.Printf("MustInitGALoggerOnce err: %s\n", lerr.Error()) + panic("MustInitGALoggerOnce err") + } +} + +func LogToGANew(eventName, deviceId string, userId int64, prop map[string]interface{}, version string) { + lib := map[string]string{ + "lib_type": "golang", + "lib_version": version, + } + + galogger. + GetEntry(eventName). + SetDeviceID(deviceId). + SetUserID(strconv.FormatInt(userId, 10)). + SetLib(lib). + SetProperties(prop). + Flush() +} +``` + +## 日志目录结构 + +``` +{logDir}/ga_log/{日志类型}_{hostname}_{年月日}_{小时}.log +{logDir}/asset_log/{日志类型}_{hostname}_{年月日}_{小时}.log +``` + +## Benchmark + +- 测试机:Mac-M1 8c 16G + +- 同步写入模式 +``` +goos: darwin +goarch: arm64 +pkg: tygit.tuyoo.com/gocomponents/galog +BenchmarkGaLog-8 87565 12831 ns/op 7590 B/op 90 allocs/op +BenchmarkAssetLog-8 234127 5832 ns/op 3028 B/op 44 allocs/op +PASS +ok tygit.tuyoo.com/gocomponents/galog 3.190s + +# 100w行日志文件,写入性能未见明显衰减 +BenchmarkGaLog-8 89175 12481 ns/op 7590 B/op 90 allocs/op +BenchmarkAssetLog-8 195075 5933 ns/op 3028 B/op 44 allocs/op +``` + +- 异步写入模式(默认) +``` +goos: darwin +goarch: arm64 +pkg: tygit.tuyoo.com/gocomponents/galog +BenchmarkGaLog-8 95530 11331 ns/op 7599 B/op 90 allocs/op +BenchmarkAssetLog-8 337963 3512 ns/op 3032 B/op 44 allocs/op +PASS +ok tygit.tuyoo.com/gocomponents/galog 3.040s + +# 120w行日志文件,写入性能未见明显衰减 +BenchmarkGaLog-8 116559 10450 ns/op 7598 B/op 90 allocs/op +BenchmarkAssetLog-8 335670 3512 ns/op 3032 B/op 44 allocs/op +``` + +## Load Testing + +CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o galog examples/hey.go + +- 测试机:sa101-ecs-bj4-pt57-test-wxy +- linux服务器配置:2c4G +- 测试时间:2024-02-26 17:45 ~ 18:45 + +``` +./galog -n 1000000 -c 2 -q 100 +``` + +| 压测说明 | CPU平台使用率 | 内存使用率 | IO平均使用率 | 进程打开的文件句柄数 | +|----- | ----- | ----- | ----- | ----- | +| 无任务 | 1% | 52% | 0.08% | 0 | +| 并发=2,qps=200 | 1% | 52% | 0.08% | 7 | +| 并发=5,qps=5000 | 4% | 52% | 1% | 7 | +| 并发=5,qps=50000(队列1000,有阻塞) realqps=5000 | 40% | 52% | 30% | 7 | +| 并发=5,qps=50000(队列10000,有阻塞) realqps=6500 | 6% | 52% | 1% | 7 | +| 并发=20,qps=50000(队列10000,有阻塞) realqps=18000 | 10% | 52% | 3% | 7 | +| 并发=50,qps=50000(队列10000) realqps=50000 | 35% | 52% | 10% | 7 | +| 并发=100,qps=100000(队列10000) realqps=90000 | 75% | 52% | 16% | 7 | + +- 压测结果:写入队列=10000,单核支持最高写入QPS约5w,CPU=75%。 + +- 监控结果如下: +![img2.png](img/WX20240226-183250@2x.png) +![img2.png](img/WX20240226-184752@2x.png) + +## ga日志格式范式 + +```json +{ + "project_id": "20437", + "type": "track", + "event": "sdk_sword_holder_succ", + "event_time": 1708568434744, + "device_id": "", + "user_id": "908825698", + "client_id": "Android_5.1_tyGuest,weixinPay,tyAccount.alipay.0-hall20437.tuyoo.sdkonline", + "properties": { + "sdk_track_id": "3:6060:636978360:1708568434", + "sdk_sub_channel": "fish3d", + "country": "中国", + "proj_game_id": "", + "sdk_error_code": "", + "sdk_error_msg": "", + "city": "宁德市", + "sdk_sword_track_id": "807370ff-ceac-4ee3-b68f-50642ca4953c", + "sub_platform_id": "2", + "sdk_sword_holder_id": "320", + "sdk_sword_version": "v1.1.7", + "uuid": "56fdf0f9-9daa-4bf6-be69-88e15f05c36c", + "province": "福建省", + "sdk_login_channel_type": "", + "app_id": "20437", + "sdk_s_login_channel_type": "", + "sdk_main_channel": "official", + "game_id": "20437", + "sdk_s_route": "/api/sworder-server/rule/v1/getUserRisk", + "sdk_sword_holder_result": "999999", + "proj_cloud_id": "3", + "proj_app_id": "10010", + "ip_address": "59.58.58.18", + "sdk_sword_holder_type": "login", + "sdk_sword_holder_name": "非信任设备禁止登录", + "proj_client_id": "Android_5.505_tyGuest,tyAccount,yidunlogin.weixinPay,alipay,yinlian,jingdong,weixinShare.0-hall28.official.fish3d", + "sdk_sword_holder_process": "{\"330\":[\"[330-0]未命中\"]}", + "sdk_yidun_device_id": "UuCJztYTtxRETUVUAEaFoCQaw8H2qkWE", + "platform_id": "1", + "sub_channel_id": "sdkonline", + "proj_package_name": "", + "channel_id": "tuyoo" + }, + "lib": { + "lib_version": "v1.0.0", + "lib_type": "go" + }, +} +``` + +## asset日志格式范例 + +```json +{ + "project_id": "28", + "type": "asset", + "event": "asset_increase", + "event_time": 1706631881042, + "device_id": "", + "user_id": "928426614", + "client_id": "Android_4.827_tyGuest,nearme.nearme.0-hall28.oppo.bydzz", + "properties": { + "proj_ga_eventId": "STARTUP_QUEST_REWARD_COIN", + "proj_asset_value": "2", + "proj_asset_final": "2", + "proj_chip_type": "6", + "proj_asset_id": "13101", + "proj_asset_name": "\u9501\u5b9a", + "proj_asset_type": "free", + "proj_asset_time_limit": "0", + "proj_asset_start_time": "0", + "proj_asset_source": "", + "proj_tuyoo_order_id": "", + "game_id": "28", + "app_id": "10063", + "proj_project_id": "28", + "proj_client_id": "Android_4.827_tyGuest,nearme.nearme.0-hall28.oppo.bydzz", + "uuid": "77b907688c624076a84ca7b4b29668a5" + }, + "lib": { + "lib_version": "v1.0.0", + "lib_type": "go" + } +} +``` + +## Changelog + +| 版本 | 修订说明 | 提交人 | 发布时间 | +|----- | ----- | ----- | ----- | +| v1.0.0 | galog 0依赖、支持异步写入、小时切割日志、ga和asset日志类型 | 田文 | 2024.02.22 | +| v1.1.0 | add suger | 田文 | 2025.06.30 | \ No newline at end of file diff --git a/src/server/galog/buffer.go b/src/server/galog/buffer.go new file mode 100644 index 00000000..51b0e15d --- /dev/null +++ b/src/server/galog/buffer.go @@ -0,0 +1,78 @@ +package galog + +import ( + "sync" +) + +var ( + defaultBufPool = newBufPool() +) + +const ( + _size = 1024 + _defaultLineEnding = "\n" +) + +type BufPool struct { + p *sync.Pool +} + +func newBufPool() BufPool { + return BufPool{p: &sync.Pool{ + New: func() interface{} { + return &Buffer{bs: make([]byte, 0, _size)} + }, + }} +} + +// Get retrieves a Buffer from the pool, creating one if necessary. +func (p BufPool) Get() *Buffer { + buf := p.p.Get().(*Buffer) + buf.Reset() + buf.pool = p + return buf +} + +func (p BufPool) put(buf *Buffer) { + p.p.Put(buf) +} + +// Buffer is a thin wrapper around a byte slice. It's intended to be pooled, so +// the only way to construct one is via a Pool. +type Buffer struct { + bs []byte + pool BufPool +} + +// AppendByte writes a single byte to the Buffer. +func (b *Buffer) AppendByte(v byte) { + b.bs = append(b.bs, v) +} + +// AppendString writes a string to the Buffer. +func (b *Buffer) AppendString(s string) { + b.bs = append(b.bs, s...) +} + +// Bytes returns a mutable reference to the underlying byte slice. +func (b *Buffer) Bytes() []byte { + return b.bs +} + +// String returns a string copy of the underlying byte slice. +func (b *Buffer) String() string { + return string(b.bs) +} + +// Reset resets the underlying byte slice. Subsequent writes re-use the slice's +// backing array. +func (b *Buffer) Reset() { + b.bs = b.bs[:0] +} + +// Free returns the Buffer to its Pool. +// +// Callers must not retain references to the Buffer after calling Free. +func (b *Buffer) Free() { + b.pool.put(b) +} diff --git a/src/server/galog/entry.go b/src/server/galog/entry.go new file mode 100644 index 00000000..f0a43587 --- /dev/null +++ b/src/server/galog/entry.go @@ -0,0 +1,139 @@ +package galog + +var ( + defaultLib = map[string]string{"lib_type": "go", "lib_version": "v1.0.0"} +) + +type EntryBean struct { + // ProjectID 独立项目ID + ProjectID string `json:"project_id"` + // LogType 日志类型 默认是track + LogType LogType `json:"type"` + // Event 事件ID + Event string `json:"event"` + // EventTime 毫秒级时间 + EventTime int64 `json:"event_time"` + // DeviceID 设备ID + DeviceID string `json:"device_id"` + // UserID 用户ID + UserID string `json:"user_id"` + // ClientID clientID + ClientID string `json:"client_id"` + // Properties 重要额外字段 + Properties map[string]interface{} `json:"properties"` + // Lib 代码库 + Lib map[string]string `json:"lib"` +} + +type Entry struct { + logger *GALogger + bean *EntryBean +} + +func (e *Entry) SetUserID(uid string) *Entry { + if uid == "" { + uid = "0" + } + e.bean.UserID = uid + return e +} + +func (e *Entry) SetDeviceID(did string) *Entry { + e.bean.DeviceID = did + return e +} + +func (e *Entry) SetLib(lib map[string]string) *Entry { + e.bean.Lib = lib + return e +} + +func (e *Entry) SetClientID(cid string) *Entry { + e.bean.ClientID = cid + return e +} + +func (e *Entry) SetProperties(props map[string]interface{}) *Entry { + e.bean.Properties = props + return e +} + +// Flush 日志写入 +func (e *Entry) Flush() { + defer e.logger.putEntry(e) + e.logger.biz(e.bean) +} + +type AssetProperties map[string]interface{} + +// SetAssetID 资产id +func (ap AssetProperties) SetAssetID(assetID string) AssetProperties { + ap["proj_asset_id"] = assetID + return ap +} + +// SetAssetName 资产名称 +func (ap AssetProperties) SetAssetName(assetName string) AssetProperties { + ap["proj_asset_name"] = assetName + return ap +} + +// SetAssetType 资产付费类型 +func (ap AssetProperties) SetAssetType(assetType string) AssetProperties { + ap["proj_asset_type"] = assetType + return ap +} + +// SetAssetValue 资产变化数量 +func (ap AssetProperties) SetAssetValue(assetValue string) AssetProperties { + ap["proj_asset_value"] = assetValue + return ap +} + +// SetAssetFinal 资产变化后的剩余数量 +func (ap AssetProperties) SetAssetFinal(assetFinal string) AssetProperties { + ap["proj_asset_final"] = assetFinal + return ap +} + +// SetAssetTimeLimit 持续性资产持续时间 +func (ap AssetProperties) SetAssetTimeLimit(assetTimeLimit string) AssetProperties { + ap["proj_asset_time_limit"] = assetTimeLimit + return ap +} + +// SetAssetStartTime 持续性资产生效时间 +func (ap AssetProperties) SetAssetStartTime(assetStartTime string) AssetProperties { + ap["proj_asset_start_time"] = assetStartTime + return ap +} + +// SetAssetSource 变化的原因 +func (ap AssetProperties) SetAssetSource(assetSource string) AssetProperties { + ap["proj_asset_source"] = assetSource + return ap +} + +// SetAssetAssociated 变化关联资产 +func (ap AssetProperties) SetAssetAssociated(assetAssociated string) AssetProperties { + ap["proj_asset_associated"] = assetAssociated + return ap +} + +// SetTuyooOrderID SDK订单号 +func (ap AssetProperties) SetTuyooOrderID(tuyooOrderID string) AssetProperties { + ap["proj_tuyoo_order_id"] = tuyooOrderID + return ap +} + +// SetOrderID 游戏服订单号 +func (ap AssetProperties) SetOrderID(assetOrderID string) AssetProperties { + ap["proj_order_id"] = assetOrderID + return ap +} + +// SetKV 设置自定义字段必须通知到数据组,否则打点失败 +func (ap AssetProperties) SetKV(k, v string) AssetProperties { + ap[k] = v + return ap +} diff --git a/src/server/galog/examples/hey.go b/src/server/galog/examples/hey.go new file mode 100644 index 00000000..80c7ffe8 --- /dev/null +++ b/src/server/galog/examples/hey.go @@ -0,0 +1,83 @@ +package main + +import ( + "flag" + "fmt" + "os" + "os/signal" + "runtime" + + "tygit.tuyoo.com/gocomponents/galog/examples/worker" +) + +var ( + output = flag.String("o", "", "") + + c = flag.Int("c", 50, "") + n = flag.Int("n", 200, "") + q = flag.Float64("q", 0, "") + + cpus = flag.Int("cpus", runtime.GOMAXPROCS(-1), "") +) + +var usage = `Usage: hey [options...] + +Options: + -n Number of requests to run. Default is 200. + -c Number of workers to run concurrently. Total number of requests cannot + be smaller than the concurrency level. Default is 50. + -q Rate limit, in queries per second (QPS) per worker. Default is no rate limit. + -o Output type. If none provided, a summary is printed. + "csv" is the only supported alternative. Dumps the response + metrics in comma-separated values format. + + -cpus Number of used cpu cores. + (default for current machine is %d cores) +` + +func MainHey() { + flag.Usage = func() { + fmt.Fprintf(os.Stderr, usage, runtime.NumCPU()) + } + + flag.Parse() + + runtime.GOMAXPROCS(*cpus) + num := *n + conc := *c + q := *q + + if num <= 0 || conc <= 0 { + usageAndExit("-n and -c cannot be smaller than 1.") + } + + if num < conc { + usageAndExit("-n cannot be less than -c.") + } + + w := &worker.Work{ + N: num, + C: conc, + QPS: q, + Output: *output, + } + w.Init() + + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + go func() { + <-c + w.Stop() + }() + w.Run() +} + +func usageAndExit(msg string) { + if msg != "" { + fmt.Fprint(os.Stderr, msg) + fmt.Fprintf(os.Stderr, "\n\n") + } + flag.Usage() + fmt.Fprintf(os.Stderr, "\n") + os.Exit(1) +} diff --git a/src/server/galog/examples/main.go b/src/server/galog/examples/main.go new file mode 100644 index 00000000..c8944256 --- /dev/null +++ b/src/server/galog/examples/main.go @@ -0,0 +1,107 @@ +package main + +import ( + "log" + "time" + + "tygit.tuyoo.com/gocomponents/galog" +) + +func main() { + log.Println("log ga asset server every 5 seconds.") + go logGA() + go logAsset() + logServer() +} + +func logGA() { + projectID := "20433" + clientID := "Android_5.0_tyGuest,weixinPay,tyAccount.alipay.0-hall20433.tuyoo.sdktest" + logger, err := galog.NewServerGALogger(&galog.ServerGALogOptions{ + ProjectID: projectID, + ClientID: clientID, + LogDir: "ga_log", + LogType: galog.LogTypeTrack, + EnableAsync: true, + AsyncQueueSize: 1000, + }) + if err != nil { + log.Fatal(err) + } + t := time.NewTicker(5 * time.Second) + + for tt := range t.C { + log.Println("logGA") + logger. + GetEntry("sdk_s_login_succ"). + SetDeviceID("device001"). + SetUserID("10086"). + SetProperties(map[string]interface{}{ + "ip_address": "127.0.0.1", + "proj_app_id": "10010", + "uuid": "4951d472-2c46-4fe5-9c4f-c35b6fb53f67", + "ts": tt.UnixNano(), + }). + Flush() + } +} + +func logAsset() { + projectID := "28" + clientID := "Android_4.827_tyGuest,nearme.nearme.0-hall28.oppo.bydzz" + logger, err := galog.NewGALogger(".", projectID, clientID, galog.LogTypeAsset) + if err != nil { + log.Fatal(err) + } + t := time.NewTicker(5 * time.Second) + + asset := galog.AssetProperties{} + asset.SetAssetID("13101"). + SetAssetName("\u9501\u5b9a"). + SetAssetType("6"). + SetAssetFinal("2"). + SetAssetAssociated("3"). + SetAssetStartTime("0"). + SetAssetTimeLimit("0"). + SetAssetSource(""). + SetKV("uuid", "uuid-v4") + + for tt := range t.C { + log.Println("logAssert") + _ = tt + logger. + GetEntry("asset_increase"). + SetDeviceID(""). + SetUserID("10086"). + SetProperties(asset). + Flush() + } +} + +func logServer() { + slogger, _ := galog.NewServerLogger(&galog.ServerLogOptions{ + LogDir: "logs", + EnableAsync: true, + AsyncQueueSize: 1000, + }) + + t := time.NewTicker(5 * time.Second) + + for tt := range t.C { + log.Println("logServer") + _ = tt + + msgMap := map[string]interface{}{ + "CreateTime": time.Now().UnixNano() / int64(time.Microsecond), + "Host": "host", + "AppId": "10010", + "UserId": "12345", + "Level": "Notice", + "Entry": "Login", + "Func": "HandleLogin", + "TraceMsg": "HandlerWSFriApplyList|HandlerWSFriApplyList", + "Params": "{\"isoCode\":\"CN\",\"P0\":[3,\"Total: 3, End: 0, \"],\"pf\":\"wx\",\"appVer\":\"1.0\",\"sdkVer\":\"1.0\",\"ip\":\"58.247.195.158\",\"clientId\":\"7abd64bf-3fb6-4fef-a25e-e6562b7fb857\",\"timeZone\":\"Asia/Shanghai\",\"loginMark\":\"\",\"st\":1472}", + } + slogger.BizErr(msgMap) + } +} diff --git a/src/server/galog/examples/worker/print.go b/src/server/galog/examples/worker/print.go new file mode 100644 index 00000000..9e3f0bd7 --- /dev/null +++ b/src/server/galog/examples/worker/print.go @@ -0,0 +1,43 @@ +package worker + +import ( + "fmt" + "text/template" +) + +func newTemplate(output string) *template.Template { + outputTmpl := output + switch outputTmpl { + case "": + outputTmpl = defaultTmpl + case "csv": + outputTmpl = csvTmpl + } + return template.Must(template.New("tmpl").Funcs(tmplFuncMap).Parse(outputTmpl)) +} + +var tmplFuncMap = template.FuncMap{ + "formatNumber": formatNumber, + "formatNumberInt": formatNumberInt, +} + +func formatNumber(duration float64) string { + return fmt.Sprintf("%4.4f", duration) +} + +func formatNumberInt(duration int) string { + return fmt.Sprintf("%d", duration) +} + +var ( + defaultTmpl = ` +Summary: + Total: {{ formatNumber .Total.Seconds }} secs + Requests/sec: {{ formatNumber .Rps }} + + TotalNumRes: {{ .NumRes }} + AvgTotal: {{ .AvgTotal }} +` + csvTmpl = `{{ $connLats := .ConnLats }}{{ $dnsLats := .DnsLats }}{{ $dnsLats := .DnsLats }}{{ $reqLats := .ReqLats }}{{ $delayLats := .DelayLats }}{{ $resLats := .ResLats }}{{ $statusCodeLats := .StatusCodes }}{{ $offsets := .Offsets}}response-time,DNS+dialup,DNS,Request-write,Response-delay,Response-read,status-code,offset{{ range $i, $v := .Lats }} +{{ formatNumber $v }},{{ formatNumber (index $connLats $i) }},{{ formatNumber (index $dnsLats $i) }},{{ formatNumber (index $reqLats $i) }},{{ formatNumber (index $delayLats $i) }},{{ formatNumber (index $resLats $i) }},{{ formatNumberInt (index $statusCodeLats $i) }},{{ formatNumber (index $offsets $i) }}{{ end }}` +) diff --git a/src/server/galog/examples/worker/report.go b/src/server/galog/examples/worker/report.go new file mode 100644 index 00000000..d644e2a9 --- /dev/null +++ b/src/server/galog/examples/worker/report.go @@ -0,0 +1,94 @@ +package worker + +import ( + "bytes" + "fmt" + "io" + "log" + "time" +) + +type report struct { + avgTotal float64 + rps float64 + + results chan *result + done chan bool + total time.Duration + + numRes int64 + output string + + w io.Writer +} + +func newReport(w io.Writer, results chan *result, output string, n int) *report { + return &report{ + output: output, + results: results, + done: make(chan bool, 1), + w: w, + } +} + +func runReporter(r *report) { + // Loop will continue until channel is closed + for res := range r.results { + r.numRes++ + r.avgTotal += res.duration.Seconds() + } + // Signal reporter is done. + r.done <- true +} + +func (r *report) finalize(total time.Duration) { + r.total = total + r.rps = float64(r.numRes) / r.total.Seconds() + r.print() +} + +func (r *report) print() { + buf := &bytes.Buffer{} + if err := newTemplate(r.output).Execute(buf, r.snapshot()); err != nil { + log.Println("error:", err.Error()) + return + } + r.printf(buf.String()) + + r.printf("\n") +} + +func (r *report) printf(s string, v ...interface{}) { + fmt.Fprintf(r.w, s, v...) +} + +func (r *report) snapshot() Report { + snapshot := Report{ + AvgTotal: r.avgTotal, + Rps: r.rps, + Total: r.total, + NumRes: r.numRes, + } + + return snapshot +} + +type Report struct { + AvgTotal float64 + Rps float64 + + Total time.Duration + + NumRes int64 +} + +type LatencyDistribution struct { + Percentage int + Latency float64 +} + +type Bucket struct { + Mark float64 + Count int + Frequency float64 +} diff --git a/src/server/galog/examples/worker/worker.go b/src/server/galog/examples/worker/worker.go new file mode 100644 index 00000000..e5e4ef17 --- /dev/null +++ b/src/server/galog/examples/worker/worker.go @@ -0,0 +1,176 @@ +package worker + +import ( + "fmt" + "io" + "os" + "strconv" + "sync" + "time" + + "tygit.tuyoo.com/gocomponents/galog" +) + +var startTime = time.Now() + +// now returns time.Duration using stdlib time +func now() time.Duration { return time.Since(startTime) } + +// Max size of the buffer of result channel. +const maxResult = 1000000 + +type result struct { + offset time.Duration + duration time.Duration +} + +type Work struct { + // N is the total number of requests to make. + N int + + // C is the concurrency level, the number of concurrent workers to run. + C int + + // Qps is the rate limit in queries per second. + QPS float64 + + // Output represents the output type. If "csv" is provided, the + // output will be dumped as a csv stream. + Output string + + // Writer is where results will be written. If nil, results are written to stdout. + Writer io.Writer + + initOnce sync.Once + results chan *result + stopCh chan struct{} + start time.Duration + + report *report +} + +func (b *Work) writer() io.Writer { + if b.Writer == nil { + return os.Stdout + } + return b.Writer +} + +// Init initializes internal data-structures +func (b *Work) Init() { + b.initOnce.Do(func() { + b.results = make(chan *result, min(b.C*1000, maxResult)) + b.stopCh = make(chan struct{}, b.C) + b.initLogger() + }) +} + +// Run makes all the requests, prints the summary. It blocks until +// all work is done. +func (b *Work) Run() { + b.Init() + b.start = now() + b.report = newReport(b.writer(), b.results, b.Output, b.N) + // Run the reporter first, it polls the result channel until it is closed. + go func() { + runReporter(b.report) + }() + b.runWorkers() + b.Finish() +} + +func (b *Work) Stop() { + // Send stop signal so that workers can stop gracefully. + for i := 0; i < b.C; i++ { + b.stopCh <- struct{}{} + } +} + +func (b *Work) Finish() { + close(b.results) + total := now() - b.start + // Wait until the reporter is done. + <-b.report.done + b.report.finalize(total) +} + +var logger *galog.GALogger + +func (b *Work) initLogger() { + projectID := "28" + clientID := "Android_4.827_tyGuest,nearme.nearme.0-hall28.oppo.bydzz" + logger, _ = galog.NewGALogger("logs", projectID, clientID, galog.LogTypeAsset) +} + +func (b *Work) doSth() { + s := now() + + // doSth here. + asset := galog.AssetProperties{} + asset.SetAssetID("13101"). + SetAssetName("\u9501\u5b9a"). + SetAssetType("6"). + SetAssetFinal("2"). + SetAssetAssociated("3"). + SetAssetStartTime("0"). + SetAssetTimeLimit("0"). + SetAssetSource(""). + SetKV("uuid", strconv.Itoa(int(time.Now().UnixNano()))) + logger. + GetEntry("asset_increase"). + SetDeviceID(""). + SetUserID("10086"). + SetProperties(asset). + Flush() + + t := now() + finish := t - s + b.results <- &result{ + offset: s, + duration: finish, + } +} + +func (b *Work) runWorker(n int) { + var throttle <-chan time.Time + if b.QPS > 0 { + t := time.NewTicker(time.Duration(1e6/(b.QPS)) * time.Microsecond) + throttle = t.C + } + + for i := 0; i < n; i++ { + // Check if application is stopped. Do not send into a closed channel. + select { + case <-b.stopCh: + return + default: + if b.QPS > 0 { + <-throttle + } + b.doSth() + } + } +} + +func (b *Work) runWorkers() { + var wg sync.WaitGroup + wg.Add(b.C) + + fmt.Printf("==RUN worker==> N:%d C:%d QPS:%v b.N / b.C:%v", b.N, b.C, b.QPS, b.N/b.C) + + // Ignore the case where b.N % b.C != 0. + for i := 0; i < b.C; i++ { + go func() { + b.runWorker(b.N / b.C) + wg.Done() + }() + } + wg.Wait() +} + +func min(a, b int) int { + if a < b { + return a + } + return b +} diff --git a/src/server/galog/file.go b/src/server/galog/file.go new file mode 100644 index 00000000..f7412225 --- /dev/null +++ b/src/server/galog/file.go @@ -0,0 +1,264 @@ +package galog + +import ( + "encoding/json" + "errors" + "fmt" + "os" + "path" + "path/filepath" + "strconv" + "strings" + "sync" + "time" +) + +type fileLogWriter struct { + sync.RWMutex + + Rotate bool `json:"rotate"` + Hourly bool `json:"hourly"` + + // The opened file + Filename string `json:"filename"` + fileWriter *os.File + + // Rotate hourly + MaxHours int64 `json:"maxhours"` // 默认不删除日志 + hourlyOpenDate int + hourlyOpenTime time.Time + + // Permissions for log file + Perm string `json:"perm"` + // Permissions for directory if it is specified in FileName + DirPerm string `json:"dirperm"` + + RotatePerm string `json:"rotateperm"` + + fileNameOnly, suffix string // like "project.log", project is fileNameOnly and .log is suffix +} + +func newFileWriter() LogProvider { + w := &fileLogWriter{ + Rotate: true, // 开启日志轮转 + Hourly: true, // 开启日志小时轮转 + RotatePerm: "0440", + Perm: "0660", + DirPerm: "0770", + } + return w +} + +// Init file logger with json config. +// jsonConfig like: +// +// {"filename":"logs/glog.log"} +func (w *fileLogWriter) Init(config string) error { + err := json.Unmarshal([]byte(config), w) + if err != nil { + return err + } + if w.Filename == "" { + return errors.New("jsonconfig must have filename") + } + w.suffix = filepath.Ext(w.Filename) + w.fileNameOnly = strings.TrimSuffix(w.Filename, w.suffix) + if w.suffix == "" { + w.suffix = ".log" + } + + err = w.startLogger() + return err +} + +func (w *fileLogWriter) startLogger() error { + file, err := w.createLogFile() + if err != nil { + return err + } + if w.fileWriter != nil { + w.fileWriter.Close() + } + w.fileWriter = file + return w.initFd() +} + +func (w *fileLogWriter) needRotateHourly(hour int) bool { + return w.Hourly && hour != w.hourlyOpenDate +} + +func (w *fileLogWriter) createLogFile() (*os.File, error) { + perm, err := strconv.ParseInt(w.Perm, 8, 64) + if err != nil { + return nil, err + } + + dirperm, err := strconv.ParseInt(w.DirPerm, 8, 64) + if err != nil { + return nil, err + } + + filepath := path.Dir(w.Filename) + os.MkdirAll(filepath, os.FileMode(dirperm)) + + fd, err := os.OpenFile(w.Filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, os.FileMode(perm)) + if err == nil { + os.Chmod(w.Filename, os.FileMode(perm)) + } + return fd, err +} + +func (w *fileLogWriter) initFd() error { + w.hourlyOpenTime = time.Now() + w.hourlyOpenDate = w.hourlyOpenTime.Hour() + if w.Hourly { + go w.hourlyRotate(w.hourlyOpenTime) + } + return nil +} + +func (w *fileLogWriter) hourlyRotate(openTime time.Time) { + y, m, d := openTime.Add(1 * time.Hour).Date() + h := openTime.Add(1 * time.Hour).Hour() + nextHour := time.Date(y, m, d, h, 0, 0, 0, openTime.Location()) + tm := time.NewTimer(time.Duration(nextHour.UnixNano() - openTime.UnixNano() + 100)) + <-tm.C + w.Lock() + if w.needRotateHourly(time.Now().Hour()) { + if err := w.doRotate(); err != nil { + fmt.Fprintf(os.Stderr, "FileLogWriter(%q): %s\n", w.Filename, err) + } + } + w.Unlock() +} + +func (w *fileLogWriter) doRotate() error { + fName := "" + format := "" + var openTime time.Time + rotatePerm, err := strconv.ParseInt(w.RotatePerm, 8, 64) + if err != nil { + return err + } + + _, err = os.Lstat(w.Filename) + if err != nil { + goto RESTART_LOGGER + } + + if w.Hourly { + format = "20060102_15" + openTime = w.hourlyOpenTime + } + + fName = w.fileNameOnly + fmt.Sprintf("_%s%s", openTime.Format(format), w.suffix) + _, err = os.Lstat(fName) + + // return error if the last file checked still existed + if err == nil { + return fmt.Errorf("rotate: cannot find free log number to rename %s", w.Filename) + } + + w.fileWriter.Close() + + // Rename the file to its new found name + // even if occurs error,we MUST guarantee to restart new logger + err = os.Rename(w.Filename, fName) + if err != nil { + goto RESTART_LOGGER + } + + err = os.Chmod(fName, os.FileMode(rotatePerm)) + +RESTART_LOGGER: + + startLoggerErr := w.startLogger() + if w.MaxHours > 0 { + go w.deleteOldLog() + } + + if startLoggerErr != nil { + return fmt.Errorf("rotate startLogger: %s", startLoggerErr) + } + if err != nil { + return fmt.Errorf("rotate: %s", err) + } + return nil +} + +func (w *fileLogWriter) deleteOldLog() { + dir := filepath.Dir(w.Filename) + absolutePath, err := filepath.EvalSymlinks(w.Filename) + if err == nil { + dir = filepath.Dir(absolutePath) + } + filepath.Walk(dir, func(path string, info os.FileInfo, err error) (returnErr error) { + defer func() { + if r := recover(); r != nil { + fmt.Fprintf(os.Stderr, "Unable to delete old log '%s', error: %v\n", path, r) + } + }() + + if info == nil { + return + } + if w.Hourly { + if !info.IsDir() && info.ModTime().Add(1*time.Hour*time.Duration(w.MaxHours)).Before(time.Now()) { + if strings.HasPrefix(filepath.Base(path), filepath.Base(w.fileNameOnly)) && + strings.HasSuffix(filepath.Base(path), w.suffix) { + os.Remove(path) + } + } + } + return + }) +} + +// EncodeMsg encode log msg +func (*fileLogWriter) EncodeMsg(lm *LogMsg) []byte { + buf := defaultBufPool.Get() + buf.AppendString(lm.Msg) + buf.AppendString(_defaultLineEnding) + msg := buf.Bytes() + buf.Free() + return msg +} + +// WriteMsg write msg to log and rotate +func (w *fileLogWriter) WriteMsg(lm *LogMsg) error { + h := lm.When.Hour() + + if w.Rotate { + w.RLock() + if w.needRotateHourly(h) { + w.RUnlock() + w.Lock() + if w.needRotateHourly(h) { + if err := w.doRotate(); err != nil { + fmt.Fprintf(os.Stderr, "FileLogWriter(%q): %s\n", w.Filename, err) + } + } + w.Unlock() + } else { + w.RUnlock() + } + } + + msg := w.EncodeMsg(lm) + _, err := w.fileWriter.Write(msg) + return err +} + +// Destroy close the file description, close file writer. +func (w *fileLogWriter) Destroy() { + w.fileWriter.Close() +} + +// Flush flushes file logger. +func (w *fileLogWriter) Flush() { + w.fileWriter.Sync() +} + +func init() { + Register(AdapterFile, newFileWriter) +} diff --git a/src/server/galog/galog.go b/src/server/galog/galog.go new file mode 100644 index 00000000..da1241c0 --- /dev/null +++ b/src/server/galog/galog.go @@ -0,0 +1,99 @@ +package galog + +import ( + "fmt" + "os" + "strings" + "sync" + "time" +) + +type GALogger struct { + logger *Logger + projectID string + clientID string + logType LogType + entryPool sync.Pool +} + +type LogType string + +const ( + // LogTypeTrack 事实日志 + LogTypeTrack LogType = "track" + // LogTypeAsset 资产日志 + LogTypeAsset LogType = "asset" +) + +const ( + // enableAsync 启用异步写入模式 + enableAsync = true + // defaultAsyncMsgLen 异步写入模式的队列长度,QPS较大时可调整此值 + defaultAsyncMsgLen int64 = 100 +) + +// NewGALogger +// +// logDir: 日志根目录 logs | /home/tywork +// projectID: projectID +// clientID: clientID +// logType: galog.LogTypeTrack | galog.LogTypeAsset +func NewGALogger(logDir, projectID, clientID string, logType LogType) (*GALogger, error) { + l := newLogger() + hostname, _ := os.Hostname() + filepath := fmt.Sprintf("ga_log/ga_%s.log", hostname) + if logType == LogTypeAsset { + filepath = fmt.Sprintf("asset_log/%s_%s.log", logType, hostname) + } + configs := fmt.Sprintf(`{"filename":"%s/%s"}`, strings.TrimRight(logDir, "/"), filepath) + err := l.setLogger(AdapterFile, configs) + if err != nil { + return nil, err + } + if enableAsync { + l.Async() + } + gaLogger := &GALogger{ + logger: l, + projectID: projectID, + clientID: clientID, + logType: logType, + } + + return gaLogger, nil +} + +// GetEntry +func (gl *GALogger) GetEntry(event string) *Entry { + e, ok := gl.entryPool.Get().(*Entry) + if ok { + e.logger = gl + e.bean.ProjectID = gl.projectID + e.bean.LogType = gl.logType + e.bean.ClientID = gl.clientID + e.bean.Event = event + e.bean.EventTime = time.Now().UnixMilli() + e.bean.Lib = defaultLib + return e + } + return &Entry{ + logger: gl, + bean: &EntryBean{ + ProjectID: gl.projectID, + LogType: gl.logType, + ClientID: gl.clientID, + Event: event, + EventTime: time.Now().UnixMilli(), + Lib: defaultLib, + }, + } +} + +func (gl *GALogger) biz(v interface{}) { + gl.logger.BizErr(v) +} + +func (gl *GALogger) putEntry(entry *Entry) { + entry.bean = &EntryBean{} + gl.entryPool.Put(entry) +} diff --git a/src/server/galog/galog_test.go b/src/server/galog/galog_test.go new file mode 100644 index 00000000..805cc5c4 --- /dev/null +++ b/src/server/galog/galog_test.go @@ -0,0 +1,85 @@ +package galog + +import ( + "testing" + "time" +) + +var ( + gaLogger *GALogger + assetLogger *GALogger +) + +// go test -bench . -benchmem +func init() { + gaLogger, _ = NewGALogger("logs", "20433", "Android_5.0_tyGuest,weixinPay,tyAccount.alipay.0-hall20433.tuyoo.sdktest", LogTypeTrack) + assetLogger, _ = NewGALogger("logs", "28", "Android_4.827_tyGuest,nearme.nearme.0-hall28.oppo.bydzz", LogTypeAsset) +} + +func BenchmarkGaLog(b *testing.B) { + for i := 0; i < b.N; i++ { + props := map[string]interface{}{ + "ip_address": "127.0.0.1", + "proj_app_id": "10010", + "uuid": "4951d472-2c46-4fe5-9c4f-c35b6fb53f67", + "ts": time.Now().UnixNano(), + "ip_address1": "127.0.0.1", + "proj_app_id1": "10010", + "uuid1": "4951d472-2c46-4fe5-9c4f-c35b6fb53f67", + "ts1": time.Now().UnixNano(), + "ip_address2": "127.0.0.1", + "proj_app_id2": "10010", + "uuid2": "4951d472-2c46-4fe5-9c4f-c35b6fb53f67", + "ts2": time.Now().UnixNano(), + "ip_address3": "127.0.0.1", + "proj_app_id3": "10010", + "uuid3": "4951d472-2c46-4fe5-9c4f-c35b6fb53f67", + "ts4": time.Now().UnixNano(), + "proj_app_id25": "10010", + "uuid21": "4951d472-2c46-4fe5-9c4f-c35b6fb53f67", + "ts21": time.Now().UnixNano(), + "ip_address31": "127.0.0.1", + "proj_app_id31": "10010", + "uuid31": "4951d472-2c46-4fe5-9c4f-c35b6fb53f67", + "ts11": time.Now().UnixNano(), + "uuid3111": "4951d472-2c46-4fe5-9c4f-c35b6fb53f67", + "ts4111": time.Now().UnixNano(), + "proj_app_id21115": "10010", + "uuid111": "4951d472-2c46-4fe5-9c4f-c35b6fb53f67", + "ts111": time.Now().UnixNano(), + "ip_a11ddress31": "127.0.0.1", + "proj1_app_id31": "10010", + "uuid131": "4951d472-2c46-4fe5-9c4f-c35b6fb53f67", + "ts1111": time.Now().UnixNano(), + } + gaLogger. + GetEntry("sdk_s_login_succ"). + SetDeviceID("device001"). + SetUserID("10086"). + SetProperties(props). + Flush() + } +} + +func BenchmarkAssetLog(b *testing.B) { + for i := 0; i < b.N; i++ { + asset := make(AssetProperties) + asset. + SetAssetID("13101"). + SetAssetName("\u9501\u5b9a"). + SetAssetType("6"). + SetAssetFinal("2"). + SetAssetAssociated("3"). + SetAssetStartTime("0"). + SetAssetTimeLimit("0"). + SetAssetSource(""). + SetKV("uuid", "uuid-v4") + + assetLogger. + GetEntry("asset_increase"). + SetDeviceID(""). + SetUserID("10086"). + SetProperties(asset). + Flush() + } +} diff --git a/src/server/galog/go.mod b/src/server/galog/go.mod new file mode 100644 index 00000000..f044e2b2 --- /dev/null +++ b/src/server/galog/go.mod @@ -0,0 +1,3 @@ +module tygit.tuyoo.com/gocomponents/galog + +go 1.20 diff --git a/src/server/galog/img/WX20240226-183250@2x.png b/src/server/galog/img/WX20240226-183250@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8bab3f3c70faf49c53a2a0b0c97c18773384c0cb GIT binary patch literal 239663 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 CyMJW> literal 0 HcmV?d00001 diff --git a/src/server/galog/img/WX20240226-184752@2x.png b/src/server/galog/img/WX20240226-184752@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..318933f68331b584d8ae439e29dbd410ce3559b2 GIT binary patch literal 220996 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

!*S6hE}ZBOyVcF#Mb@C)3_y*f064qbu4< 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 0 && msgLen[0] > 0 { + gl.msgChanLen = msgLen[0] + } + gl.msgChan = make(chan *LogMsg, gl.msgChanLen) + logMsgPool = &sync.Pool{ + New: func() interface{} { + return &LogMsg{} + }, + } + gl.wg.Add(1) + go gl.startLogger() + return gl +} + +// SetLogger provides a given logger adapter into Logger with config string. +// config must in in JSON format like {"interval":360}} +func (gl *Logger) setLogger(adapterName string, configs ...string) error { + config := append(configs, "{}")[0] + + logAdapter, ok := adapters[adapterName] + if !ok { + return fmt.Errorf("logs: unknown adaptername %q (forgotten Register?)", adapterName) + } + + lg := logAdapter() + + err := lg.Init(config) + if err != nil { + return err + } + + gl.outputs = append(gl.outputs, &nameLogger{name: adapterName, LogProvider: lg}) + return nil +} + +func (gl *Logger) writeToLoggers(lm *LogMsg) { + for _, l := range gl.outputs { + err := l.WriteMsg(lm) + if err != nil { + fmt.Fprintf(os.Stderr, "unable to WriteMsg to adapter:%v,error:%v\n", l.name, err) + } + } +} + +// Write implements io.Writer. +func (gl *Logger) Write(p []byte) (n int, err error) { + if len(p) == 0 { + return 0, nil + } + // writeMsg will always add a '\n' character + if p[len(p)-1] == '\n' { + p = p[0 : len(p)-1] + } + lm := &LogMsg{ + Msg: string(p), + When: time.Now(), + } + + // set levelLoggerImpl to ensure all log message will be write out + err = gl.writeMsg(lm) + if err == nil { + return len(p), nil + } + return 0, err +} + +func (gl *Logger) writeMsg(lm *LogMsg) error { + if gl.asynchronous { + logM := logMsgPool.Get().(*LogMsg) + logM.Msg = lm.Msg + logM.When = lm.When + + if gl.outputs != nil { + gl.msgChan <- lm + } else { + logMsgPool.Put(lm) + } + } else { + gl.writeToLoggers(lm) + } + return nil +} + +func (gl *Logger) startLogger() { + gameOver := false + for { + select { + case bm, ok := <-gl.msgChan: + if ok { + gl.writeToLoggers(bm) + logMsgPool.Put(bm) + } + case <-gl.closeChan: + gl.flush() + for _, l := range gl.outputs { + l.Destroy() + } + gl.outputs = nil + gameOver = true + gl.wg.Done() + case <-gl.flushChan: + gl.flush() + gl.wg.Done() + } + if gameOver { + break + } + } +} + +// Info Log INFO level message. +func (gl *Logger) Info(format string) { + lm := &LogMsg{ + Msg: format, + When: time.Now(), + } + + gl.writeMsg(lm) +} + +// BizErr Log a json-interface +func (gl *Logger) BizErr(v interface{}) error { + buf, err := json.Marshal(v) + if err != nil { + return err + } + str := *(*string)(unsafe.Pointer(&buf)) + gl.Info(str) + return nil +} + +// Flush flush all chan data. +func (gl *Logger) Flush() { + if gl.asynchronous { + gl.flushChan <- struct{}{} + gl.wg.Wait() + gl.wg.Add(1) + return + } + gl.flush() +} + +// Close close logger, flush all chan data and destroy all adapters in Logger. +func (gl *Logger) Close() { + if gl.asynchronous { + gl.closeChan <- struct{}{} + gl.wg.Wait() + close(gl.msgChan) + } else { + gl.flush() + for _, l := range gl.outputs { + l.Destroy() + } + gl.outputs = nil + } + close(gl.flushChan) + close(gl.closeChan) +} + +func (gl *Logger) flush() { + if gl.asynchronous { + for { + if len(gl.msgChan) > 0 { + bm, ok := <-gl.msgChan + if !ok { + continue + } + gl.writeToLoggers(bm) + logMsgPool.Put(bm) + continue + } + break + } + } + for _, l := range gl.outputs { + l.Flush() + } +} diff --git a/src/server/galog/suger.go b/src/server/galog/suger.go new file mode 100644 index 00000000..6d4a0bc7 --- /dev/null +++ b/src/server/galog/suger.go @@ -0,0 +1,122 @@ +package galog + +import ( + "errors" + "fmt" + "os" + "strings" +) + +type ServerLogOptions struct { + // LogDir 日志目录,默认logs + LogDir string + + // EnableAsync 是否开启异步写日志,默认开启 + EnableAsync bool + + // AsyncQueueSize 异步队列大小,默认1000 + AsyncQueueSize int64 +} + +// NewServerLogger 业务日志实例,support JSON +// +// opts.LogDir 日志目录,推荐logs +// opts.EnableAsync 是否开启异步写日志,默认开启 +// opts.AsyncQueueSize 异步队列大小,默认1000 +// useage: logger.BizErr(map[string]interface{}{"type": "test"}) +func NewServerLogger(opts *ServerLogOptions) (*Logger, error) { + if opts == nil { + opts = &ServerLogOptions{ + LogDir: "logs", + EnableAsync: true, + AsyncQueueSize: 1000, + } + } + if opts.LogDir == "" { + opts.LogDir = "logs" + } + if opts.EnableAsync && opts.AsyncQueueSize == 0 { + opts.AsyncQueueSize = 1000 + } + + l := newLogger() + hostname, _ := os.Hostname() + filename := fmt.Sprintf("server_%s.log", hostname) + configs := fmt.Sprintf(`{"filename":"%s/%s"}`, strings.TrimRight(opts.LogDir, "/"), filename) + err := l.setLogger(AdapterFile, configs) + if err != nil { + return nil, err + } + if opts.EnableAsync && opts.AsyncQueueSize > 0 { + l.Async(opts.AsyncQueueSize) + } + return l, nil +} + +type ServerGALogOptions struct { + // LogDir 日志目录,默认galogs + LogDir string + + // EnableAsync 是否开启异步写日志,默认开启 + EnableAsync bool + + // AsyncQueueSize 异步队列大小,默认1000 + AsyncQueueSize int64 + + // GA侧分配ProjectID + ProjectID string + + // GA侧分配ClientID + ClientID string + + LogType LogType +} + +// NewServerGALogger GA日志实例,support JSON +// +// opts.ProjectID 项目ID,GA侧分配,必填 +// opts.ClientID 客户端ID,GA侧分配,必填 +// opts.LogType 日志类型,默认LogTypeTrack +// opts.LogDir 日志目录,默认galogs +// opts.EnableAsync 是否开启异步写日志,默认开启 +// opts.AsyncQueueSize 异步队列大小,默认1000 +func NewServerGALogger(opts *ServerGALogOptions) (*GALogger, error) { + if opts == nil { + return nil, errors.New("opts must not be empty") + } + if opts.EnableAsync && opts.AsyncQueueSize == 0 { + opts.AsyncQueueSize = 1000 + } + if opts.LogDir == "" { + opts.LogDir = "galogs" + } + if opts.LogType == "" { + opts.LogType = LogTypeTrack + } + if opts.ProjectID == "" || opts.ClientID == "" { + return nil, errors.New("projectID or clientID must not be empty") + } + + l := newLogger() + hostname, _ := os.Hostname() + filename := fmt.Sprintf("ga_%s.log", hostname) + if opts.LogType == LogTypeAsset { + filename = fmt.Sprintf("asset_%s.log", hostname) + } + configs := fmt.Sprintf(`{"filename":"%s/%s"}`, strings.TrimRight(opts.LogDir, "/"), filename) + err := l.setLogger(AdapterFile, configs) + if err != nil { + return nil, err + } + if opts.EnableAsync && opts.AsyncQueueSize > 0 { + l.Async(opts.AsyncQueueSize) + } + gaLogger := &GALogger{ + logger: l, + projectID: opts.ProjectID, + clientID: opts.ClientID, + logType: opts.LogType, + } + + return gaLogger, nil +} diff --git a/src/server/galog/suger_test.go b/src/server/galog/suger_test.go new file mode 100644 index 00000000..7ee2ebb8 --- /dev/null +++ b/src/server/galog/suger_test.go @@ -0,0 +1,34 @@ +package galog + +import ( + "testing" + "time" +) + +var slogger *Logger + +// go test -bench . -benchmem +func init() { + slogger, _ = NewServerLogger(&ServerLogOptions{ + LogDir: "logs", + EnableAsync: true, + }) +} + +// BenchmarkServerLog-8 436682 3103 ns/op 1838 B/op 24 allocs/op +func BenchmarkServerLog(b *testing.B) { + for i := 0; i < b.N; i++ { + msgMap := map[string]interface{}{ + "CreateTime": time.Now().UnixNano() / int64(time.Microsecond), + "Host": "host", + "AppId": "10010", + "UserId": "12345", + "Level": "Notice", + "Entry": "Login", + "Func": "HandleLogin", + "TraceMsg": "HandlerWSFriApplyList|HandlerWSFriApplyList", + "Params": "{\"isoCode\":\"CN\",\"P0\":[3,\"Total: 3, End: 0, \"],\"pf\":\"wx\",\"appVer\":\"1.0\",\"sdkVer\":\"1.0\",\"ip\":\"58.247.195.158\",\"clientId\":\"7abd64bf-3fb6-4fef-a25e-e6562b7fb857\",\"timeZone\":\"Asia/Shanghai\",\"loginMark\":\"\",\"st\":1472}", + } + slogger.BizErr(msgMap) + } +} diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 1fc2ff4e..373faf68 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -988,19 +988,6 @@ func NotifyPlayer(Uid int, m *MsgMod.Msg) { p.Send(m) } -func setRedisLock(key string, Duration time.Duration) bool { - return db.RedisLock(key, "lock", Duration) -} - -func getRedisLock(key string) error { - _, err := db.RedisGetKey(key) - return err -} - -func unsetRedisLock(key string) { - db.RedisUnlock(key, "") -} - func Destroy() { log.Debug("服务器下线") if G_GameLogicPtr != nil { diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 8d7a89c3..d11a824a 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -1,12 +1,10 @@ package game import ( - // "server/GoUtil" - // "server/MergeConst" - + "bytes" "context" "database/sql" - "encoding/json" + "encoding/gob" "errors" "math" "server/GoUtil" @@ -20,6 +18,7 @@ import ( miningCfg "server/conf/mining" playroomCfg "server/conf/playroom" "server/db" + "server/ga" "server/game/mod/activity" "server/game/mod/friend" "server/game/mod/item" @@ -980,9 +979,17 @@ func (p *Player) UpdateUserInfo() { simple.CardInfo = CardMod.GetCardList() simple.ActLog = p.PlayMod.getFriendMod().GetActLogLast() simple.Physiology = p.PlayMod.getPlayroomMod().GetPhysiologyList() - value, _ := json.Marshal(simple) + + // 使用 gob 编码替代 json,生成更紧凑的二进制 + var buf bytes.Buffer + enc := gob.NewEncoder(&buf) + if err := enc.Encode(simple); err != nil { + log.Debug("gob encode simple failed: %v", err) + return + } + value := buf.Bytes() IdStr := strconv.Itoa(int(p.M_DwUin)) - go db.RedisSetKey(IdStr, string(value), 0) + go db.RedisSetKeyBytes(IdStr, value, 0) } func (p *Player) HandleInUserRank() { @@ -1050,6 +1057,10 @@ func (p *Player) TeLog(Type string, Param map[string]interface{}) { Param["Ip"] = agent.RemoteAddr().String() } telog.Te.Track(p.GetPlayerBaseMod().GetName(), p.GetPlayerBaseMod().GetName(), Type, Param) + BaseMod := p.PlayMod.getBaseMod() + + //途游GA + ga.GAlogEvent(Type, BaseMod.Account, "", Param) } func (p *Player) Kafka(Type string, Param map[string]interface{}) { diff --git a/src/server/game/external.go b/src/server/game/external.go index bd3dd209..23305e4d 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -184,6 +184,7 @@ func HandleClientReq(args []interface{}) { db.UpdateAccountInfoDeviceToDb(accountInfo) p, _ := internal.Agents.Load(a) if p != nil { + p.(*Player).PlayMod.getBaseMod().DiviceId = detail.Device //加锁 p.(*Player).PushClientRes(ResLogin) p.(*Player).LoginBackData() G_GameLogicPtr.AddLog(&Log{ diff --git a/src/server/game/mod/base/Base.go b/src/server/game/mod/base/Base.go index a060a802..9c155784 100644 --- a/src/server/game/mod/base/Base.go +++ b/src/server/game/mod/base/Base.go @@ -43,6 +43,7 @@ type Base struct { IdCardName string IdCardNum string AddCode string // 用于添加好友的code + DiviceId string // 设备id } func (b *Base) InitData(Uid int, Ip string) { diff --git a/src/server/go.mod b/src/server/go.mod index 0bc9f684..b5f48239 100644 --- a/src/server/go.mod +++ b/src/server/go.mod @@ -18,7 +18,6 @@ require ( github.com/robfig/cron/v3 v3.0.1 github.com/segmentio/kafka-go v0.4.47 github.com/shirou/gopsutil v3.21.11+incompatible - github.com/vicanso/go-charts/v2 v2.6.10 google.golang.org/protobuf v1.36.2 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 ) @@ -35,9 +34,7 @@ require ( github.com/alibabacloud-go/tea-utils v1.4.5 // indirect github.com/alibabacloud-go/tea-xml v1.1.3 // indirect github.com/clbanning/mxj/v2 v2.7.0 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.15.9 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -47,9 +44,7 @@ require ( github.com/tjfoc/gmsm v1.4.1 // indirect github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.8.0 // indirect - github.com/wcharczuk/go-chart/v2 v2.1.0 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - golang.org/x/image v0.0.0-20200927104501-e162460cd6b5 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect @@ -68,4 +63,7 @@ require ( github.com/google/uuid v1.6.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect + github.com/tuyou/galog v0.0.0 ) + +replace github.com/tuyou/galog => ./galog diff --git a/src/server/go.sum b/src/server/go.sum index 886ebc10..8db7fcaf 100644 --- a/src/server/go.sum +++ b/src/server/go.sum @@ -92,8 +92,6 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= @@ -103,8 +101,6 @@ github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -189,10 +185,6 @@ github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZ github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY= github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE= -github.com/vicanso/go-charts/v2 v2.6.10 h1:Nb2YBekEbUBPbvohnUO1oYMy31v75brUPk6n/fq+JXw= -github.com/vicanso/go-charts/v2 v2.6.10/go.mod h1:Ii2KDI3udTG1wPtiTnntzjlUBJVJTqNscMzh3oYHzUk= -github.com/wcharczuk/go-chart/v2 v2.1.0 h1:tY2slqVQ6bN+yHSnDYwZebLQFkphK4WNrVwnt7CJZ2I= -github.com/wcharczuk/go-chart/v2 v2.1.0/go.mod h1:yx7MvAVNcP/kN9lKXM/NTce4au4DFN99j6i1OwDclNA= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= @@ -219,8 +211,6 @@ golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOM golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/image v0.0.0-20200927104501-e162460cd6b5 h1:QelT11PB4FXiDEXucrfNckHoFxwt8USGY1ajP1ZF5lM= -golang.org/x/image v0.0.0-20200927104501-e162460cd6b5/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= From d0aec519d1921a6e394cb9844a48036e5ddf6d9c Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 21 Nov 2025 17:45:42 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=86=99=E5=85=A5?= =?UTF-8?q?=E9=87=87=E7=94=A8=E5=BC=82=E6=AD=A5=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Player.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/Player.go b/src/server/game/Player.go index d11a824a..3803912f 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -1056,11 +1056,11 @@ func (p *Player) TeLog(Type string, Param map[string]interface{}) { if agent != nil { Param["Ip"] = agent.RemoteAddr().String() } - telog.Te.Track(p.GetPlayerBaseMod().GetName(), p.GetPlayerBaseMod().GetName(), Type, Param) + go telog.Te.Track(p.GetPlayerBaseMod().GetName(), p.GetPlayerBaseMod().GetName(), Type, Param) BaseMod := p.PlayMod.getBaseMod() //途游GA - ga.GAlogEvent(Type, BaseMod.Account, "", Param) + go ga.GAlogEvent(Type, BaseMod.Account, "", Param) } func (p *Player) Kafka(Type string, Param map[string]interface{}) { From 1dfa4cda64c42d6e0d2fa9dd0e6a9f509d12e0e2 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:54:50 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Player.go | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 3803912f..ecaa0654 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -1,10 +1,9 @@ package game import ( - "bytes" "context" "database/sql" - "encoding/gob" + "encoding/json" "errors" "math" "server/GoUtil" @@ -980,14 +979,8 @@ func (p *Player) UpdateUserInfo() { simple.ActLog = p.PlayMod.getFriendMod().GetActLogLast() simple.Physiology = p.PlayMod.getPlayroomMod().GetPhysiologyList() - // 使用 gob 编码替代 json,生成更紧凑的二进制 - var buf bytes.Buffer - enc := gob.NewEncoder(&buf) - if err := enc.Encode(simple); err != nil { - log.Debug("gob encode simple failed: %v", err) - return - } - value := buf.Bytes() + //TODO 存储到redis 在新版本中将优化成gob进行压缩 + value, _ := json.Marshal(simple) IdStr := strconv.Itoa(int(p.M_DwUin)) go db.RedisSetKeyBytes(IdStr, value, 0) } From 3bd4a88221dc59d821b2295a28c158300e1b8ae7 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 25 Nov 2025 11:09:58 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + src/server/game/RankMgr.go | 48 ++++++++++++++++++++++++++++++++++++++ src/server/game/Trigger.go | 3 +++ 3 files changed, 52 insertions(+) diff --git a/.gitignore b/.gitignore index 321ac30c..e65e11c5 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ src/server/gamedata/config/*.json src/server/unit_test.go src/server/teLog/* src/server/teLog/log.2024-11-28 +src/server/logs/ga_log/*.log diff --git a/src/server/game/RankMgr.go b/src/server/game/RankMgr.go index f476e269..fc576794 100644 --- a/src/server/game/RankMgr.go +++ b/src/server/game/RankMgr.go @@ -60,6 +60,24 @@ func (r *RankMgr) Init() { r.RegisterHandler(msg.HANDLE_TYPE_RANK, r.inRank) r.RegisterHandler(msg.HANDLE_TYPE_RANK_INFO, r.getRankInfo) r.RegisterHandler(msg.SERVER_ZERO_UPDATE, r.ZeroUpdate) + r.version() +} + +func (r *RankMgr) version() error { + RedisKey := fmt.Sprintf("%s_%s", RANK_COUNTRY_USER, conf.Server.CountryCode) + RedisList, _ := db.RedisZRevRangeWithScores(RedisKey, 0, 100) + if len(RedisList) > 0 { + return nil + } + rankList := r.getRank(RANK_TYPE_USER) + if len(rankList) == 0 { + return nil + } + for _, v := range rankList { + Uid := strconv.Itoa(v.Uid) + db.RedisZAdd(RedisKey, Uid, v.Score) + } + return nil } func (r *RankMgr) getData() *RankData { @@ -106,9 +124,14 @@ func (r *RankMgr) setRank(RankType int, data []*Rank) { // 获取排行榜信息 func (r *RankMgr) getRankInfo(m *msg.Msg) (interface{}, error) { data := m.Extra.(RankMsg) + // 全球排行榜 if data.RankType == RANK_TYPE_GLOBAL { return r.getRedisRankInfo(m) } + // 国家排行榜 + if data.RankType == RANK_TYPE_USER { + return r.getRedisCountryRankInfo(m) + } rankList := r.getRank(data.RankType) MyRank, MyScore := r.getMyRank(m.From, data.RankType) return &RankInfo{ @@ -118,6 +141,31 @@ func (r *RankMgr) getRankInfo(m *msg.Msg) (interface{}, error) { }, nil } +func (r *RankMgr) getRedisCountryRankInfo(m *msg.Msg) (interface{}, error) { + RedisKey := fmt.Sprintf("%s_%s", RANK_COUNTRY_USER, conf.Server.CountryCode) + RedisList, err := db.RedisZRevRangeWithScores(RedisKey, 0, 100) + if err != nil { + return &RankInfo{}, nil + } + sort.Slice(RedisList, func(i, j int) bool { // 排序 从大到小 + return RedisList[i].Score > RedisList[j].Score + }) + rankList := make([]*Rank, 0) + for _, v := range RedisList { + rankList = append(rankList, &Rank{ + Uid: GoUtil.Int(v.Member), + Score: v.Score, + Time: GoUtil.Now(), + }) + } + MyRank, MyScore, _ := db.RedisZRankWithScores(RANK_USER, strconv.Itoa(m.From)) + return &RankInfo{ + List: rankList, + MyRank: int(MyRank), + MyScore: MyScore, + }, nil +} + func (r *RankMgr) getRedisRankInfo(m *msg.Msg) (interface{}, error) { RedisList, err := db.RedisZRevRangeWithScores(RANK_USER, 0, 100) if err != nil { diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index 8186412b..897806e0 100644 --- a/src/server/game/Trigger.go +++ b/src/server/game/Trigger.go @@ -138,6 +138,9 @@ func TriggerShippingOrderOrigin(player *Player, req *msg.ReqShippingOrder) { "PayType": OrderData.PayType, } player.Kafka("pay", orderDataMap) + player.PushClientRes(&msg.ResShippingOrder{ + Code: msg.RES_CODE_SUCCESS, + }) player.SendClientRes() } From cd303b5658878fbc069c4184086b46c8f4473031 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 25 Nov 2025 14:55:03 +0800 Subject: [PATCH 11/12] =?UTF-8?q?ga=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/ga/log.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/server/ga/log.go b/src/server/ga/log.go index 340020d3..ad10ca12 100644 --- a/src/server/ga/log.go +++ b/src/server/ga/log.go @@ -20,6 +20,11 @@ func init() { } func GAlogEvent(event string, userID string, deviceID string, properties map[string]interface{}) { + newProperties := make(map[string]interface{}) + for k, v := range properties { + newProperties["proj_"+k] = v + } + properties = newProperties glogger. GetEntry(event). SetDeviceID(deviceID). From b1af9103bf930f8c4e983c7572d4b432634c893d Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 26 Nov 2025 14:43:36 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E9=99=90=E6=97=B6=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go index e53c9efa..bd40331c 100644 --- a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go +++ b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go @@ -27,6 +27,7 @@ const ( EVENT_TYPE_CAT_TRICK = 14 // 猫咪戏法 EVENT_TYPE_PAYBACK_DAY = 15 // 回收日 EVENT_TYPE_LITTLE_APPRENTICE = 16 // 小学徒 + EVENT_TYPE_CAT_DAY_SALE = 17 // 猫咪大甩卖 ) const ( @@ -46,6 +47,7 @@ type LimitedTimeEventMod struct { BonusNum int First bool FirstReward bool + CatDaySale bool // 是否参与猫咪大甩卖活动 } type LTEInfo struct {

J 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