Twitter如何在数千台服务器上快速部署代码?,互联网营销

简介:   答案是:用BT,也就是你我应该都很熟悉的BitTorrent。  对于网站经营者、创业者来说,扩展性的问题是在网站流量成长过程中势必会面对的问题,如何建立一个具有扩展性的架构(scalable architecture)便是在规划网站事业过程中不可或缺的专业知识。

  答案是:用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.

  原文标题:Twitter如何在數千台伺服器上快速部署程式碼

  原文链接:http://www.inside.com.tw/07/17/how-twitter-deploys-application-to-thousands-of-servers

  简体版编译:博客园

目录
相关文章
|
5天前
|
弹性计算 监控 负载均衡
|
24天前
|
监控 安全 Linux
RHEL 环境下 Subversion 服务器部署与配置
【10月更文挑战第18天】在RHEL环境下部署Subversion服务器需依次完成安装Subversion、创建版本库、配置服务器、启动服务、客户端连接及备份维护等步骤。确保遵循安全最佳实践,保障数据安全。
|
5天前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
14天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
139 2
|
14天前
|
NoSQL Linux PHP
|
15天前
|
弹性计算 数据库连接 Nacos
阿里云ECS服务器在docker中部署nacos
docker pull nacos 失败,docker部署nacos遇到的问题,nacos数据库连接,nacos端口映射
71 1
|
21天前
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
34 1
|
25天前
|
安全 Linux 数据安全/隐私保护
RHEL 环境下 Subversion 服务器部署与配置
【10月更文挑战第17天】在RHEL环境下部署Subversion服务器包括安装Subversion、创建和配置版本库、启动服务器、客户端连接以及备份与恢复等步骤。通过这些步骤,可确保服务器的安全性和稳定性,满足版本控制需求。
|
23天前
|
IDE 网络安全 开发工具
IDE之vscode:连接远程服务器代码(亲测OK),与pycharm链接服务器做对比(亲自使用过了),打开文件夹后切换文件夹。
本文介绍了如何使用VS Code通过Remote-SSH插件连接远程服务器进行代码开发,并与PyCharm进行了对比。作者认为VS Code在连接和配置多个服务器时更为简单,推荐使用VS Code。文章详细说明了VS Code的安装、远程插件安装、SSH配置文件编写、服务器连接以及如何在连接后切换文件夹。此外,还提供了使用密钥进行免密登录的方法和解决权限问题的步骤。
200 0
IDE之vscode:连接远程服务器代码(亲测OK),与pycharm链接服务器做对比(亲自使用过了),打开文件夹后切换文件夹。
|
24天前
|
IDE 网络安全 开发工具
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
本文介绍了如何在PyCharm专业版中连接远程服务器并配置远程Python环境解释器,以便在服务器上运行代码。
197 0
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。