针对小红书界面,你如何设计接口,包括主界面,打开帖子界面,有评论、点赞等等

个人遇到过的一道设计场景题

1.主界面:

  • 数据库层面
    • MySQL中肯定要有一张简略信息表存储帖子的简略信息,例如帖子的前多少个字,缩略图片,作者,点赞数等
  • 接口:(根据前端传输用户id->查询用户标签->查询主题帖子的接口)接收用户id推荐帖子查询接口、左侧个人功能页接口(可以设置多个)、分类接口(选择某具体类查询帖子结果)、搜索功能接口(接收关键词、后台模糊查询帖子返回)
  • 优化层面
    • 用户获取主页帖子列表肯定要频繁交互,最好将热点帖子简略信息存储到Redis中去,这块可以将热点帖子数据存放到redis中,例如使用lru策略,使redis实时存储一定量的热点帖子及其关联信息
    • 对于热点帖子,点赞、评论等,可以用redis中的zset存储,方便排序,比如按点赞数,按评论时间等;关注信息用set存储,方便确定是否重复关注

2.帖子详情界面:

  • 数据库层面
    • 要有一张帖子详细信息表,用户点击某个帖子以后,去获取帖子详细信息
    • 要有一张评论表,评论表中存储评论信息,关联上帖子id
    • 还要有一张二级评论表,楼中楼评论,关联帖子id+评论id
  • 接口:查询帖子详细信息接口(接收帖子id)、查询帖子关联的评论接口(封装楼中楼评论)、我们评论的接口(接收我们的评论、我们的id、帖子的id)、点赞的接口(帖子的id,点赞数+1)、关注作者的接口(我们的id、作者的id、作者的粉丝数肯定要+1)、收藏的接口(将帖子的id加入到我们收藏列表中)、打开作者主页的接口(给后端我们的id(方便记录访问记录)、作者的id)
  • 优化层面
    • 需要去数据库获取多个表中的数据,例如帖子详细信息表、评论表等多表数据时,可以通过线程池,多表并行查询,配置completablefuture获取线程返回结果拼接,增强响应速度。
    • 热点帖子进行点赞,并发数高,用MQ消息队列,写入redis返回结果,将点赞请求发送给消息队列异步执行,这个不要求强一致性。
    • MySQL可以采用集群(主从集群、读写分离)提高并发能力,Redis也可以采用部署集群提高并发能力
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值