热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从Ruby向Java的迁移帮助Twitter挺过了美国大选

在美国总统大选的日子,根据负责Twitter基础架构运维工程的VPMazenRawashdeh的说法,服务器平均每分钟要处理327452条tweet&

在美国总统大选的日子,根据负责Twitter基础架构运维工程的VP Mazen Rawashdeh的说法,服务器平均每分钟要处理327452条tweet,即便在这种情况下,Twitter声名狼藉的“失败鲸(Fail Whale)”画面也没有出现。在一天时间内,大选相关的tweet总计有3100万条,网站流量也继续阶段性飙升,一度达到每秒15107条tweet的峰值。从历史上看,2008年的大选之夜,Twitter的峰值是每秒229条tweet。

\u0026#xD;\n

Rawashdeh指出,他们注意到在过去的一年中Twitter的使用模式有所变化,原来峰值持续时间较短(比如新年之夜的钟声敲响或碧昂丝宣布怀孕这类事件时),而现在峰值持续时间动辄数小时。这种情况已经出现了多次,比如奥运会闭幕式、NBA决赛以及现在的大选。

\u0026#xD;\n

Twitter之所以能够支撑这种级别的流量,部分原因是基础架构的改变,其中包括InfoQ 之前曾经报道过的将架构从Ruby向运行于JVM之上的混用Java和Scala编写的服务逐步迁移。

\u0026#xD;\n

最近的报道也提到了Twitter移动客户端的变化,Rawashdeh写道

\u0026#xD;\n
\u0026#xD;\n

作为从Ruby架构持续向外迁移的一部分,我们重新配置了服务,这样从移动客户端上到来的流量会交给Java虚拟机(JVM)软件栈,因而完全避免了使用Ruby软件栈。

\u0026#xD;\n
\u0026#xD;\n

Twitter一度被认为是世界上规模最大的Ruby on Rails用户,而且在Ruby软件栈上也有大量投资,该公司甚至开发了自己的名为Kiji的分代垃圾收集器(与标准的Ruby垃圾收集器不同,这种收集器将对象划分到多个代中,在大多数处理周期,只需要将代中的对象子集放入初始的白色集中,即作为垃圾回收的候选对象)。

\u0026#xD;\n

然而在2010年,Twitter宣布他们会改变开发的部分关注点。对于前端而言,他们会跟随HTML5的趋势,将渲染代码向基于浏览器的Javascript迁移,这么做的同时,也就无法再从Rails构建Web页面的模版模型中获益了。之后,在性能和代码封装等因素驱动之下,工程团队使用Scala重写了后端消息队列和Tweet存储引擎。

\u0026#xD;\n

同样在2010年,Twitter的搜索团队也开始重写搜索引擎,将搜索的存储系统从MySQL修改为基于Lucene构建的系统。之后在2011年,工程团队宣布将用于搜索的Ruby on Rails前端替换为Java服务器Blender。此举将搜索延迟降低了3倍。

\u0026#xD;\n

作为这些改进的结果,Twitter的系统一直处于无故障运行状态。“无论何时、何地或多少人使用,Twitter在全世界范围内应该是7×24可用的,这是我们的底限。”Rawashdeh写到,“我们为实现这一愿景付出了很多努力。”

\u0026#xD;\n

查看英文原文:Twitter’s Shift from Ruby to Java Helps it Survive US Election

\u0026#xD;\n

感谢侯伯薇对本文的审校。

\u0026#xD;\n

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。


推荐阅读
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • Syncnavigator激活工具及破解方法详解
    本文详细介绍了Syncnavigator激活工具的使用方法及其破解技巧。用户可以通过访问官方网站www.SyncNavigator.CN获取相关资源,并通过客服QQ 1793040获得技术支持和帮助。此外,文章还提供了详细的步骤说明和常见问题解答,以确保用户能够顺利激活并使用Syncnavigator软件。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • 本文精选了几个结合 Vue 和 Spring Boot 的优质开源项目,适合开发者学习和参考。这些项目不仅涵盖了前后端分离的最佳实践,还提供了丰富的功能示例和详细的文档,有助于提升开发效率和技术水平。项目地址:https://github.com/ 示例链接。 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
author-avatar
蜗牛的家
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有