写点什么

推特 Answers,一天 50 亿次会话处理是如何做到的?

2015 年 3 月 25 日

Answers 是 Twitter 的移动 APP 分析业务,它现在可以一天处理 50 亿次的会话。Ed Solovey 是推特的软件工程师,他描述了他们的系统是如何工作以提供“可靠、实时和可行动”的数据,这些数据是基于亿万个移动设备每秒发送的百万次的事件。

如 Solovey 所讲述,Answers 涉及的主要职责包括:

  • 接收事件 ;
  • 收集归档这些事件 ;
  • 进行离线和实时的计算 ;
  • 合并这些计算结果并产生相关性的信息

负责从设备接收事件的服务是用 Go 语言写的,并且它使用了亚马逊的弹性负载均衡器( Amazon Elastic Load Balancer )。它将每个消息负荷放入到持久化的 Kafka 队列中。Kafka 可以存储大量的事件,但这里的存储应仅仅被用作一种临时性的缓存,它可以保存几个小时有价值的数据。而接下来 Storm 会传输数据到 Amazon S3 中完成存储。

当数据存储到 S3 中后, Amazon Elastic MapReduce 就会对数据进行批次性计算处理。计算的结果会存储到 Cassandra 数据库集群中,可以通过 API 来查询使用。

到这里,故事只讲了一半。剩下比较确切的是 Answers 可以实时性地处理数据。在这个目标中,Kafka 存储的内容被输送到 Storm,在 Storm 中这些数据会被像 Bloom Filters HyperLogLog 这样的统计算法处理以提供及时性的结果, 代价是“可忽略的精确度损失”。计算结果会被 Cassandra 数据库再次保存起来。

所以处理结束后,Cassandra 既保存了批处理计算结果,也保存了实时计算的结果。查询 API 负责合并这两种计算流,并基于查询参数给出一致性的视图。当它们都可用时,批处理计算的结果更优先一些,因为它们更准确,如果批处理计算结果不可用时,就会优先使用实时性计算结果。

按 Solovey 所说,描述的这种架构在故障处理的情况下也是有效的,这要归功于连接 Answers 组件时使用了持久化的队列。这也保证了一个组件的任何中断不会影响其它的组件。所以,这种架构可以保证从故障中恢复,并且假设系统能在给定时间内恢复正常,那么就能保证数据不被丢失。

查看英文原文 How Twitter Handles Five Billion Sessions a Day

2015 年 3 月 25 日 06:332214

评论

发布
暂无评论
发现更多内容

第一周.UML课后作业

西柚

UML

极客时间第0期架构师训练营第一周总结

2流程序员

论一个前端工程师的自我修养

萧文翰

ios android 开发者 前端 Web

初步架构想法

极客大学架构师训练营

if语句

拾贝

switch 语句

拾贝

重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)

小傅哥

设计模式 小傅哥 重构 代码质量 代码坏味道

架构课程心得

dj_cd

极客大学架构师训练营

食堂就餐卡系统设计

于成

架构师训练营作业

邵帅

讲一个程序员如何副业月赚三万的真实故事

非著名程序员

程序员 独立开发者 副业赚钱 提升认知

UML 建模

师哥

剖析Golang Context:从使用场景到源码分析

伴鱼技术团队

golang 源码分析 并发编程 程序语言 Context

8000字长文让你彻底了解 Java 8 的 Lambda、函数式接口、Stream 用法和原理

古时的风筝

函数式接口 Lambda stream Java 25 周年

再下一城 三六零收购织语CCwork深化“智慧办公”生态布局

人称T客

[Go] 写一个守护协程的通用套路是什么?

eddix

golang pattern

架构师训练营第一周总结

Hugo

游戏夜读 | 毛利率有多少?

game1night

解决出海网络难题 融云保障 MiniJoy 千万印度用户流畅互动

Geek_116789

食堂就餐卡系统设计

Season

极客大学架构师训练营

架构设计作业1——食堂就餐卡系统设计

Andy风

架构师训练营作业--Week1

吴炳华

「架构师训练营」Week01 作业+总结

PowerZhang

极客大学架构师训练营

比Webpack更高效的Rollup入门指南

费马

Rollup 打包 前端工程化 webpack

架构师训练营第一周总结

邵帅

神奇的梦想

泰稳@极客邦科技

身心健康 个人成长 目标管理

四个和成长有关的小故事

泰稳@极客邦科技

团队管理 TGO鲲鹏会 团队组织 职业成长

【大厂面试04期】讲讲一条MySQL更新语句是怎么执行的?

NotFound9

MySQL 数据库 后端

数据类型转换

拾贝

食堂就餐卡系统设计

Lane

架构师训练营第1周学习总结

Season

极客大学架构师训练营

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

推特Answers,一天50亿次会话处理是如何做到的?-InfoQ