"[可靠性系统工程实践]-微博推荐引擎架构蜕变之路.pdf"
微博推荐引擎是微博平台的核心组成部分,负责为用户提供个性化的内容推荐,包括热门流、热点流、视频后推荐等多种服务。推荐系统作为一个枢纽,其架构由总控、召回引擎和排序引擎三部分组成。总控负责协调和管理整个推荐流程,召回引擎用于从海量数据中筛选出潜在的候选内容,而排序引擎则根据用户的个性化信息对这些候选内容进行精细排序,最终确定显示给用户的推荐列表。
然而,推荐引擎面临着多重可靠性挑战。首先,系统频繁宕机,导致正确返回率低于99.9%,这对用户体验造成了严重影响。其次,随着代码规模的扩大和物料(推荐内容)数量的增长(从百万级到千万级),系统的复杂性和维护难度也随之增加。此外,推荐系统需要应对突发的流量波动,并在成本和人力有限的情况下保证稳定运行。
确保推荐引擎的可靠性不仅仅是技术问题,还涉及到质量、工具和人力等多个方面。质量方面,架构和代码质量的稳定性是关键;工具层面,需要完善的治理工具、自动化扩缩容机制以及有效的监控手段;人力上,专业的运维团队和充足的人力资源支持必不可少。
在推荐引擎的具体分析中,质量问题是最不稳定的核心因素,需要投入大量工作进行改进。工具方面,虽然有一些简单的建设和通用工具,但仍然不足以满足需求。运维人力方面,专业的运维团队对于保证系统的稳定运行至关重要,而当前的引擎团队人数有限,需要协调更多资源。
在改造实践中,微博推荐引擎经历了三个阶段:初期阶段,通过现有工具控制局面,如自动化运维工具接入和优化上线脚本;中期阶段,集中人力提升质量,例如改进物料存储和已读策略;后期阶段,进一步优化工具,如自动扩缩容功能的升级和完善运维系统。
在物料存储的改造中,原有的基于mmap的存储引擎由于速度慢和内存泄漏问题被替换,采用了单机模式和快速加载的解决方案,通过连续内存对象和二级索引提高效率。在已读策略的改造上,早期基于bloomfilter的方案因空间利用率低、错误率高以及资源问题而被替换,设计了新的已读管理策略,减少了空间浪费并提高了判断效率。
总结回顾,微博推荐引擎的架构蜕变之路是一条不断解决挑战、优化性能和提高可靠性的过程。通过深入分析问题,采取针对性的改造措施,微博推荐系统在逐步完善中提升了用户体验和系统稳定性。