写点什么

架构 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:402503
用户头像

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

关注

评论

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

打造江西数智产业高地,百度飞桨人工智能产业赋能中心落户南昌青山湖

百度开发者中心

人工智能 百度飞桨

丝滑的打包部署,一套带走

Java你猿哥

Java Docker ssm 部署

有哪些免费的项目进度管理管理工具?对比10款知名进度管理软件

易成管理学

项目管理 项目进度管理软件

对象存储BOS: 通过安卓SDK使用HTTPDNS服务

百度开发者中心

对象存储

【广州银行信用卡中心】5分钟实现一键发布!

嘉为蓝鲸

IT

如何通过C#/VB.NET从PowerPoint文档中提取图片

在下毛毛雨

C# .net PowerPoint 提取图像

软件测试 | 黑盒测试方法—场景法

测吧(北京)科技有限公司

测试

嘉为科技与工银科技正式启动数字研运一体化合作项目

嘉为蓝鲸

强大的字体设计工具:Glyphs 3激活版

真大的脸盆

Mac 字体 字体设计 设计字体 字体管理工具

百度文心大模型开发者斩获CCF BDCI大赛唯一『最佳算法能力奖』

百度开发者中心

人工智能 数字经济 文心一言

Python十大实用技巧【附源码】

我爱娃哈哈😍

Python 开发技巧

xx产品介绍

andy

NFT游戏藏品开发DApp系统搭建

薇電13242772558

NFT

WeOpsV3.15持续拓展监控能力,支持硬件设备IPMI智能监控

嘉为蓝鲸

IT

软件测试/测试开发丨聊聊后端Web开发框架(Python)的简单使用

测试人

软件测试 自动化测试 测试开发

浙商银行升鑫赢B-1号人民币理财产品

andy

什么是软件测试?

测吧(北京)科技有限公司

测试

在线教育≠在线观看:风变科技应用无影打造自动化实训教学模式

云布道师

无影

如何分析网站监控中的数据报表,都有哪些关键信息?

云智慧AIOps社区

监控 监控宝 云智慧 监控安全 网站监控

【中远海运特运】WeOps产品为业务系统安全稳定保驾护航!

嘉为蓝鲸

直播回顾 | 告警全生命周期管理的思路与落地实践

嘉为蓝鲸

IT

一文带你掌握轻量化模型设计原则和训练技巧!

Openlab_cosmoplat

工业互联网 开源社区 轻量化模型 openlab

软件测试 | 黑盒测试方法—因果图法

测吧(北京)科技有限公司

测试

OPPO StarFire全新升级,异构计算突破算力瓶颈

安第斯智能云

人工智能 机器学习 云存储 智能云 端云协同

自动化测试是什么?

测吧(北京)科技有限公司

测试

触达率提升 20%,融云推送优化实践

融云 RongCloud

产品 实践 融云

信通院MLOps旗舰级评测,业内首批通过!

百度开发者中心

人工智能 深度学习‘’ 文心一言

研云运一体,嘉为蓝鲸助力中国智造扬帆出海!

嘉为蓝鲸

IT

与高校开发者面对面,昇腾AI开发者创享日首次走进沈阳高校

科技热闻

唯一入选的制品库!嘉为蓝鲸CPack制品管理平台成功入选!

嘉为蓝鲸

IT

软件测试常用的工具都有哪些-测试常用工具

测吧(北京)科技有限公司

测试

架构Twitter_Ruby_Steven Robbins_InfoQ精选文章