news 2026/4/16 11:05:36

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

作者头像

张小明

前端开发工程师

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/4/12 17:38:35

三轮车不戴头盔违规载人识别抓拍系统

一、三轮车违规顽疾&#xff1a;传统监管的“三大失效困局”我国三轮车保有量超1.2亿辆&#xff08;公安部交通管理局2024年数据&#xff09;&#xff0c;其中农村地区及城乡结合部三轮车事故占比达38%&#xff0c;因“不戴头盔”“违规载人”导致的颅脑损伤致死率高达72%。传统…

作者头像 李华
网站建设 2026/4/12 6:55:46

网络分层与体系结构

文章目录网络分层与OSI七层模型协议与分层网络协议协议三要素分层式协议的优势各层的主要功能体系结构 vs 实现OSI七层体系结构TCP/IP及层体结构TCP/IP四层体系结构TCP/IP设计特点路由器的工作层次TCP/IP五层体系结构各层功能详解应用层传输层网络层数据链路层物理层&#xff0…

作者头像 李华
网站建设 2026/4/16 11:03:58

Z-Image-ComfyUI单卡部署教程:16G显存轻松运行指南

Z-Image-ComfyUI单卡部署教程&#xff1a;16G显存轻松运行指南 阿里最新开源&#xff0c;文生图大模型。 1. 引言 1.1 背景与学习目标 随着生成式AI的快速发展&#xff0c;文生图&#xff08;Text-to-Image&#xff09;模型已成为内容创作、设计辅助和智能应用开发的重要工具…

作者头像 李华
网站建设 2026/4/15 11:29:31

企业级开发环境中STM32CubeMX下载安装标准化流程

企业级开发中如何“无痛”落地 STM32CubeMX&#xff1a;从安装到团队协同的实战指南你有没有遇到过这样的场景&#xff1f;新同事入职第三天还在折腾开发环境&#xff0c;最后发现是因为他用的 STM32CubeMX 版本比团队高了半个小版本&#xff0c;生成的时钟配置代码直接让主控跑…

作者头像 李华
网站建设 2026/4/16 2:29:36

基于Simulink的储能参与电网调频(AGC)控制策略仿真

目录 手把手教你学Simulink 一、引言&#xff1a;为什么储能要参与“电网调频”&#xff1f; 二、系统整体架构 核心闭环&#xff1a; 三、理论基础&#xff1a;AGC 与 ACE 1. 区域控制误差&#xff08;ACE&#xff09; 2. AGC 控制律&#xff08;经典 PI 控制&#xff…

作者头像 李华
网站建设 2026/3/22 7:23:39

学Simulink--基础储能管理场景实例:基于Simulink的光储联合系统削峰填谷能量管理仿真

目录 手把手教你学Simulink 一、引言:为什么需要“光储联合削峰填谷”? 二、系统整体架构 能量流逻辑: 三、能量管理策略设计(基于规则) 决策逻辑(优先级从高到低): 四、Simulink 建模全流程 步骤1:光伏发电模型 步骤2:负荷模型 步骤3:分时电价信号 步骤…

作者头像 李华