java架构优化闲谈

微信小游戏code登录优化

下图是现有接口流程图,接口请求均值是3S,有没有可优化的空间,或是其他实现方式

增加获取openid后的代码逻辑方法,欢迎指正

数据库是腾讯mysql rds实例,单表数据在3000万左右,sql有走索引,sql执行在10ms 整个方法执行耗时平均是 200ms

 private synchronized Player login(String openid,AnchorLog anchorLog){
        //查询用户
        Player player = playerService.findPlayerByOpenid(openid,anchorLog.getGameId());
        //新用户需建立用户信息
        if (player == null) {
            player = new Player(openid,anchorLog.getGameId());
            player.setNews(0);
            playerService.savePlayer(player);
        }else{
            player.setNews(1);
            //禁用直接返回
            if(1==player.getState() || (player.getDisableTime()!=null && player.getDisableTime().getTime()>System.currentTimeMillis())){
                return player;
            }
        }
        //删除别的登录设备
        String st = getSessionTrackId(player.getId()+"");
        if(StringUtils.isNotBlank(st)){
            delSessionPlayer(st);       //删除redis数据
        }
        //生成trackId
        player.setTrackId(IdUtil.simpleUUID());


        //已经登录,删除前面登陆trackId
        String playerId = player.getId().toString();
        boolean bool = redisUtil.isExists(ReflectUtil.getCallName()+playerId);
        if(bool){
            String trackId = redisUtil.getString(ReflectUtil.getCallName()+playerId);
            delSessionPlayer(trackId);
            //记录本次登录状态
            redisUtil.set(ReflectUtil.getCallName()+playerId,player.getTrackId());
        }

        //查询玩家历史所玩区服
    player.setGameArea(gameService.findGameAreaByPlayer(player.getId(),player.getGameId()));
        setSessionPlayer(player);
        return player;
    }

 

接口请求均值是3S,流程没有什么问题,主要是要优化后台的性能。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

增加获得openid后的逻辑代码,欢迎指正