B站点赞业务是B站平台的重要功能之一,旨在为用户提供对视频、动态、专栏、评论、弹幕等多种实体进行点赞或点踩的操作,并支持相应的数据查询。该业务通过复杂的系统架构和算法设计,确保了高并发场景下的稳定性和性能表现。,,B站的点赞系统采用三级存储结构,包括DB层(TiDB)、缓存层(Redis)和本地缓存(LocalCache),以满足不同层次的数据访问需求。为了应对高并发请求和流量压力,B站点赞系统还采用了异步任务处理机制,确保数据库能够以合理的速率处理写入请求。B站还注重容灾能力,通过多种手段确保在各种异常情况下系统的稳定运行。
一、软件概述
B站点赞业务是B站平台提供的一种用户互动功能,允许用户对视频、动态、专栏、评论、弹幕等多种实体进行点赞或点踩操作,该业务不仅增强了用户与内容创作者之间的互动,还为平台提供了丰富的数据支持,帮助优化内容推荐和用户体验。
二、系统架构及功能特点
1、系统架构:
- B站点赞服务的系统架构分为五个主要部分:流量路由层、业务网关层、点赞服务层(thumbup-service)、点赞异步任务层(thumbup-job)和数据层(包括DB、KV、Redis等)。
2、功能特点:
业务能力:提供对某个稿件点赞(取消点赞)、点踩(取消点踩);查询是否对单个或一批稿件点过赞(踩);查询某个稿件的点赞数;查询某个用户的点赞列表;查询某个稿件的点赞人列表;查询用户收到的总点赞数等。
平台能力:提供业务快速接入的能力(配置级别);数据存储上(缓存、DB),具备数据隔离存储的能力(多租户);容灾能力,如当DB不可用时,依托缓存尽可能提供服务,当缓存不可用时,DB也需要保证自己不宕机的情况下尽可能提供服务。
三、数据存储设计
1、三级数据存储:
第一层存储:DB层(TiDB),负责整体数据的持久化保存,以及提供缓存失效时的回源查询能力,点赞记录表(likes)和点赞计数表(counts)是最为重要的两张表。
第二层存储:缓存层Cache,基于Redis实现,采用CacheAside模式,这一层缓存主要用于提高数据访问性能,减少数据库压力。
第三层存储:LocalCache,本地缓存用于应对缓存热点问题,利用最小堆算法统计出访问最频繁的缓存Key,并将热Key(Value)按照业务可接受的TTL存储在本地内存中。
2、数据模型:
- 点赞记录表记录用户在什么时间对什么实体进行了什么类型的操作(是赞还是踩,是取消点赞还是取消点踩)等信息。
- 点赞计数表记录被点赞实体的累计点赞(踩)数量。
四、系统压力及应对措施
1、流量压力:
- 全局流量压力:全站点赞状态查询、点赞数查询等【读流量】超过300k,点赞、点踩等【写流量】超过15K,为保证数据写入性能,系统在内存中做了部分聚合写入,并实现了数据库写入的全面异步化处理。
2、单点流量压力:
- 热门事件、稿件等带来的系统热点问题,包括DB热点、缓存热点,系统通过热点识别机制识别热点,并将数据缓存至本地,设置合理的TTL来应对。
五、软件应用实例
1、用户互动:用户在观看B站视频时,可以点击点赞按钮表达对视频的喜爱和支持,点赞数会实时更新,并在视频下方显示。
2、内容推荐:B站根据用户的点赞历史和行为数据,为用户推荐更符合其兴趣的视频内容,点赞数据作为重要的参考指标之一,帮助平台优化内容推荐算法。
3、数据分析:B站利用点赞数据进行数据分析,了解用户喜好和行为习惯,为内容创作者提供反馈和建议,帮助他们优化内容创作策略。
六、相关问题及解答
1、问题一:B站点赞业务如何确保数据一致性?
解答:B站点赞业务通过结合使用数据库(如TiDB)和缓存(如Redis)来确保数据一致性,当用户进行点赞操作时,系统首先更新缓存中的点赞数据,然后再异步地将数据写入数据库,系统还定期将缓存中的数据传输到数据库中进行持久化保存,系统还具备容灾能力,当数据库或缓存出现故障时,系统能够自动切换到备用方案以确保服务的连续性。
2、问题二:B站点赞业务如何处理高并发请求?
解答:B站点赞业务通过多种技术手段来处理高并发请求,系统采用了分布式架构和负载均衡技术来分散请求压力,系统使用了缓存技术来减少数据库的访问压力并提高数据读取速度,系统还实现了异步处理机制来处理写请求,确保数据库能够以合理的速率处理写入请求,系统还具备热点识别和限流等功能来应对突发的高并发请求。