B站点赞业务为UP主与粉丝提供互动纽带,涵盖视频、动态等多实体维度的点赞、点踩及数据查询服务。系统架构包括流量路由层、业务网关层、点赞服务层、异步任务层和数据层,具备高并发处理、数据隔离存储和容灾能力,确保稳定高效运行。
B站点赞业务(B站点赞服务)详情
1、业务概述:
- B站的点赞系统为视频、动态、专栏、评论、弹幕等多种实体提供了点赞和点踩功能,以及相应的数据查询能力,这一系统不仅增强了用户与内容之间的互动性,还为UP主提供了衡量其内容受欢迎程度的重要指标。
2、系统架构:
流量路由层:决定流量应该去往哪个机房,确保请求能够高效地路由到适当的服务器。
业务网关层:负责统一鉴权和反黑灰产等安全筛选,保护系统免受恶意攻击。
点赞服务层:提供统一的RPC接口,处理点赞相关的业务逻辑。
点赞异步任务层:处理点赞数据的异步写入和更新,确保系统性能。
数据层:包括DB(如TiDB)、KV存储和Redis缓存,负责数据的持久化存储和快速访问。
3、数据存储:
DB层(TiDB):点赞记录表(likes)和点赞计数表(counts)是核心数据表,负责整体数据的持久化保存,并在Mid和messageID两个维度上建立了联合索引,这些表采用分布式数据库TiDB,无需考虑分库分表操作。
缓存层(Redis):使用CacheAside模式,基于Redis缓存点赞数和用户点赞列表,为了维持用户点赞列表的长度,每次加入新点赞记录时都会按照固定长度裁剪缓存。
本地缓存:利用最小堆算法统计访问最频繁的缓存Key,并将热Key(Value)按照业务可接受的TTL存储在本地内存中,以应对缓存热点问题。
4、容灾能力:
- 当DB不可用时,系统会依托缓存尽可能提供服务;当缓存不可用时,DB需要保证自己不宕机的情况下尽可能提供服务。
- 当消息队列不可用时,系统会通过RPC调用的方式自动降级。
- 针对机房灾难,系统会切换机房以保证服务的连续性。
- 对于数据同步延迟问题,系统也有相应的解决方案来确保数据的一致性。
5、FAQs:
Q1:为什么有时候点赞后点赞数没有立即增加?
A1:这可能是由于数据同步延迟导致的,B站的点赞系统会尽量保证数据的实时性,但在某些极端情况下,可能会出现短暂的同步延迟。
Q2:如何查看我自己的点赞列表?
A2:你可以在个人中心或相关设置页面中找到“我的点赞”选项,点击进入即可查看你的点赞列表。