Twitter的水平扩展的一些关键点,虽然它是个RoR应用,但是这些建议绝对是放之四海而皆准的,非常好的总结。
因为年初Twitter曾经遇到了性能瓶颈,而且几乎束手无策。当初很多人开始怀疑Ruby的性能问题,而后Twitter站起来了 ^__^
有时间的朋友看看这个slide:http://www.slideshare.net/Blaine/scaling-twitter,http://www.bt285.cn 没有时间的看看我的摘要。
开发:
1、一定要测试!一定要早点测试!一定要早点测试!否则你就死定了。不要存任何侥幸心理,从项目的开始就写好测试。
2、对任何部分都要测试。还是测试!
3、性能测试要交给用户来做。那样才有意义。所以要做好log。用好分析工具:Munin(服务器内存占用监控)、Nagios(服务器服务网络状态监控)、AWStats & Google Analytics、错误日志、发现了错误马上进入问题跟踪系统(Trac、Jira……太多了,但是最好有一个)。
架构:
使用可以分区的架构。按照架构上的功能清晰的分区。这意味着你可以通过替换一个实现来改进性能,因为性能和复杂度往往是不可兼得的。
对于数据库:
1、尽量不要分布式数据库,包括数据库分区。最好通过提高单台服务器的性能提升这个节点的性能。更重要的是查询优化。通过备份服务器解决单点故障。
2、对where子句中的字段增加index。(这个当然了)
3、扁平化查询,比如一个user有很多朋友,查一个人的朋友如果通过外键会浪费很多性能。可以把ids序列化为1,2,3这样,然后用like查询速度更快。
4、一定要优化你的SQL,不要寄希望于ORM给你解决(不管是DataMapper、ActiveRecord或者UnitOfWork)。
Cache:
1、一定要考虑Cache,最重要的是领域对象的Cache,一定要考虑Memcache,如Memcached。
2、应该有90%的查询可以Cache。
3、但是要注意Cache实效问题(要及时标注实效),这个是个难点也是个重点。
4、可以考虑用Message来标记实效(这样可以保证异步,无阻塞的按照顺序的让数据失效),据称也不是很难。
Messaging:
1、混合应用。不用去看Java的OpenFire了,即使它很好,完全可以考虑erlang的ejabberd了,俄罗斯的产物。
2、排队问题有很多解决方案:ActiveMQ、RabbitMQ、MySQL + Lightweight Locking、Drb(for ruby)
分享到:
相关推荐
这对于Twitter的运营策略制定具有重要的启示意义,即应注重提升用户体验和构建稳定而有价值的社交网络,而非仅仅追求用户数量的扩张。未来,随着社交媒体环境的不断变化和发展,深入探索和优化用户间的互动机制将是...
在当今的数字时代,数据的实时处理和分析成为了企业和平台竞争的新战场。...随着技术的不断发展,我们可以预见,未来Twitter及其他社交平台将会继续在其数据架构中探索新的技术和方法,以适应不断增长的数据处理需求。
这些公司,包括Google、Facebook、Twitter、eBay、腾讯和淘宝,不仅在业务上取得了巨大成功,其背后的技术发展历程也极具启示意义。他们不断解决技术难题,优化服务,以适应不断增长的用户需求和数据规模。 首先,...
这篇分析将深入探讨Twitter的核心技术架构,以期为大型网站开发者提供宝贵的经验和启示。 一、分布式微服务架构 Twitter采用的是微服务架构,即将整个系统拆分为许多独立的小服务,每个服务都负责特定的功能,如...
【标题】:“winterscapes”是一个使用Python编写的Twitter机器人,它的主要功能是自动生成冬季景观的图像并发布到Twitter上。这个项目结合了编程技术与艺术创新,为社交媒体用户带来独特的互动体验。 【描述】:这...
### 中国的SNS路径?(之二):新浪微博与Twitter的区别及融合媒体探索 ...未来,随着技术的进步和社会需求的变化,新浪微博将继续探索更多可能的发展路径,为中国乃至全球的社交网络服务带来新的启示。
3. **以约束引导创新** - Twitter限制每条推文140个字符的决策,最初是出于技术限制,但后来成为了推动创新的关键因素。斯通认为,限制可以激发创意,因为人们会在有限的空间内寻找最佳表达方式。 4. **重视人才与...
我们的研究受到两种信息类型的启发:网络结构和节点属性。 - **基于节点属性的方法**:最直观的想法是仅根据用户的用户名等属性进行匹配。这种方法计算效率高,但准确度往往较低。 - **基于网络结构的方法**:另一...
同时,该项目也提醒我们,数据分析和可视化是揭示复杂现象背后模式的关键工具。对于自动驾驶汽车行业的参与者来说,这样的工具能帮助他们更好地理解市场反应,优化产品和服务,以及预测未来趋势。 总结,TwitterViz...
遗传算法是一种受到生物进化过程启发的计算方法,主要用于解决优化问题。在这个项目中,遗传算法被用来创建和演化不同的图像,每一代都会基于上一代的表现进行改进或变异,直至达到某种美学标准。生成的艺术作品随后...
通过Pico-8-gpio,我们可以看到编程艺术与现实世界交互的可能性,这不仅对教育领域有启发,也为DIY爱好者提供了新的灵感。如果你对硬件编程、社交网络和复古游戏有兴趣,那么深入研究这个项目无疑会是一次有趣的探索...
《推特情感分析:利用JavaScript探索社交媒体情绪》 在当今数字化时代,社交媒体...通过深入理解并实践"twitter-sentimental",我们可以更有效地解读公众情绪,从而在商业决策、社会学研究等多个领域找到新的启示。
该插件注入CSS和Javascript,以删除Facebook,Twitter和Linkedin中的提要和通知。 您可以选择直接在页面上(URL旁)激活此行为。 示范 脸书 推特 安装 火狐浏览器 可在此处找到该插件 Chrome 扩展程序位于 歌剧 可在...
- **全面布局**:星巴克不仅活跃在Facebook、Twitter和YouTube等主流社交平台上,还在Pinterest、Instagram和Google+等新兴平台上有出色表现。 - **成效显著**:截至2021年4月,星巴克在这些平台上拥有数百万粉丝和...
我们的方法在基准数据集和现实世界的使用案例(例如Twitter)中均表现出比现有的最佳技术更优秀的性能。此外,我们还展示了我们的方法可以作为预处理,以便在其他低级视觉流程需要处理压缩图像作为输入时应用。 ...
最后,我们总结了关键的启示,指出了未来的研究方向,包括但不限于模型的泛化能力、可解释性、实时性和资源效率。同时,我们还讨论了当前研究领域面临的挑战,如如何处理低资源语言和长尾分布的类别,以及如何有效地...
这是一个关于英语教育培训网站模板的主题,该模板特别设计用于启发潜能教育学习机构,为他们提供一个专业且吸引人的在线平台。这个模板可能包含了多种页面布局、功能模块和视觉元素,旨在帮助教育机构展示课程内容、...