B站评论系统的多级存储架构

1.  背景

评论是 B站生态的重要组成部分,涵盖了 UP 主与用户的互动、平台内容的推荐与优化、社区文化建设以及用户情感满足。B站的评论区不仅是用户互动的核心场所,也是平台运营和用户粘性的关键因素之一,尤其是在与弹幕结合的情况下,成为平台的标志性特色。

在社会热点事件发生时,评论区的读写流量会急剧增加,直接影响业务运行,对用户体验、内容创作和社区文化等多个方面产生负面影响,所以评论服务的稳定性至关重要。

评论系统对缓存命中率要求非常高,一旦发生缓存失效,大量请求会直接访问 TiDB,如果 TiDB 出现问题,将导致评论服务不可用。所以评论需要构建一套可靠的容灾系统,并具备自动降级能力,以提升评论服务的整体稳定性。

图片

图片

2. 架构设计

评论系统架构主要依赖 Redis 缓存和 TiDB 存储,列表接口中依赖多种排序索引,如点赞序、时间序、热度序等,这些索引通过 Redis 的 Sorted Set 数据结构进行存储。

在大评论区中查询这些排序索引,当 Redis 缓存 miss 时需要回源 TiDB 查询,因数据量过大、查询耗时较长,慢查询会占用大量 CPU 和内存,进而导致其他查询的延迟或阻塞,严重影响整个 TiDB 的吞吐量和性能。例如查询点赞序排序索引:

SELECT id FROM reply WHERE ... ORDER BY like_count DESC LIMIT m,n

为了避免 TiDB 故障导致评论服务不可用,我们希望建立一套新的存储系统,解决 TiDB 单点故障问题。该系统不仅为业务提供容灾能力和自动降级通道,还能在大流量查询场景下提供更优的查询性能,从而提升整体评论服务的稳定性。

基于 B站自研的泰山 KV 存储(Taishan),我们搭建了「多级存储架构」,整体设计方案的核心思路包括:

  • 将排序索引的存储从「结构化」转为「非结构化」

  • 将排序索引查询从「SQL」转换为性能更高的「NoSQL」

  • 通过「写场景的复杂度」来换取「更优的读场景性能」

图片

3. 存储设计

 存储模型

在评论的业务场景中,我们抽象了两种数据模型:排序索引(Index)、评论物料(KV)

<think>好的,用户问多级存储属于异构还是同构存储。我需要先回顾之前的对话,用户之前问了Hadoop集群是否属于异构存储,现在又转向多级存储的分类。这可能是因为用户在学习存储系统的类型,或者在设计自己的存储架构时需要明确这些概念。 首先,我需要明确多级存储和异构存储的定义。异构存储通常涉及不同介质、协议或架构的存储设备,比如SSD、HDD、云存储等混合使用,而多级存储侧重于数据的分层管理,根据访问频率等因素将数据存放在不同层级。用户可能混淆了这两个概念,或者想了解它们的区别与联系。 然后,我应该考虑用户可能的实际应用场景。比如,用户可能在处理海洋观测数据,需要高效存储和访问,因此需要合理分类存储类型。或者用户在做系统架构设计,需要选择适合的存储方案。这时候正确区分多级和异构存储对他们来说很重要,可能会影响系统性能和成本。 接下来,我需要分析多级存储的结构。多级存储通常有多个层级,比如高速缓存、内存、SSD、HDD、磁带等,每一层可能使用相同或不同的介质。如果层级间介质相同,比如都是HDD但分不同池,那可能是同构;如果使用不同介质,如SSD和HDD结合,那就属于异构。因此,多级存储可以是异构或同构,取决于层级间的介质差异。 用户可能存在的误区是认为多级存储必然使用不同介质,但其实它更关注数据的分层管理策略。需要指出两者的关键区别:异构强调介质多样性,多级强调分层策略。同时,两者可以结合,比如在多级中使用异构介质来优化性能。 还要考虑用户可能的后续问题,比如如何在实际中配置多级异构存储,或者案例应用。因此,回答中需要给出例子,比如Hadoop的异构存储配置,说明如何同时实现多级和异构。 最后,总结时明确多级存储的分类取决于层级介质是否相同,若不同则为异构,相同则为同构。同时指出两者可以共存,帮助用户全面理解。</think>以下是关于多级存储与异构/同构存储关系的分步解析: --- ### **1. 核心定义对比** | **概念** | **定义** | **典型特征** | |------------------|-------------------------------------------------------------------------|------------------------------------------| | **异构存储** | 存储系统中**混合使用不同介质、协议或架构**(如SSD+HDD、本地+云存储)。 | 硬件多样性,动态数据迁移,成本-性能权衡。 | | **同构存储** | 存储系统中**所有设备使用相同介质或协议**(如全HDD或全SSD)。 | 硬件统一,管理简单,性能一致性高。 | | **多级存储** | 将数据按访问频率、重要性等规则**分层存储在不同层级的介质或位置**。 | 分层策略驱动,生命周期管理,冷热分离。 | --- ### **2. 多级存储的分类依据** #### **(1)若层级间介质/协议相同 → 属于同构存储的多级扩展** - **示例**: - 某系统仅使用HDD,但将数据分为“活跃HDD池”和“闲置HDD池”,通过策略控制数据迁移。 - 技术意义:通过逻辑分层优化访问效率,但未改变硬件同质性。 #### **(2)若层级间介质/协议不同 → 属于异构存储的实现形式** - **示例**: - 经典**存储金字塔模型**: ``` 高速缓存(DRAM) → SSD → HDD → 磁带/云归档 ``` - 技术意义:结合介质多样性(DRAM/SSD/HDD)与分层策略,实现性能与成本平衡。 --- ### **3. 关键区别与联系** | **维度** | **异构存储** | **多级存储** | |-------------------|--------------------------------------|---------------------------------------| | **设计目标** | 利用硬件多样性优化全局资源利用率 | 通过分层管理提升数据访问效率 | | **必要条件** | 至少包含两种存储介质或协议 | 需要定义分层规则(如访问频率、成本) | | **典型结合场景** | 多级存储中常嵌入异构硬件(如SSD+HDD)| 可基于同构硬件实现纯逻辑分层 | --- ### **4. 实际案例说明** #### **(1)海洋观测数据管理中的多级异构存储** - **层级设计**: - **热层**(SSD集群):存储实时传感器数据(如浮标温度、流速),支持高频查询。 - **温层**(HDD集群):存放近3个月的历史观测记录,用于月度报告生成。 - **冷层**(对象存储+磁带):归档超过1年的原始数据,满足长期合规性要求。 - **技术实现**: - 使用HDFS存储策略标记数据热度,通过Apache NiFi自动迁移到对应介质。 - 成本对比:SSD层成本为HDD的5倍,但查询延迟降低至1/10。 #### **(2)纯逻辑多级存储(同构)** - **场景**:某气象机构使用全HDD集群,但通过HDFS的存储策略实现: - **高频访问池**:RAID 10配置的HDD,优先存储近期天气预报数据。 - **低频访问池**:RAID 5配置的HDD,存放历史气候统计数据。 - **意义**:在同构硬件中,通过冗余策略和路径隔离实现性能分级。 --- ### **5. 结论** - **多级存储既可能是异构的,也可能是同构的**,具体取决于层级间的硬件配置: - ✅ **若多级存储包含不同介质/协议** → 属于异构存储的范畴(常见于混合云、边缘计算场景)。 - ✅ **若仅通过策略对同质硬件做逻辑分层** → 属于同构存储的优化形式。 - **两者关系**: ```mermaid graph LR A[存储系统] --> B[异构存储] A --> C[同构存储] B --> D[多级异构存储] C --> E[多级同构存储] ``` - **实践建议**:在海洋大数据等高性能场景中,**推荐采用多级异构存储**,以平衡实时处理需求与长期归档成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘世中-迷途小书童

欢迎IT从业者的头脑风暴

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值