50万QPS下微博未读数系统设计挑战与解决方案
需积分: 0 18 浏览量
更新于2024-08-05
收藏 472KB PDF 举报
在本篇关于计数系统设计的文章中,作者唐扬着重讨论了在高并发场景下,尤其是50万QPS的挑战下,如何设计一个高效的未读数系统。首先,他强调了缓存技术在提升系统性能和抵抗并发量中的关键作用,以及在上一节课中所介绍的通用计数系统的基础架构,包括使用Redis等技术处理万亿级计数数据和百万级读取请求。
文章提到,常规的未读数计数可以应用通用计数系统的原理,通过用户ID作为键,在内存区域存储用户的未读消息类型(如@、评论等)的数量。用户查看相应通知时,计数会被重置为零。然而,当涉及到系统通知的未读数时,通用计数方案不再适用。因为随着用户数量的增长,逐个更新每个用户未读通知计数会带来问题:全量用户查询消耗大量时间,对数据库压力大,响应时间过长,这对实时性要求高的在线业务来说是不可接受的。
为解决这个问题,文章提出了一种折中的方法:预先从数据仓库获取所有用户的ID,并存储在本地文件中,然后在发送系统通知时,通过轮询的方式更新这些用户的未读计数。这种方法虽然减少了数据库查询,但仍然需要定时同步数据仓库,确保数据的实时性。
此外,文章还提到了早期微博版本中的系统通知功能,它会向所有用户推送消息,如果没有被查看,系统会记录未读状态。这种设计需要额外考虑用户体验和通知效率,尤其是在大规模用户场景下,如何平衡推送频率和通知质量是一大挑战。
本文探讨了在高并发环境下的未读数系统设计,不仅关注了基础的计数技术,还深入剖析了系统通知场景下的特殊需求和优化策略。对于从事IT系统设计的学生或开发者来说,这是一个实战型的宝贵案例,可以帮助理解如何处理复杂的并发问题和优化性能瓶颈。
139 浏览量
2022-08-03 上传
2022-08-03 上传
370 浏览量
471 浏览量
155 浏览量
791 浏览量
5960 浏览量
127 浏览量
CyberNinja
- 粉丝: 29
- 资源: 297
最新资源
- SQL SERVER实用经验技巧集
- 程序设计需求分析模板
- 15天学会jQuery(0-5).15天学会jQuery(0-5).
- Android编程指南(en)
- White-Box Testing
- mtk经典方案pdf
- Java 程序语言设计
- signaling 7
- AT91RM9200 中断控制器详解(AIC)
- ADO.Net完全攻略.pdf
- Building embeded Linux
- Class Discussion 2 - HP
- 《计算机软件文档编制规范》GB-T8567-2006 (文档结构已整理,word版)
- 数字功率放大器数字PWM线性化技术
- 2008惠普的一次考试题
- UNIX系统操作命令