`
goafter
  • 浏览: 10664 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

[转载] Twitter如何在数千服务器快速部署代码?

阅读更多
【IT168 评论】Twitter如何在数千台服务器上快速部署代码?答案是:用BT,也就是你我应该都很熟悉的BitTorrent。

  对于网站经营者、创业者来说,扩展性的问题是在网站流量成长过程中势必会面对的问题,如何建立一个具有扩展性的架构(scalable architecture)便是在规划网站事业过程中不可或缺的专业知识。
如果服务本身的功能性符合用户需求,却因为架构、程序性能、数据库性能的问题导致服务增长出现瓶颈时,如何评估、分析网站性能瓶颈?厘清问题后如何找出对应的解決方案,可以思考的相关议题可能包括:

    *   如何有效率地厘清问题?从客户端的数据(读取时间)或是从服务器端的log日志、硬件的负载率?
    *   网站性能瓶颈是出現在Client或Server端?是数据库撑不住还是程序性能不好?是Request太多还是数据太大?
    *   Web Server、DB server如何挤出更多的资源?挤不出资源后如何扩展?扩展后会遇到什么问题?

  参考国外知名网站在架构上的做法是很好的一种方式,尽管服务的规模可能无法相比,但根据「正确的做法与经验」踏出对的第一步,肯定是有助于突破网站运营的性能瓶颈。

  Twitter身为全球最大的微博服务,运用数千台的服务器提供服务给来自全球各地的用户,然而每当网站內容、应用程序有更新时,如何尽可能地在最短的时间內将程序代码部署(deploy)到所有的服务器便是相当重要的课题。

  Twitter的博客上的一篇文章:「Murder: Fast datacenter code deploys using BitTorrent」(不能直接访问)分享了Twitter如何持续改善应用程序的部署流程,在过去Twitter使用Capistrano部署应用程序,Capistrano是许多Ruby/Rails使用者(当然也有其他语言的开发人员会使用)用来部署程序代码的一个开源项目,开发人员在部署程序代码的过程中都可以通过自动化的部署流程来简化经常重复的工作,尤其在项目必须同时部署到多台应用程序服务器时会特別方便。

Twitter在早期便依赖Capistrano来进行应用程序的部署,每当有新版本的程序代码需要发布时,Capistrano会根据预设好的各种设置、流程到Twitter所有的服务器上进行更新的操作,在过去服务器还不多的情況下一切都很美好,但随着Twitter服务器数量的增长,到了几百台服务器时,事情已经不再像过去一样美好,甚至到后来拥有数千台服务器时,更新的操作会耗费40分钟。

  Twitter针对这个问题,认为问题的关键在于:使用集中式的系统,也就是所有的服务器要轮流排队到同一台版本控制系统上进行代码更新。Twitter最初的想法是将版本控制系统也做出分散式的架构,服务器的代码更新就可以分散到不同的机器来压缩部署时间,但事实上版本控制系统即使分散在多台服务器上,这些服务器要更新文件也同样需要时间。因此Twitter发现或许需要一个完全去中心化、最好是像BitTorrent这样的,利用P2P的特点让所有的节点都可以协助进行程序代码的更新。

  从结果来看,在采用了BitTorrent的方式来更新代码,部署的时间从40分钟大幅减少到只要12秒!实在是非常惊人的改善,数千台服务器的代码更新居然只要短短12秒就能完成。

  Twitter也将此次部署流程改善的成果分享出來,项目名称叫做Murder,如果对于技术细节有兴趣的读者,可以再进行深入的研究;笔者简单摘录几个重点如下:

    *   Murder是以BitTornado为基础开发出来的(BitTornado是一种BitTorrent client)。
    *   Murder的定位是「协助我们快速地将文件部署到大批服务器上」。
    *   利用BitTorrent的部署方式可避免防火墙的问题、拥有非常快的传输速度。
    *   实际的部署代码是搭配Capistrano进行,网页上有很清楚的说明。

  以下是Twitter的架构工程师Larry Gadea谈Murder的视频(不能直接访问):
Twitter – Murder Bittorrent Deploy System from Larry Gadea on Vimeo.

原文:http://tech.it168.com/a2010/0817/1091/000001091367.shtml
分享到:
评论

相关推荐

    仿Twitter源代码 社交网络源码 基于脉聊二开版本 带详细安装视频

    仿Twitter源代码 社交网络源码 基于脉聊二开版本这是一款类似于Twitter网站的源代码。利用原代码,你可以快速搭建自己的社交网络平台。程序语言是PHP。数据库采用Mysql。与此同时系统带有注册,评论,转发等功能。...

    快速应用部署工具Murder.zip

    Twitter Murder由Python和Ruby两种编程语言混合而成,能够在大规模的服务器集群中快速部署代码更新。据Twitter工程师拉里·加迪 (Larry Gadea)介绍,以前需要耗时40分钟的部署过程现在可以缩短至12秒,速度非常快...

    仿Twitter源代码社交网络源码基于脉聊二开版本带详细安装视频.zip

    仿Twitter源代码 社交网络源码 基于脉聊二开版本这是一款类似于Twitter网站的源代码。利用原代码,你可以快速搭建自己的社交网络平台。程序语言是PHP。数据库采用Mysql。与此同时系统带有注册,评论,转发等功能。...

    仿Twitter源代码 社交网络源码

    这是一款类似于Twitter网站的源代码。利用原代码,你可以快速搭建自己的社交网络平台。程序语言是PHP。数据库采用Mysql。与此同时系统带有注册,评论,转发等功能。注册用户可以分享他 仿Twitter源代码 社交网络源码...

    仿Twitter源代码 社交网络源码 基于脉聊二开版本

    这是一款类似于Twitter网站的源代码。利用原代码,你可以快速搭建自己的社交网络平台。程序语言是PHP。数据库采用Mysql。与此同时系统带有注册,评论,转发等功能。注册用户可以分享他 仿Twitter源代码 社交网络源码...

    仿Twitter源代码 社交网络源码 基于脉聊二开版本 网站源码

    这是一款类似于Twitter网站的源代码。利用原代码,你可以快速搭建自己的社交网络平台。程序语言是PHP。数据库采用Mysql。与此同时系统带有注册,评论,转发等功能。注册用户可以分享他 仿Twitter源代码 社交网络源码...

    twitter源代码

    twitter源代码。。。。。。。。。。。。。。。。。。。。。。。。

    Google App Engine搭建Twitter API Proxy

    一旦成功部署了 Twitter API Proxy,就可以在第三方客户端中使用它了。例如: - **Twhirl**:在 Accounts Manager 中添加一个 Laconica 账户,并使用 `[twitter]@yourid.appspot.com` 作为 Twitter 用户名。 - **...

    基于脉聊二开版本仿Twitter源代码 社交网络平台源码

    这是一款类似于 Twitter 网站的源代码。利用原代码,你可以快速搭建自己的社交网络平台。 程序语言是 PHP。数据库采用 Mysql。与此同时系统带有注册,评论,转发等功能。 注册用户可以分享他们的图片视频,或者...

    twitter代码

    twitter代码

    Twitter 分享 标题+URL+图片

    图片可以通过上传到Twitter服务器并获取其Media ID来实现。Twitter4J库提供了`uploadMedia()`方法来上传图片。 3. **构造Tweet对象**:使用Twitter4J,你可以创建一个`StatusUpdate`对象,设置其`text`属性为包含...

    仿Twitter源代码/社交网络源码/基于脉聊二开版本/带详细安装视频

    仿Twitter源代码 社交网络源码 基于脉聊二开版本这是一款类似于Twitter网站的源代码。利用原代码,你可以快速搭建自己的社交网络平台。程序语言是PHP。数据库采用Mysql。与此同时系统带有注册,评论,转发等功能。...

    本地发布文章到twitter和facebo Twitter OAuth the easy way – simple post to twitter script

    标题中的“本地发布文章到Twitter和Facebook”指的是创建一个脚本或工具,使得用户可以从他们的本地计算机或服务器直接发布内容到这两个社交媒体平台。这个过程通常涉及到授权和API接口的使用,以便安全地与这些服务...

    全球1000+研究员在Twitter直播训练超大模型??.pdf

    "全球1000+研究员在Twitter直播训练超大模型??" 大型语言模型(LLM)近年来成为IT行业的热点话题,研究人员和企业纷纷投入大量资源以开发和改进这些模型。OpenAI的GPT-3是这种模型的代表,具有1750亿参数量,展现...

    简单的Twitter客户端ios开源代码

    简单的Twitter客户端ios开源代码

    Twitter API: 构建与运行 源代码

    This groundbreaking book provides you with the skills and resources you need to build web applications for Twitter. Perfect for new and casual programmers intrigued by the microblogging, Twitter API: ...

    仿twitter社区源码推特PHP源码修复版

    【标题】"仿twitter社区源码推特PHP源码修复版"所涉及的知识点主要集中在PHP编程语言、Twitter社交网络的模拟实现以及源码修复这三个核心领域。 首先,PHP是Hypertext Preprocessor(超文本预处理器)的缩写,是一...

    Twitter api使用例子

    在Java环境中,我们可以选择各种库来简化与Twitter API的交互,如Twitter4J。Twitter4J是一个开源Java库,它提供了简洁的API来调用Twitter RESTful API。要开始使用Twitter4J,首先需要在项目中添加对应的依赖。如果...

    Twitter的这些那些 系统分析Twitter的产品线

    2. **Fail Whale**:Twitter的标志性宕机画面——“失败鲸”(Fail Whale),由陆怡颖设计,成为了Twitter因服务器压力过大导致服务中断时的象征。 3. **Follow机制**:在Twitter上,用户可以关注感兴趣的人,形成...

Global site tag (gtag.js) - Google Analytics