Twitter的实时通知架构

标签: twitter 实时通 架构 | 发表时间:2017-06-27 14:54 | 作者:
出处:http://www.infoq.com

Twitter工程经理Sarrabh Pathak在伦敦QCon 2017大会上介绍了Twitter网站的通知系统架构。他主要介绍了Twitter所面临的独特挑战,比如社交网络的双峰(bimodal)性、如何应付尖刺流量以及如何实现实时的通知机制。

Pathak解释说,与一般的社交网络不同,Twitter的用户数据具有不对称性。有些用户有数百万关注者,而有些则只有不到百人。这导致了通知具有双峰性,也给实现实时通知带来了挑战。例如,名人的推文比普通人的推文产生更大的通知负载。

Pathak说,不同类型的用户以及严格的性能需求给架构带来了如下挑战:

  • 延迟:人们要尽可能快地收到通知,毕竟Twitter需要实时地通知用户当下正在发生的事情。
  • 展开(fanout):一个拥有数百万关注者的用户,他的一个推文会触发数百万个通知,系统必须能够处理这种大型的尖刺流量。
  • 不均衡的调用:有些内部调用,比如访问缓存,只需要几毫秒。而有些外部调用,比如访问Google,可能需要半秒多钟。在进行伸缩时必须考虑到这些情况。
  • 多数据中心:Twitter必须尽可能地具备弹性,即使发生了故障,也要保证用户仍然能够收到通知。

首先,通知分为推送和拉取两种模式。人们在访问Twitter时看到的通知信息流使用的是拉取模式,而短信和邮件则使用推送模式。

Pathak说,对于拉取模式,通知一般是从缓存里获取的,因为信息流的生成是很耗费资源的。Twitter使用了Manhatten,Twitter的实时分布式后端存储,也是Redis的一个分支。通过使用缓存,最小化了延迟,提升了用户体验。与此同时,通知信息流通过异步的方式被复制到多个数据中心,目的是在发生故障时,用户仍然能够看到相同的信息流。

为了应对延迟和尖刺流量问题,Twitter使用了推送通知模式,不仅进行横向伸缩,同时还使用了临时缓存。这解决了同一个用户有数百万个通知事件的问题。

为了解决不均衡调用问题,Twitter使用了优先级队列来防止调用阻塞;名人的推文不会对其他用户的登录造成阻塞。另外,不同类型的调用被分成组,这意味着因外部依赖发生宕机造成的影响是相互隔离的。

最后,Pathak对该架构进行了总结:

  • 尽可能专注在异步操作上,因为它比同步操作更容易伸缩。
  • 在权衡读取时间和写入时间时,考虑只写入不太可能发生过期的数据,比如ID。
  • 确保应用能够支持多数据中心部署。

整个访谈可以在线观看,里面还有一个来自Twitter工程师Gary Lam关于个人定制化通知的访谈。

查看英文原文: Real-Time Notifications at Twitter

评价本文


相关 [twitter 实时通 架构] 推荐:

Twitter的实时通知架构

- -
Twitter工程经理Sarrabh Pathak在伦敦QCon 2017大会上介绍了Twitter网站的通知系统架构. 他主要介绍了Twitter所面临的独特挑战,比如社交网络的双峰(bimodal)性、如何应付尖刺流量以及如何实现实时的通知机制. Pathak解释说,与一般的社交网络不同,Twitter的用户数据具有不对称性.

twitter系统架构分析

- - 企业架构 - ITeye博客
twitter系统架构分析. (一)twitter的核心业务. twitter的核心业务,在于following和be followed:. (1)following-关注. 进入个人主页,会看到你follow的人发表的留言(不超过140个字),这是following的过程;. (2)followed-被关注.

图解Twitter的服务器架构

- huacnlee - 服务器运维与网站架构|Linux运维|互联网研究
Twitter的服务器架构的简要示意图:. Unicorn: Ruby 的HTTP服务器. Kestrel : Twitter用Scala写的message queue. Flapp: Twitter做的图存储FlockDB. Gizzard: Twitter用Scala写的一个通用Sharding框架.

Twitter新搜索架构和功能的实现方案

- - 互联网旁观者
今天(2011年5月31日),Twitter 发布了能够帮助我们的用户找到最相关的推文、图片和视频的 个人化搜索体验. 要创造这个产品,我们的基础架构需要支持两项主要的功能:搜索结果的相关性过滤和对于相关图片以及视频的识别. 两项功能都需要我们完全重写我们搜索架构,他们的核心就是 Blender 和 Earlybird.

Twitter新系统架构性能大幅度提升

- - IT经理网
8月3日《天空之城》在日本的热播创下每秒新增143119条推文的Twitter峰值记录,是Twitter平均每秒发推数(TPS)5700条的25倍. 值得注意的是,在这次毫无征兆的“洪峰”到来时,Twitter全新的系统平台并没有被潮水般涌来的推文堵塞而产生任何延迟甚至宕机. Twitter旧架构与新架构的性能对比.

提高排序效果,Twitter搜索相关架构解析

- - IT瘾-geek
每天,全世界几百万的用户都在Twitter上搜索着发生的新鲜事. 在重大事件期间,比如刚刚过去不久的 2016欧洲杯,我们观察到在用户前来Twitter查看最新战况时,搜索服务会出现流量的尖峰,并且整体流量随着此事件的推移而稳步上升. Twitter的搜索质量组就是负责给用户返回质量最好的结果.

Tumblr架构 – 页面浏览量150亿/月并且比Twitter更难拓展

- - 龙浩的blog
    注:一些内容不熟悉,所以没有翻译.     Tumblr每个月增长30% , 一天5亿网页浏览,40K/sec , 每天3TB的数据存储在1000+的服务器上. 最开始只有4名工程师来处理所有事情,当有20多个工程师的时候,才有实力出一些有趣的解决方案.     Tumblr最开始是典型的大型LAMP应用,现在的分布式服务模型使用了Scala, HBase, Redis, Kafka , Finagle等,现在在处理PHP应用的问题,开始走向面向服务的设计.

Twitter 中文版

- 幻幽 or A書 - Gea-Suan Lin's BLOG
前幾天 Twitter 推出了中文版 (包括繁體與簡體):「Five new languages」. 對岸的市場可能還是進不去,但在台灣會加速 Plurk 的死亡… 從 Google+ 的出現以後就愈來愈明顯了,現在 Microblogging 的大魔頭再加入戰局,應該會更快….

Twitter和Facebook合作

- Woooon - cnBeta.COM
很重磅的新闻,两大社交网络巨头开始有合作了. Twitter 今天在用户的个人档案页面添加「Post Tweets to Facebook」按钮,让用户快速将自己的 Tweets 同步到 Facebook 状态中去.

twitter-mysql改进点

- - CSDN博客推荐文章
目前最新的twitter-mysql版本基于mysql5.5.22,以下总结了一些比较明显的改进点,大部分已经亲自证实,其他一些诸如修复的比较次要的问题(例如编译问题)这里暂不列出,可以详细参阅 https://github.com/twitter/mysql/wiki/Change-History .