Twitter没有计划放弃ruby on rails,而且早就用了erlang改进性能

2024-02-05 04:18

本文主要是介绍Twitter没有计划放弃ruby on rails,而且早就用了erlang改进性能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[img]http://www.dbanotes.net/Images/twitter_drb.png[/img]

Twitter 是用 RoR 开发的流量最大的站点. 应用了 Rinda,其 基于 DRb使用DRb (”Distributed Ruby”.), 该库可以通过 TCP/IP 从远程 Ruby 对象发送接收消息,
,还用到了erlang技术中著名的 ejabberd。

5月9日,其官方网站上登信息辟谣, Twitter没有计划放弃ruby on rails,早就开始使用了混合语言改进性能。

为什么这个谣言传得这么快,这么像真的?

许多人总是担心rails的性能问题,一旦网站稳定性出了问题,首先考虑是rails撑不住了。

真实的情况是这样的:

1)网站和传统java,delphi桌面或企业应用程序不同,大部分性能不是来自语言,而是来自应用设计。

2)目前twitter可以支持每秒11000个请求,性能已经够了。
这是什么概念?假设1000万个用户,每个用户平均每天发10个帖子,每秒也就1000个帖子。
如果1000万个用户,每人运行一个客户端来发贴,24小时内每15分钟发一贴,每秒为10000个帖子。
现在twitter的规模还不到1000万用户,更没有每天如此活跃的1000万用户和客户端。

3)系统宕机的原因是有些恶意的程序通过API发帖,在瞬间超过了11000个以上。
系统必须通过限制程序的短时间内发帖总量,避免恶意程序破坏。
谁在做这些事?SEOer,twitter排名靠前, PR高, 发帖有API接口,很容易快速建立反向链接,许多人都在做这些发帖。也有些好奇者用极端情况测试,比如24小时增加9000个朋友。
有效地控制一个合理上限,是应用设计的一个关键。
为了彻底灭掉SEOer的行为,twitter已经去掉了帖子中的链接。
对于极端用户,已经做了封闭帐号或删除处理。
还使用了一系列方式检测这些问题。

4)目前性能足够,所以twitter没有使用数据分区存储,还是Master-slave架构。
相信要提升空间,还有很大余地。比如将用户按照地区或名称计算hash值,分配到10个或更多的数据库服务器上。

twitter平台如下:
------------------------------------------------
Ruby on Rails
Erlang
MySQL
Mongrel
Munin
Nagios
Google Analytics
AWStats
Memcached

据说twitter目前的运行状态如下:
------------------------------------------------
每秒钟600请求
每秒钟平均200-300个连接,峰值为800个连接
MySQL每秒钟处理2,400个请求
180个Rails实例,使用Mongrel作为Web服务器
1个MySQL服务器(one big 8 core box)和1个slave用于只读的统计和报告
30+进程用于处理其余的工作
8台Sun X4100s
Rails在200毫秒内处理一个请求
花费在数据库里的平均时间是50-100毫秒
超过16GB的memcached

这篇关于Twitter没有计划放弃ruby on rails,而且早就用了erlang改进性能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/679738

相关文章

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Java慢查询排查与性能调优完整实战指南

《Java慢查询排查与性能调优完整实战指南》Java调优是一个广泛的话题,它涵盖了代码优化、内存管理、并发处理等多个方面,:本文主要介绍Java慢查询排查与性能调优的相关资料,文中通过代码介绍的非... 目录1. 事故全景:从告警到定位1.1 事故时间线1.2 关键指标异常1.3 排查工具链2. 深度剖析:

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析