Reddit 架构:演进之旅

Reddit 架构:演进之旅

💡 原文英文,约3800词,阅读约需14分钟。
📝

内容提要

这篇文章介绍了Reddit的架构演进历程,包括早期架构、迁移至AWS、GraphQL联邦、数据复制、媒体元数据管理、图片优化、用户保护、Feed架构和从Thrift到gRPC的迁移。这些变化使得Reddit能够应对用户规模和复杂性的增长,并提供更好的性能和用户体验。

🎯

关键要点

  • Reddit成立于2005年,旨在成为互联网的首页。
  • Reddit的用户基础在2018年以来增长了366%,月活跃用户超过12亿。
  • Reddit的架构经历了从Lisp到Python的重写,最初使用web.py框架,后来转向Pylons。
  • Reddit在2009年完全迁移到AWS,成为S3的早期采用者。
  • r2是Reddit的核心单体应用,使用Postgres作为核心数据模型,并通过memcache和Cassandra来减轻数据库负担。
  • Reddit于2017年开始使用GraphQL,2021年转向GraphQL Federation以提高并发性和关注点分离。
  • Reddit采用Debezium和Kafka Connect进行实时数据复制,解决了早期数据复制的可靠性问题。
  • Reddit建立了新的媒体元数据存储系统,以支持高达每秒10万次的读取请求,使用AWS Aurora Postgres作为数据存储。
  • Reddit将图像优化功能内部化,构建了Gif2Vid和图像优化服务,以降低成本和提高用户体验。
  • Reddit开发了REV2规则引擎,以实时监控和管理违反平台政策的内容。
  • Reddit的Feed架构经过重构,采用服务器驱动的UI,提升了用户体验和开发效率。
  • Reddit从Thrift迁移到gRPC,以适应不断增长的需求,利用gRPC的HTTP2支持和服务网格技术。
➡️

继续阅读