news 2026/5/26 14:59:48

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

作者头像

张小明

前端开发工程师

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/5/22 19:15:37

2.Java实现电子签名的两种工具

&#x1f4dd; Java实现PDF在线盖章签字和签名 | 解锁文档处理新姿势 &#x1f680; 大家好呀&#xff5e;✨ 我是雪碧聊技术&#xff0c;今天给大家带来一篇超实用的技术干货&#xff01;&#x1f31f; 如果你正在为 PDF文档的电子签名 而烦恼&#xff0c;或者想在自己的项目中…

作者头像 李华
网站建设 2026/5/20 19:55:01

企业微信 RPA 外部群自动化实战:5 大技术瓶颈与解决方案

前言 在实验室跑通一个 RPA 脚本很容易&#xff0c;但在生产环境中管理成百上千个外部群&#xff0c;你会遇到 UI 漂移、消息堆积、风控拦截等一系列“深水区”问题。本文不谈虚的概念&#xff0c;直接分享 5 个核心痛点及其对应的工程化解决方案。 ​ QiWe开放平台提供了后台…

作者头像 李华
网站建设 2026/5/20 18:54:54

学Simulink--基础储能管理场景实例:基于Simulink的储能SOC均衡控制策略仿真

目录 手把手教你学Simulink 一、引言:为什么储能系统需要“SOC均衡”? 二、系统整体架构 控制层级: 三、理论基础:SOC 均衡策略 1. 被动均衡(Passive) 2. 主动均衡(Active) 四、Simulink 建模全流程 步骤1:多簇电池模型 步骤2:主功率指令与总电流计算 步骤…

作者头像 李华
网站建设 2026/5/21 23:02:55

2026制造业突围战:ERP和MES系统集成成为降本增效关键抓手

2026年&#xff0c;制造业与零售电商的核心痛点仍是系统割裂与数据孤岛。超过80%的企业在集成阶段受阻&#xff0c;中国76%的中型企业使用超过5种管理系统&#xff0c;其中ERP与MES的数据割裂导致63%的企业决策延迟&#xff0c;平均造成420万元年损失。实现两系统集成&#xff…

作者头像 李华
网站建设 2026/5/22 20:01:13

ERP与MES系统集成如何选?2026最新靠谱厂商实战测评出炉

2026年&#xff0c;制造业与零售电商的核心痛点仍是系统割裂与数据孤岛。超过80%的企业在集成阶段受阻&#xff0c;中国76%的中型企业使用超过5种管理系统&#xff0c;其中ERP与MES的数据割裂导致63%的企业决策延迟&#xff0c;平均造成420万元年损失。实现两系统集成&#xff…

作者头像 李华
网站建设 2026/5/22 10:33:09

Java全栈开发面试实录:从基础到实战的深度探讨

Java全栈开发面试实录&#xff1a;从基础到实战的深度探讨 一、开场介绍 面试官&#xff1a;你好&#xff0c;我是负责技术面试的工程师&#xff0c;今天来聊聊你对Java全栈开发的理解以及你在项目中的一些实践经验。 应聘者&#xff1a;您好&#xff0c;我叫李明&#xff0c;2…

作者头像 李华