知乎 feed 流架构演进

所属专题:业务系统架构的蜕变与进化

嘉宾 : 姚钢强 | 知乎首页组&技术负责人

会议室 : 第二会议厅A

讲师介绍

专题演讲嘉宾:姚钢强

知乎 首页组&技术负责人

2013 年加入知乎,担任首页 feed 流技术负责人。专注于改进 feed 流的稳定性和性能,有丰富的编码和工程攻坚经验。在负责 feed 流项目期间,通过构架优化使响应时间 p95 从 1.6s 降低到 700ms,通过开发规范使稳定性由 99.9% 提升到 99.99%。

议题介绍

演讲:知乎 feed 流架构演进

摘要:

背景:知乎首页信息流根据业务类型(实时性,资源节省,算法排序)选择了 PULL 类型的架构,而且系统中存在大量过滤,会产生反复到底层 feed source 拉取的问题。响应时间受到了比较大的影响达到了 1.6s。

解决方案选型:尽量使计算接近存储,节省网络和序列化开销。使用最新的 Redis module 技术,定义针对首页业务逻辑的 Redis 接口。

方案介绍:将一部分计算逻辑迁移到 Redis 内部,使数据(使用 protobuf 压缩)和计算完全在内存中进行,减少无效网络传输,大大提高计算效率,降低了响应时间。而且 Redis 内部的计算逻辑改变时,不需要重新编译 Redis,只需要动态记载计算逻辑部分即可。

实施后效果说明:响应时间 p95 1.6s - 700ms,节省内存 1T,CPU 500 个,减少首页依赖服务 1/2 的 qps。

演讲提纲:

  • 知乎 feed 流业务应用场景和需求介绍;
  • Redis module (计算接近存储)的技术方案介绍:
    • a. 为什么选择 Redis module 技术(计算接近存储),介绍优势和劣势;
    • b. Redis 内部的存储 schema 设计;
    • c. Redis module 的基本原理和实践经验。
  • 未来的规划与挑战:
    • a. Redis 单线程,CPU 过高问题的解决;
    • b. Redis module 部署问题的稳定性。

听众收益:

  1. 了解 feed 流架构的设计经验和一般解决方案;
  2. 了解新技术 Redis module 在实际生产环境的使用经验和教训。

极客邦控股(北京)有限公司

北京市朝阳区望京利泽中二路洛娃大厦C座6层1607