`
wangdei
  • 浏览: 372105 次
社区版块
存档分类
最新评论

Twitter的技术给我们的启发

阅读更多


Twitter的水平扩展的一些关键点,虽然它是个RoR应用,但是这些建议绝对是放之四海而皆准的,非常好的总结。

  因为年初Twitter曾经遇到了性能瓶颈,而且几乎束手无策。当初很多人开始怀疑Ruby的性能问题,而后Twitter站起来了 ^__^

  有时间的朋友看看这个slide:http://www.slideshare.net/Blaine/scaling-twitterhttp://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)

 

 

10
0
分享到:
评论
2 楼 xiuxiuxiu 2008-10-19  
Arden 写道

  3、扁平化查询,比如一个user有很多朋友,查一个人的朋友如果通过外键会浪费很多性能。可以把ids序列化为1,2,3这样,然后用like查询速度更快。

这一点是啥意思?

大概就是把join拆成若干单表的select来做吧
1 楼 Arden 2008-10-19  
  3、扁平化查询,比如一个user有很多朋友,查一个人的朋友如果通过外键会浪费很多性能。可以把ids序列化为1,2,3这样,然后用like查询速度更快。

这一点是啥意思?

相关推荐

    twitter 运营

    这对于Twitter的运营策略制定具有重要的启示意义,即应注重提升用户体验和构建稳定而有价值的社交网络,而非仅仅追求用户数量的扩张。未来,随着社交媒体环境的不断变化和发展,深入探索和优化用户间的互动机制将是...

    big data in real time at twitter

    在当今的数字时代,数据的实时处理和分析成为了企业和平台竞争的新战场。...随着技术的不断发展,我们可以预见,未来Twitter及其他社交平台将会继续在其数据架构中探索新的技术和方法,以适应不断增长的数据处理需求。

    google、facebook、Twitter、eBay、腾讯、淘宝技术发展历程

    这些公司,包括Google、Facebook、Twitter、eBay、腾讯和淘宝,不仅在业务上取得了巨大成功,其背后的技术发展历程也极具启示意义。他们不断解决技术难题,优化服务,以适应不断增长的用户需求和数据规模。 首先,...

    Twitter系统结构分析

    这篇分析将深入探讨Twitter的核心技术架构,以期为大型网站开发者提供宝贵的经验和启示。 一、分布式微服务架构 Twitter采用的是微服务架构,即将整个系统拆分为许多独立的小服务,每个服务都负责特定的功能,如...

    winterscapes:生成冬季景观的 Python Twitter 机器人-源码

    【标题】:“winterscapes”是一个使用Python编写的Twitter机器人,它的主要功能是自动生成冬季景观的图像并发布到Twitter上。这个项目结合了编程技术与艺术创新,为社交媒体用户带来独特的互动体验。 【描述】:这...

    中国的SNS路径?(之二)新浪微博不是Twitter.docx

    ### 中国的SNS路径?(之二):新浪微博与Twitter的区别及融合媒体探索 ...未来,随着技术的进步和社会需求的变化,新浪微博将继续探索更多可能的发展路径,为中国乃至全球的社交网络服务带来新的启示。

    Twitter联合创始人:成功创业的七大领导力.docx

    3. **以约束引导创新** - Twitter限制每条推文140个字符的决策,最初是出于技术限制,但后来成为了推动创新的关键因素。斯通认为,限制可以激发创意,因为人们会在有限的空间内寻找最佳表达方式。 4. **重视人才与...

    社交媒体网络的去匿名技术

    我们的研究受到两种信息类型的启发:网络结构和节点属性。 - **基于节点属性的方法**:最直观的想法是仅根据用户的用户名等属性进行匹配。这种方法计算效率高,但准确度往往较低。 - **基于网络结构的方法**:另一...

    TwitterViz:在自动驾驶汽车上从Twitter挖掘的数据的各种可视化

    同时,该项目也提醒我们,数据分析和可视化是揭示复杂现象背后模式的关键工具。对于自动驾驶汽车行业的参与者来说,这样的工具能帮助他们更好地理解市场反应,优化产品和服务,以及预测未来趋势。 总结,TwitterViz...

    tweegeemee:Twitter遗传算法图像

    遗传算法是一种受到生物进化过程启发的计算方法,主要用于解决优化问题。在这个项目中,遗传算法被用来创建和演化不同的图像,每一代都会基于上一代的表现进行改进或变异,直至达到某种美学标准。生成的艺术作品随后...

    pico-8-gpio:基于gpio的pico-8 twitter feed

    通过Pico-8-gpio,我们可以看到编程艺术与现实世界交互的可能性,这不仅对教育领域有启发,也为DIY爱好者提供了新的灵感。如果你对硬件编程、社交网络和复古游戏有兴趣,那么深入研究这个项目无疑会是一次有趣的探索...

    twitter-sentimental:推特搜索的情感分析

    《推特情感分析:利用JavaScript探索社交媒体情绪》 在当今数字化时代,社交媒体...通过深入理解并实践"twitter-sentimental",我们可以更有效地解读公众情绪,从而在商业决策、社会学研究等多个领域找到新的启示。

    保持高效:删除Facebook,Twitter和Linkedin上的提要...保持高效!

    该插件注入CSS和Javascript,以删除Facebook,Twitter和Linkedin中的提要和通知。 您可以选择直接在页面上(URL旁)激活此行为。 示范 脸书 推特 安装 火狐浏览器 可在此处找到该插件 Chrome 扩展程序位于 歌剧 可在...

    咖啡巨头星巴克的O2O实践对国内餐饮的启示.docx

    - **全面布局**:星巴克不仅活跃在Facebook、Twitter和YouTube等主流社交平台上,还在Pinterest、Instagram和Google+等新兴平台上有出色表现。 - **成效显著**:截至2021年4月,星巴克在这些平台上拥有数百万粉丝和...

    Compression Artifacts Reduction by a Deep Convolutional Network.pdf

    我们的方法在基准数据集和现实世界的使用案例(例如Twitter)中均表现出比现有的最佳技术更优秀的性能。此外,我们还展示了我们的方法可以作为预处理,以便在其他低级视觉流程需要处理压缩图像作为输入时应用。 ...

    A Survey on Text Classification From Shallow to Deep Learning

    最后,我们总结了关键的启示,指出了未来的研究方向,包括但不限于模型的泛化能力、可解释性、实时性和资源效率。同时,我们还讨论了当前研究领域面临的挑战,如如何处理低资源语言和长尾分布的类别,以及如何有效地...

    英语教育培训网站模板,启发潜能教育学习机构网站模板下载 .rar

    这是一个关于英语教育培训网站模板的主题,该模板特别设计用于启发潜能教育学习机构,为他们提供一个专业且吸引人的在线平台。这个模板可能包含了多种页面布局、功能模块和视觉元素,旨在帮助教育机构展示课程内容、...

Global site tag (gtag.js) - Google Analytics