从6名工程师到1100万用户,Pinterest的成功与挫折
曾几何时,以图像为中心的社交网络 Pinterest 凭借仅由 6 名工程师组成的精简团队,排除万难,用户数量猛增至 1100 万。请系好安全带,让我们揭开 Pinterest 如何战胜规模化挑战、在追求数字主导地位的过程中的成功与挫折的迷人传奇。
Pinterest的开始
在神秘的 2012 年,Pinterest 自豪地炫耀其每月活跃用户数达到 1100 万,仅用六名工程师就实现了这一壮举。这个传奇始于 2010 年 3 月,当时先驱者仅用一名工程师和一个小型 MySQL 数据库就推出了这款产品。这次旅程充满了教训,创新与简单的结合。
扩展的艺术 - 经验教训
1.经过验证的技术规则:Pinterest 坚持使用已知技术的智慧,避免潜入未知领域的陷阱。
2. 简单的胜利:他们的旅程中反复出现的主题 - 保持简单。复杂性是他们每次都要战胜的恶棍。
3. 扩展的智慧: Pinterest 决定添加更多相同的节点来扩展,避免不必要的创造力,这是他们策略中的一个关键举措。
4. 数据库之舞:分片数据库优先于集群、优化数据传输并避开潜在陷阱。
5. 工程的乐趣: Pinterest 的工程师不仅仅是编码员;他们还是程序员。他们从第一天起就是贡献者,将创新精神注入公司的 DNA 中。
Pinterest 的架构演变
随着时间的流逝,Pinterest 的架构不断发展。从基本的 Web 服务器堆栈到采用 Django 作为后端,他们敏捷地穿越了增长的迷宫。
过于复杂化的失误
在满足快速增长的用户群的竞争中,Pinterest 遇到了障碍。他们的架构变成了由五种不同的数据库技术编织而成的错综复杂的挂毯,造成了混乱。
- Membase (Now Couchbase)
- Cassandra
- Elasticsearch
- MongoDB
- NGINX
集群管理的噩梦:集群的复杂性导致数据损坏和无法修复的问题。Pinterest 的解决方案?坚持使用经过验证的 MySQL 和 Memcached 是一个大胆的举动。
2012 精简的胜利
2012 年 1 月,Pinterest 经历了一次转型,目前用户数量已达到惊人的 1100 万。该架构经过简化,抛弃了未经充分验证的概念,以提供强大的替代方案。
Pinterest 的简化堆栈
- Amazon EC2 + S3 + Akamai
- AWS ELB
- Flask 作文后端
- MySQL, Memcache 作为分布中心存储
掌握手动分片
手动分片数据库的艺术成为 Pinterest 的强项。在冻结期间,他们手动增量地对数据库进行分片,删除表连接并采用缓存。
Pinterest 分片交响曲
- 功能冻结
- 增量和手动分片
- 在庞大的、未分片的数据库中维护独特的约束
2012 年用户数量跃升至 2200 万
2012 年 10 月,Pinterest 用户数量增至 2200 万。架构保持不变,展示了复制有效内容并扩大规模的力量。
增长中的一致性
- 过渡到 SSD
- 有限的、经过验证的稳定性选择
- EC2 和 S3 - 经受住时间考验的组合。
Pinterest 的数据库魔法
揭开 Pinterest 数据库结构、独特的 64 位 ID 结构和表格艺术背后的秘密。
ID 结构魔法
- 分片 ID、类型、本地 ID - 为可扩展性精心编排的 64 位交响乐。
表的优化
- 使用大量对象表
- 用关系表来做查询优化
- 告别 JOIN,拥抱效率。