请教一下站长点赞功能的实现思路

最近刚好也要实现这个功能,但是没有搜索到比较好的资料,想请教一下站长是怎么实现这个功能的

hackertalk
332 views
Comments
登录后评论
Sign In
·

点赞系统其实很复杂,看起来很简单的一个按钮,要显示 A 是否对 B 内容点了赞,需要检查 A 是否在 B 的点赞用户列表 L 中,是一个集合存在性计算的数学问题。

  1. 如果点赞数量较少,比如普遍在 1000 以内,可以用数据库的索引机制实现这个计算,黑客说也是这样做的,登录用户每个请求都带上 sessionId,getPostById 检查是否点赞,标记到 liked 字段中,getCommentsByPost 批量获取评论时通过数据库的 id 交集计算(in 操作符)实现批查询,避免 n+1 问题。
  2. 如果点赞数量分布很广,比如微博、twitter 几十万的赞(L 集合很大),这种系统设计难度就很高了,常用的办法是对普通人使用第一个机制,对大V、明星等使用另外一套缓存系统,避免查数据库,有时候甚至会用上 CPU 的 L1/L2/L3 缓存机制,专门定制 CPU。

第二种系统本质还是利用缓存加速,L集合存在性计算还是少不了,你可以看 DDIA 这本书,常见的分布式问题都有讲到。

·

我是实现过一些简单的,

增加了一个表,记录关联信息,

postid userid like unlike

这样的表……

是不是有点笨了但是是我自己想的)