从用户增长和媒体反映的角度来看,
Twitter是一个很令人惊叹的成功故事。我很有幸能和开发团队谈过他们富有挑战性的开发经历。那个时候,他们需要在只有很少缓存的16块芯片情况下,巧妙的处理超过11000次每秒的访问请求。毫无疑问,他们的网站那个时候会感觉有些慢。
听起来他们那个时候有一个很好的解决方案。放进来几台新的服务器,想办法引入实质性的缓存,而且实现多个数据库服务器。这也是大多数正常的快速成长的网站采用的解决方法。
不过看起来最起码有一个开发人员觉得这种标准的扩容方法需要太多的工作,决定把他的想法在
一个采访里面拿出来共享。
速度过慢的解决方案是把所有的琐碎细节都缓存起来,同时设立数个只读的从属数据库,这些没有一个是很短时间内就能实现的。所以说这个不是费用,而是时间的问题,因为在用户无法访问你的网站的时候,时间是更加宝贵。没有任何一个扩容的方法是比在Rails上开发更加简单有有意思。
在某种程度上,我能够理解这种感触。Rails让开发的过程变成一个开心的过程,但是当你需要经历所有其他开发环境同样的扩容过程时,这个对比会显得很突兀。或许这是一个自然的反应来为这个反差找一个替罪羊,而无论这个替罪羊(Rails)是多么的自然。
但是我还是要对采访里面提到的两点发表一下意见。第一,Alex提到增加更多的服务器来对系统进行扩容最终会导致给数据库带来很大的压力。这绝对是正确的,但是也是意料之中的结果,而不是事先完全没有考虑到负面效应。这不应该有任何值得大惊小怪的地方。
扩容就是一个削除瓶颈的方法。当你消除一个瓶颈的时候(比如说应用代码的执行),你多半可能发现另外一个瓶颈(比如数据库的查询)。这很正常,代表你已经取得了进展。但是你再消除这个新的瓶颈的时候,必须保持你的思路正确。如果你的瓶颈已经转移到数据库方面,那即使你大大的改进程序结构,也不会看到很显著的成效。换句话说,如果数据库一次查询需要0.5秒,那你把一个循环从耗时0.05秒改进到0.01秒就完全没有花时间来做了。
其次,当你在使用开源软件,发现有些要求是这个软件无法达到的时候,这就是你给开源软件作回报的大好机会。与其坐在原地等待某些厂家来解决你的问题,使用开源软件会给你独特的机会,来做自己命运的主人。与其作这个社区的旁观者,不如作一个参与者。对于用高级编程语言(比如说Ruby)实现的程序框架Rails,以上的话尤其贴切,因为作贡献的门槛非常的低。
在这个例子里面,看起来Twitters需要更多的复杂的手段,来同时和多个数据库进行交谈。Alex还专门强调“…Rails没有功能来和多个数据库同时进行交谈”,这不完全正确,但是Rails肯定可以可以做的更好。上次我和Twitter聊得时候,我们还讨论过这个,他们也对能够在Rails的这个领域更上一步很感兴趣。我很失望看到他们放弃了这个机会,而选择了保守旁观。
不论如何,我很自豪Twitter正在努力的挑战Rails扩容的上线。处理每秒一万一千次以上的请求,对任何动态网站应用而言都不是小成就了。一旦现在需要处理这个危机的压力消失以后,我相信Twitter的开发团队会跳出指责软件工具的圈子,而会作为参与者,完全的融入到Rails开发这个开源社区里来,贡献出他们在这次扩容的过程学到的经验和教训。我们都会因此受益。
分享到:
相关推荐
本教程介绍了 Rust 的基础语法、所有权模型、函数与模块设计,以及高级特性(如错误处理、闭包和并发编程)。通过提供实用的练习和答案,帮助您快速掌握 Rust 的核心概念,为系统级编程打下扎实基础。
基于springboot+Web的毕业设计选题系统源码数据库文档.zip
# 基于Spring和MyBatis的疫情防控管理系统 ## 项目简介 本项目是一个基于Spring和MyBatis框架的疫情防控管理系统,旨在实现数据在管理员、医务人员、患者和数据上报者之间的流转。系统涵盖了用户登录、注册、信息管理、预约管理、检测结果管理等功能,支持多角色的权限管理和数据操作。 ## 项目的主要特性和功能 1. 用户管理 用户登录、注册和登出功能。 用户个人信息管理,包括核酸检测记录和预约记录。 2. 管理员管理 管理员列表管理,支持增删改查操作。 医院信息管理,支持增删改查操作。 3. 医务人员管理 核酸预约和疫苗接种预约管理。 核酸检测结果和疫苗接种结果管理。 患者信息管理。 4. 数据上报者管理 风险区域数据上报。 患者信息上报。 5. 系统安全 通过拦截器实现用户登录状态检查,未登录用户将被重定向到登录页面。
对数据集进行二分类,有数据集和源码以及模型,二分类是识别猫和不是猫的情况,可做毕业设计。
最新完美版积分商城系统,网购商城系统源码,是更新的奇偶商城系统源码, 它拥有独立代理后台,而且内附搭建教程。 企业猫搭建了下,感觉这个源码很新颖的,购买商品后可以选择直接发货还是拆红包升级购买的商品升级成别的商品。
编译好的Linux版网络调试助手,方便直接使用,免得每次都需要重新编译
office使用软件
# 基于Python和Flask的博客管理系统 ## 项目简介 本项目是一个基于Python和Flask框架的博客管理系统,旨在为用户提供一个简单易用的博客平台。用户可以注册、登录、发布博客、管理博客内容以及评论等功能。 ## 项目的主要特性和功能 1. 用户管理 用户注册和登录功能。 用户个人信息管理。 2. 博客管理 发布、编辑和删除博客文章。 博客分类和标签管理。 3. 评论系统 用户可以对博客文章进行评论。 评论的查看和管理。 4. 权限管理 管理员可以管理用户和博客内容。 普通用户只能管理自己的博客和评论。 ## 安装使用步骤 1. 环境准备 确保已安装Python 3.x。 安装Flask框架pip install Flask。 2. 数据库配置 在config.py文件中配置数据库连接信息。
基于springboot+vue的实践性教学系统源码数据库文档.zip
基于springboot二手物品交易系统源码数据库文档.zip
基于springboot餐品美食论坛源码数据库文档.zip
人工智能开发项目深度学习项目源码带指导视频词云提取方式是百度网盘分享地址
基于springboot企业员工薪酬管理系统源码数据库文档.zip
基于springboot+JavaWeb图书管理系统源码数据库文档.zip
数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)销售管理系统设计与开发提取方式是百度网盘分享地址
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
基于springboot的小说阅读平台源码数据库文档.zip
# 基于PaddleDetection框架的人流量统计系统 ## 项目简介 本项目是一个基于PaddleDetection框架的人流量统计系统,专注于静态和动态场景下的人员计数和行人检测。项目涵盖了从数据准备、模型选择、训练、评估、优化到预测和部署的完整流程,旨在提供高效、准确的人流量统计解决方案。 ## 主要特性和功能 多模型支持支持多种模型选择,如DeepSORT、JDE和FairMOT,适用于多目标追踪场景。 模型优化提供多种优化策略,包括数据增强、可变形卷积、syncbn+ema、attention和GIoU Loss,以提升模型精度。 性能加速支持TensorRT推理加速,显著提升模型性能。 数据增强提供多种数据增强方式,如cutmix、syncbn和ema,进一步优化模型性能。 模型导出支持模型导出,便于模型部署和上线。 ## 安装使用步骤 1. 安装PaddleDetection框架 bash
基于springboot的银行信用卡额度管理系统源码数据库文档.zip
# 基于Arduino的蒸发冷却系统 ## 项目简介 本项目旨在创建一个蒸发冷却系统(即沼泽冷却器),这是一种在干燥炎热气候下提供能源效率替代空调的系统。该系统使用Arduino 2560和各种传感器来监控和控制冷却过程。 ## 项目的主要特性和功能 水位监控通过水位传感器监控水箱中的水位,并在水位过低时发出警报。 温度和湿度显示在LCD屏幕上显示空气温度和湿度。 风扇控制根据温度范围控制风扇电机。 系统开关通过用户按钮控制系统的开关。 日志记录记录电机激活和停用的时间和日期。 ## 安装使用步骤 2. 硬件连接按照项目文档中的电路图连接所有硬件组件,包括水位传感器、LCD显示屏、实时时钟模块、DHT11传感器和风扇电机。 3. 上传代码将下载的代码上传到Arduino 2560开发板。 4. 启动系统通过用户按钮启动系统,观察LCD屏幕上的温度和湿度显示,并监控水位传感器的状态。