diff --git a/common/userBindService/userService.go b/common/userBindService/userService.go index a6f7e16..0f1344b 100644 --- a/common/userBindService/userService.go +++ b/common/userBindService/userService.go @@ -114,17 +114,23 @@ func (m *UserBindService) RandServiceNode(typeId pb.ServiceTypeId) (*etcd.Servic // 根据服务类型,路由到对应的服务节点 func (m *UserBindService) FindServiceName(userId int64, typeId pb.ServiceTypeId) (string, error) { - // 内存中没有,向redis中查询。redis中保留的服务节点不一定是可用的,还需要向etcd中验证 - if sName := m.LoadFromRedis(userId, typeId); sName != "" && m.serviceIsValid(sName) { - return sName, nil + if userId > 0 { + // 向redis中查询。redis中保留的服务节点不一定是可用的,还需要向etcd中验证 + sName := m.LoadFromRedis(userId, typeId) + // log.DebugF("user:%v查找到服务节点:%s", userId, sName) + if sName != "" && m.serviceIsValid(sName) { + return sName, nil + } } + + // log.DebugF("user:%v查找到服务节点:%s为无效节点", userId, sName) // redis也没有玩家的服务节点信息,从etcd中找可用服务节点随机选择一个 node, err := m.RandServiceNode(typeId) if err != nil { log.ErrorF("etcd中随机一个服务节点时,错误:%v", err) return "", err } - //log.DebugF("etcd中随机一个服务节点:%s", node.Name) + // log.DebugF("etcd中随机一个服务节点:%s", node.Name) m.rdb.Set(context.Background(), m.makeRedisKey(userId, typeId), node.Name, 2*24*time.Hour) return node.Name, nil } diff --git a/工作.txt b/工作.txt index b251eee..8b01e1d 100644 --- a/工作.txt +++ b/工作.txt @@ -13,8 +13,8 @@ 2.05 redis写入数据的字段名有误。(已修复) 2.06 struct序列化到redis中时需要处理时间格式。(已修复) 2.07 清理登陆相关调试日志。(已完成) - 2.08 login服切换到其它地方启动后,gate服会路由失败。 - 2.08 login在创建帐号时,还需要创建user。 + 2.08 login服切换到其它地方启动后,gate服会路由失败。(已修复,etcd没有删除失效节点导致。) + 2.09 login在创建帐号时,还需要创建user。 3.编写color game玩法 3.1 服务端玩法