`
huangxx
  • 浏览: 321685 次
  • 来自: ...
社区版块
存档分类
最新评论

Twitter 的架构扩展: 100 倍性能提升 - zt

阅读更多

Twitter 是我最近一段时间用的最多的网络服务之一.还记得刚开始有段时间发消息速度那叫一个慢. 难得的是 Twitter 的开发者在用户激增的情况下性能提升的不错, 据说,相比当初有 100 倍的性能提升, 那我们就来看看他们都做了什么.(发现我这个 Blog 快成了 High Scalability 的中文镜像站了.)

是否真的是 100 倍性能提升, 大可不必较真, 但 Twitter 的一些经验是足以借鉴的.

Ruby on rails

似乎 Twitter 是用 RoR 开发的流量最大的站点(有待于求证). 开始使用DRb ("Distributed Ruby".), 该库可以通过 TCP/IP 从远程 Ruby 对象发送接收消息, 其缺点是不那么好用,并且没有冗余, 于是转向 Rinda , Rinda 基于 DRb 开发, 使用简单. Twitter 也证明了 Ror 应用同样可以支撑比较繁忙的站点, 工具没有对于错,关键是否能运用好.

twitter_drb.png

图片来源. (这里面我非常疑惑的一点是据说只有两台DB(Master/Slave),可要支撑这么大的并发更新似乎有些难度.)

ETag

Twitter 对于Etag 的态度让不少人疑惑. 这恰恰是因技术制宜的一个体现, 因为 Etag 不是万能药. 另外一点比较重要的原因是 Twitter 有超过 90% 的流量来自 API, 而 多数 API 客户端不支持 Etag.

数据库方面的经验

尽可能的索引(Fenng补充:不要过度索引). 因为 RoR 应用的特殊性, 索引是在代码中向 DB 提交的. 另外一个值得议题的是, 反范式. 严格遵守范式是要吃苦头的.建立可行的测试方法,明确的知道你的SQL都在用什么方式运行.(另外,我有个疑问是 rails 不支持 2 阶段提交的吧?)

避免资源过度被占用

哪个站点都不避免的有"水葫芦用户",对于这样的 Spam 类型用户, 肯定会影响原有的应用处理资源. 该处理就要处理掉. 另一个方面,对于间歇性占用系统资源过多的进程用 Monit 处理.

另外一个很重要的环节是 Cache, 不废话了,没有好的Cache机制怕这样的站点不会成功的. (建议阅读车东辛苦翻译的这篇面向站长和网站管理员的Web缓存加速指南[翻译]). Twitter 运营的一个可取之处是能够积极听取社区的意见并改进, 同时社区上也有很多用户给他们提供了不少技术支持. 这也是开放而带来的好处吧.

--EOF--

 
分享到:
评论

相关推荐

    Twitter的:beating_heart::sushi:「Twitter-:beating_heart::sushi:」-crx插件

    让你改变新Twitter:sushi:.心 支持语言:English

    Calm Twitter-1.5.1.zip

    名称:Calm Twitter ---------------------------------------- 版本:1.5.1 作者:Yusuke Saitoh 分类:其他 ---------------------------------------- 概述:隐藏Twitter 描述: 1.隐藏左栏中的“探索&rdquo...

    Twitter api使用例子

    Twitter API 是Twitter公司提供的一种服务,允许开发者通过编程方式访问和操作Twitter平台的功能,如发布推文、获取用户信息、搜索推文等。本篇文章将围绕"Twitter API使用例子"这一主题,结合Java编程语言,深入...

    Better TweetDeck-4.11.0.zip

    名称:Better TweetDeck -------------------- 版本:4.11.0 ...分类:社交通讯 -------------------- 概述:将 TweetDeck 提升到一个新的水平! 使用大量功能改善您在 ...在Twitter上关注@BetterTDeck以获取新闻/支持

    chill-java-0.9.3-API文档-中文版.zip

    标签:twitter、chill、java、中文文档、jar包; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    language-ext:C#函数语言扩展-函数编程的基类库

    C#函数式编程语言扩展 该库使用并滥用C#的功能来提供功能编程的“基类库”,如果您着眼睛看,它看起来像是对语言本身的扩展。 这里的愿望是使C#编程更加可靠,并使工程师的惯性朝着声明性和功能性代码的方向发展...

    Bot Sentinel-2.1.5.zip

    概述:自动识别不真实的帐户和有毒的 Twitter 巨魔。 描述: 自动识别不真实的帐户和有毒的Twitter巨魔。 BotSentinel是一个免费的无党派平台,旨在对不真实的帐户和有毒巨魔进行分类和跟踪。该平台使用机器学习和...

    BuzzSumo-2.0.9.zip

    Twitter官方Twitter按钮不再可用,但通过登录BuzzSumo,您可以看到拥有此扩展程序的共享者数量。然后,我们将从BuzzSumo数据库中获取计数。 所有产品和公司名称均为其各自所有者的商标或注册商标。使用它们并不意味...

    chill_2.12-0.9.3-API文档-中文版.zip

    标签:twitter、chill、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    covid-twitter-bert:用于分析COVID-19 Twitter数据的预训练BERT模型

    COVID-Twitter-BERT COVID-Twitter-BERT(CT-BERT)是基于变压器的模型,该模型在有关COVID-19的大量Twitter消息集上进行了预训练。 v2模型在9700万条推文上进行了训练(1.2B训练示例)。 当在特定领域的数据集上...

    chill-java-0.8.4-API文档-中文版.zip

    标签:twitter、java、chill、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

    WhatFont-2.1.0

    有了这个扩展,你可以通过将鼠标悬停在它上面来检查Web字体。这是简单而优雅的。它还检测用于提供Web字体的服务。支持Typekit和GoogleFontAPI。由有线WebMonkey,Lifehacker和SwissMiss推荐。反馈:电子邮件:...

    Year-Progress-Twitter-Bot:使用NodeJS的Year-Progress-Twitter-bot

    年进度Twitter Bot在NodeJS中 嗨,我是中Year Progress Twitter Bot的创建者Victor 。 你喜欢看他的动作吗? 灵感来自创建的 twitter机器人。 这个推特机器人是什么? 该机器人在推文中发布了年度进度百分比。 ...

    BTRoblox - Making Roblox Better-3.4.1.zip

    名称:BTRoblox - Making Roblox Better ---------------------------------------- 版本:3.4.1 作者:AntiBoomz ...如果您有任何要报告的错误或要请求的功能,请在Twitter(@AntiBoomz)上给我发送消息。

    chill-java-0.7.6-API文档-中文版.zip

    标签:twitter、chill、java、中文文档、jar包; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    chill_2.11-0.7.6-API文档-中英对照版.zip

    标签:twitter、chill、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

    chill-java-0.7.6-API文档-中英对照版.zip

    标签:twitter、chill、java、中英对照文档、jar包; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

    chill_2.12-0.7.6-API文档-中文版.zip

    标签:twitter、chill、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    chill-java-0.8.4-API文档-中英对照版.zip

    标签:twitter、java、chill、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    Laravel开发-twitter

    在本文中,我们将深入探讨如何使用 Laravel 框架进行 Twitter API 开发,特别是通过 Thujohn 的 fork 版本的 `Twitter` 包。Laravel 是一个流行的 PHP 框架,它提供了丰富的功能和优雅的语法,使得开发者能够快速、...

Global site tag (gtag.js) - Google Analytics