分享

Pinterest如何从一个Django应用逐步支撑起3亿月活?

 太极混元天尊 2018-05-29


Python & Django 是很多 Python 爱好者用来搭建网站的入门框架选择,很多人会评价 Django 是一个庞大的轮子,太重又不灵活,但实际上国内外有很多使用 Django 的成功例子,例如去年就已经达到 30 亿注册用户、7 亿月活的 Instagram,已经从 Python 2.7 + Django 1.3 升级到 Python3 了,Instagram 升级期间谈到 Django 仍然没有成为瓶颈所在。

用 Python 作为后端还有知乎、豆瓣、饿了么、Dropbox、Uber、Reddit、Youtube、Quora 等等,今天谈谈另外一个著名的例子:Pinterest,现在也有 3 亿月活了。

Pinterest 是基于视觉分享的社交网站,采用的是瀑布流的形式展现图片内容,无需用户翻页,新的图片不断自动加载在页面底端,让用户不断的发现新的图片,堪称图片版的 Twitter。

这个案例是 Pinterest 大数据及机器学习平台负责人武永胜 即将在 InfoQ 举办的 ArchSummit 全球架构师峰会(7 月 6-9 日,深圳)的其中一门分享,这里强烈推荐各位有机会一定要去参加(预算不够可以加持我申请的'python'优惠码,可以 8 折报名,或者直接找 Boss 申请报销)。

ArchSummit 业界口碑一直很好,今年已经是第七届,这次邀请了上百名国内外顶尖架构师前来分享各自的核心架构实践,大会日程可以扫下方二维码获取:

先介绍武永胜:

武永胜目前在 Pinterest 领导大数据和机器学习平台团队,提供统一的大数据和机器学习平台,帮助工程师们更自信地用机器学习平台来解决复杂问题。在此之前,永胜是基础设施团队的一名早期工程师,帮助 Pinterest 从大约千万用户扩展到 3 亿月活。

此外,他还率队带领 Pinterest 度过微服务架构转型期,从基于 lucene/solr 的搜索系统到高可伸缩,高效率,高性能和可扩展的本土搜索基础架构,并为 Pinterest 所有工程师提供异步任务处理系统,分布式缓存,存储和服务系统。

在加入 Pinterest 之前,永胜在 Twitter,Salesforce,Seven Networks 和 Oracle 工作过,永胜拥有斯坦福大学计算机科学硕士学位。

武永胜届时在 ArchSummit 有两场分享:《Pinterest 高可扩展基础设施架构技术点》和《Pinterest 大数据平台的当下和未来》,我比较期待《架构技术点》,演讲摘要非常丰富,透露很多关键信息,这里简单摘要了一部分:

武永胜老师会分享在过去 8 年他们服务 200-300M MAUs 过程中,是如何扩展 Pinterest 在线基础设施架构的。经过多年迭代,Pinterest 的在线基础设施从 2010 年的一个基于单个 MySQL 实例的 Python Django 应用,不断演进成最新的基于微服务的架构体系。

使 Pinterest 能够横向扩展,服务数亿用户的关键技术点:

  • 微服务框架,由 Twitter Finagle 提供支持,具有高度弹性的服务发现和基于 Apache Zookeeper 构建的实时配置管理系统。

  • Pinlater 是一个异步任务处理框架,由 Pinterest 开源,包含幂等 / 交换性,并允许它们执行非关键部分的请求处理逻辑,以提供高质量的在线用户体验。

  • 分布式缓存,存储和服务系统:

    • Pinterest 采用了由 Facebook 开源的缓存代理 Mcrouter,以实现 AZ 失效弹性,高度一致和高性能的分布式缓存系统。

    • Pinterest 使用 Apache HBase 和 MySQL 将分散式存储系统与集成缓存层(代号为 Zen)分离开来,通过图形数据模型以自助服务的方式实现快速产品创新。这个系统受 Facebook 的 TAO 和 Dragon 的启发。

    • Scorpion Serving 是一款由 C++,Folly 和 RocksDB 提供支持的高吞吐量,低延迟 ML 服务系统,每秒可以获得数千万用户配对,P99 延迟小于 20ms。

  • Muse: 这是 Pinterest 内部研发的搜索引擎,采用 C++ 实现,Pinterest 用于替代 Apache Solr 和 Apache Lucene,以提供高吞吐量,低延迟大规模搜索,具有实时索引功能,为整个 Pinterest 工程提供服务。

随着业务的增长,Pinterest 需要解决单个地理区域系统故障的业务连续性风险。武永胜也将分享他们必须做出的主要变化,以确保 Pinterest 能够在多个地理位置之间积极主动地进行服务,并且在缓存和持久存储层之间具有强大的一致性。

在另外一场分享《当下和未来》中,武永胜也将深入探讨 Pinterest 数据平台技术栈,围绕

  • 数据摄入(实时事件,日志记录,数据库快照,数据库增量转储)

  • 批量 / 流式数据处理平台(Hadoop, Spark, Flink, Kafka Streams)

  • 查询平台(Hive,Presto,Spark SQL)

  • Pinterest 本土工作流引擎

等内容展开。

除了在 Pinterest 支持大数据平台的关键技术之外,永胜还将分享涵盖 Pinterest 工程鼓励所有权和问责制,提高平台效率,避免平台团队受到运营压力,并致力于平台进步。

相信各位听了分享后会深入了解大数据生态系统在 Pinterest 的工作原理,并会重新审视目前自己大数据平台。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多