写点什么

推特 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