阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

架构 Twitter

  • 2008-06-22
  • 本文字数:1120 字

    阅读完需:约 4 分钟

风行的社交应用Twitter ,其底层架构最近已成为多次讨论的焦点。由于团队试图解决一些问题,Twitter已经有几次停止运行的情况,并关闭了几个常用的功能。从Twitter 的前进脚步之中,我们能学到些什么呢?包括 Om Malik Dare Obasanjo 在内的几个人猜测是 Twitter 的底层架构导致了这些问题的出现。最近,Robert Scoble 就应用情况和公司前景采访了Twitter 的Evan Williams 和Biz Stone 。采访的视频可在 qik 上找到。

在采访中,Williams 和 Stone 回答了关于 Twitter 数据架构的大问题:Twitter 是否使用单实例存储(SIS)类型的方法来处理用户消息?在大约 13 分钟的采访记录中,Williams 谈到了消息存储和用户时间线检索:

它不是这么处理的(为用户的每个跟随者都产生一个消息副本),但实际上这可能更有效率。现在消息存储到数据库中,当人们想获取他们的时间线时,我们从数据 库中构造时间线,然后缓存到内存中,当然不是每次都缓存。但由于内容写入太频繁,我们往往也要频繁地访问数据库,而这只是为了更新缓存。所以缓存中有很多 消息副本,而在磁盘上却只有一条消息。我们以后的架构可能更多的是以多次写入的方式,因为读取在这种方式下将快更多。

从 SIS 消息架构迁移的可能性为利用像数据Sharding 这样的数据技术开启了一扇大门,数据Sharding 技术已经在许多高容量网站和应用中广受欢迎。Randy Shoup谈到了eBay 通过部分利用Sharding 来架构系统的方式,以此获得高可伸缩性:> 数据库层次的问题比较有挑战性,原因是数据天生就是有状态的。我们会按照主要的访问路径对数据做水平分割(或称为“Sharding”)。例如用户数据目 前被分割到20 台主机上,每台主机存放1/20 的用户。随着用户数量的增长,以及每个用户的数据量增长,我们会增加更多的主机,将用户分散到更多的机器上 去。商品数据、购买数据、帐户数据等等也都用同样的方式处理。用例不同,我们分割数据的方案也不同。

Bogdan Nicolau 写过一篇为数据库Sharding 基础的概述。在该系列中,Bogdan 讨论了如何决定在何处、以及如何为应用分割数据。决定时的主要一点是:> 我试图表达的是,无论你选择什么逻辑来切分表,总是要记住你不想有任何join、order by、或limit 语句,这些语句会需要不止一个的表Shards。

Bogdan 继续谈论了应用端对Shards 的利用。Bogdan 提供了几个代码例子来解释一个典型问题,同时还解释了背后的原理:> 正如你所看到的,因为要生成映射表,负担主要落在了写入一方。读取时就不需要关心涉及的数据切分算法了。

随着众人参与关于如何扩展Web 2.0 的讨论,Twitter 也许将继续向一个更稳定、可伸缩的架构迈进。InfoQ 有许多性能和可伸缩性相关的资源,在这里查看这些资源

查看英文原文: Architecting Twitter

2008-06-22 21:402443
用户头像

发布了 151 篇内容, 共 60.1 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

[JAVA冷知识]什么是逆变(contravariant)与协变(covariant)?数组支持协变&逆变吗?泛型呢?

山河已无恙

Java 2月月更

亚信科技AISWare AntDB数据库在运营商核心业务系统的联合实践分享

亚信AntDB数据库

5G AntDB intel 亚信科技

声网AI降噪测评系统初探

声网

音视频 RTE 技术详解

总结 XSS 与 CSRF 两种跨站攻击

喀拉峻

网络安全

基于RestTemplate的在线武器库

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

PingCode Wiki 权限设计之ACL

PingCode研发中心

项目管理 开发 acl PingCode 页面权限

元宇宙里办年会,听演讲、看产品、抽大奖一件不落

Meta 小元

数字孪生 元宇宙

阿里云服务器搭建halo博客从0到1

乌龟哥哥

阿里云 2月月更 halo博客

2 月亚马逊云科技培训与认证课程,精彩不容错过!

亚马逊云科技 (Amazon Web Services)

架构师 培训 认证

PingCode Wiki ——国内最顶级的产研团队知识库产品介绍

PingCode

团队管理 知识库

2022年的元宇宙,你该知晓些什么?

CECBC

springcloud五大核心组件

编程江湖

redis 面试总结

yuexin_tech

redis 面试

Camtasia音画同步剪辑教程

淋雨

Camtasia 录屏软件

2022年1月云主机性能评测报告,移动云升至第三

博睿数据

我与Android的故事|社区征文

Changing Lin

android 移动开发 新春征文

欧拉的奇异之旅·风暴来临与欧拉初诞

白洞计划

元宇宙的本质特征是五大融合

CECBC

Java自定义DNS解析器负载均衡实现

FunTester

负载均衡 性能测试 接口测试 DNS FunTester

一文让你彻底搞懂Python中__str__和__repr__

宇宙之一粟

Python 2月月更

从小样本学习出发,奔向星辰大海

百度大脑

浅谈OKR(12/100)

hackstoic

OKR

征文投稿丨使用云服务器ECS快速搭建halo博客

阿里云弹性计算

征文投稿 玩转ECS halo博客

设计模式【14】-- 从智能音箱中学习命令模式

秦怀杂货店

Java 设计模式

【安全漏洞】浅谈Bypass Waf (基础-实战)

H

网络安全 渗透测试 漏洞

2022-02微软漏洞通告

火绒安全

微软 网络安全 终端安全 漏洞修复

5种阿里常用代码检测推荐 | 阿里巴巴DevOps实践指南

阿里云云效

阿里云 云原生 软件开发 研发 DevOps实践指南

Web Components系列(四) —— 认识 Shadow DOM

编程三昧

前端 组件化 HTML5, CSS3 2月月更

虚拟空间引领 数字化转型拉开银行差距

CECBC

Linux修改drop_caches内核参数来清理缓存的一些笔记

山河已无恙

Linux 2月月更

巧用这几种文本检索工具,节省80%的时间!

优麒麟

Linux 操作系统 grep 检索 优麒麟

架构Twitter_Ruby_Steven Robbins_InfoQ精选文章