news 2026/6/10 14:44:49

案例:高性能评论系统架构设计(“评论盖楼”系统)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
案例:高性能评论系统架构设计(“评论盖楼”系统)

背景

评论系统,不属于电商系统的核心链路,但当评论数据较大时,也将为成为瓶颈。本文讨论评论系统的设计。

问题

评论系统的特点是:嵌套评论,当嵌套层级多的时候,性能会出现问题。所以,我们主要解决的是盖楼问题。

业界主流到盖楼模式有两种。

1、嵌套模式:一层套一层,无限循环嵌套。

2、盖楼模式:不论多少层,都在同一层级展示。

目前微信、抖音采用第二种方式,只保留两层,要么是楼主,要么是回复信息。

数据库:嵌套模式

1、邻接表

主键Id

父级Id

内容

1

0

种草

2

1

+1

3

1

+2

优点:写入速度快、查询效率低。每个记录只需要记录父级Id即可。存储结构简单,易于理解。

不足:递归查询性能差,需要N+1次;删除中间节点,维护成本高。

2、全路径

主键Id

路径

内容

1

1/

种草

2

1/2

+1

3

1/2/3

+2

优点:查询方便,使用like'1/2%',符合索引最左原则,性能高。存储了直观的层级关系。

不足:Path长度受字段类型和长度大小限制,层的修改维护较复杂。

3、闭包表

祖先Id

后代Id

深度

1

1

0

1

2

1

1

3

2

优点:查询性能高、支持层级快速移动。

不足:存储开销大(两张表,一张数据表、一张关系表),写入逻辑复杂。

通常,闭包表方案,是平衡i性能和可维护性的最佳方案。

数据库:盖楼模式

盖楼模式采用两层结构,避免了递归调用。只需存储一级评论和二级评论(所有回复)即可。

主键Id

一级评论Id

回复Id

内容

1

0

0

种草

2

1

1

+1

3

1

2

+2

查询所有一级评论,不需要遍历,直接where 一级评论id=Id即可。

如何写

写入时,异步入库,数据最终一致性。发MQ消息,MQ消费者,消费,入库。为保证页面的展示,前端JS缓存并写页面。

如何读?

上面解决了存储(写)的问题,如何读呢,面对百万千万用户,访问呢?如果直接查询数据库,系统会瞬间宕机。我们采用的方案是:针对热数据进行缓存,冷数据按需加载。

1、热点缓存:通常用户只看前几页评论,所以可以将热点数据,存储在redis中,使用zset数据结构。

2、按需加载:对于冷门数据,懒加载,当用户点击时再查数据库。分页采用游标翻页方式,记录上一页最后的位置,如:WHERE id < ? ORDER BY id DESC LIMIT ?,而不是offset方式翻页:LIMIT offset, size 。

全链路

上文主要描述了,评论系统的数据层设计,以及读写的内容。一个完整的设计是全链路的,所以还会涉及限流,降级,熔断,服务拆分等内容。

架构设计是一个系统工程,个人最新的打算是,尽量输出些内容,或许只是一部分或只是一个概括的点(读者可以根据这个点,搜索相关的内容,逐步组成线和面)。或许这些内容融入原有的设计中,就是一个完整的系统。

https://mp.weixin.qq.com/s/nbSh2bc0yOGQfI2puOie5g

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:59:14

从 RPA 迈向智能自治,开启企业外部群运营的“自动驾驶”时代

​ QiWe开放平台提供了后台直登功能&#xff0c;登录成功后获取相关参数&#xff0c;快速Apifox在线测试&#xff0c;所有登录功能都是基于QiWe平台API自定义开发。 一、 趋势洞察&#xff1a;从“流程自动化”到“智能自治” 未来的外部群管理将呈现三个核心转变&#xff1a…

作者头像 李华
网站建设 2026/6/10 14:21:25

康养休闲旅游服务实训室设备列表与功能介绍

一、 康养休闲旅游服务实训室健康评估与初步筛查模块设备清单该模块设备用于训练学员掌握对客人的健康状况进行系统化评估与记录的能力。智能体征监测设备&#xff1a; 包括非接触式睡眠监测仪、便携式多参数检测仪&#xff0c;功能在于教学员规范采集心率、血压、睡眠质量等基…

作者头像 李华
网站建设 2026/6/10 11:57:21

Springboot应急物资管理系统s8124(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能&#xff1a;物资类型,用户,地区,物资需求,物资捐赠,应急物资,物资出库,物资入库,供应商,物资筹措开题报告内容一、研究背景与意义&#xff08;一&#xff09;现实背景全球自然灾害与公共卫生事件频发&#xff0c;传统应急物资管理暴露三大核心痛点&am…

作者头像 李华
网站建设 2026/6/10 11:57:30

从混乱到高效:2026年玄微科技如何重塑孕产门店运营?

在孕产健康管理行业快速发展的今天&#xff0c;门店运营的精细化与智能化已成为提升竞争力的关键。面对市场上众多管理系统选项&#xff0c;如何选择正规且适配的专业解决方案&#xff0c;成为行业从业者的核心关切。本文聚焦孕产场景&#xff0c;深入分析行业需求&#xff0c;…

作者头像 李华