高并发如何实现单用户信息查询接口
故事情节
- 产品:小李,有个单用户信息查询的功能,需要你实现一下
- 小李:这还不简单,两分钟我给你实现
- 两分钟过去…
- 小李:欧克了,部署上线了
- 运维:哪个傻蛋写的接口,导致MySQL宕机了
- 小李一愣,他写的接口明明没有报错啊,这是怎么回事呢?
- 产品:小李赶紧给我排查出来,否则这个月的奖金一分都没有
- 小李:这这这,我不知道什么问题啊
- 小李纳闷中,思来思去不知道什么问题如何解决…
- 小李:老黄,只能求你出马了,这个月我的奖金全部都给你
- 老黄听到小李的请求,他微微一笑,答应了下来
- 老黄:么得问题了
- 老黄耐心地指导小李修复了这个错误,并对代码进行了优化和完善
- 小李听得认真,心里暗自发誓要吸取教训,以后在工作中更加严谨细致。而这次经历也让他对老黄产生了更深的敬意和信任
- 最终,小李成功排查并解决了问题,产品顺利上线运行。产品部门的领导对他的表现给予了肯定和赞赏,而他也因为自己的努力和进步获得了全额的奖金
小李写的代码:
Service层:
直接查询MySQL返回数据
public UserQueryRespDTO queryUserByUserId(Long userId) {
LambdaQueryWrapper<UserDO> queryWrapper = Wrappers.lambdaQuery(UserDO.class)
.eq(UserDO::getUserId, userId);
List<UserDO> userDOList = userMapper.selectList(queryWrapper);
UserDO userDO = CollUtil.isNotEmpty(userDOList) ? userDOList.get(0) : null;
UserQueryRespDTO userQueryRespDTO = new UserQueryRespDTO();
B