揭秘 IFTTT 每天处理几十亿事件数据的基础结构

揭秘 IFTTT 每天处理几十亿事件数据的基础结构

数据对于IFTTT至关重要。我们的 BD 和营销团队依靠数据来做出关键的业务决策。产品团队依靠数据来测试来了解用户是如何时候我的产品的,以做产品决策。数据团队本身依靠数据建立产品,比如Recipe推荐系统和垃圾邮件检测工具。此外,我们的合作伙伴依靠数据来实时获取Channels的性能。

因为数据对于IFTTT如此关键,并且我们的服务每天处理几十亿事件,所以我们的数据基础设施必须具有高可扩展性、可用性的和弹性,以便跟上产品的快速迭代。在这篇文章中我们将带你浏览数据基础设施和架构,也会分享一些我们在构建和操作数据的收获。

数据来源

在IFTTT有三种数据来源,对于理解用户的行为和Channels的效率至关重要。

第一,在 AWS RDS 有一个 MySQL 集群,用来维护应用的基本内容的当前状态,比如用户、Channels和Recipes,包括他们的关系。IFTTT.com 和移动应用靠 Rails 应用支撑。获得数据并导出到S3,每天用AWS Data Pipline导入到Redshift。

接下来,像用户与 IFTTT 产品的交互数据,我们从Rails应用里收集事件数据到Kafka集群。

最后,为了帮助监控数以千计的合作伙伴 API 的行为behavior,我们收集在运行 Recipes 时 workers 产生的 API 请求的信息,包括响应时间和HTTP状态码,都导入到Kafka集群。

IFTTT 的 Kafka

我们使用Kafka做数据传输层,实现数据生产者和消费者之间的解耦。这种架构中,Kafka在系统中作为生产者和消费者之间的一种抽象层,而不是数据直接推向消费者。生产者将数据推送到Kafka,消费者从Kafka中读数据。这使得添加新数据消费者更松散。

因为Kafka作为基于日志的事件流,因为消费者跟踪他们自己在事件流中的位置。这使消费者数据能在两种模式中切换:实时和批量。它还允许消费者数据进行重新处理他们以前所消耗的数据,如果在产生了错误的情况下数据需要重新处理,这将很有帮助。

一旦数据在Kafka中,我们将它用在各种位置。批量数据的消费者每小时将数据的一个副本分批放到 S3。实时数据的消费者将数据发到 Elasticsearch 集群,用的 library 我们希望能尽快开源。

商业智能

用Cranium(内部ETL平台)将S3中数据变换和归一化后导入到AWS Redshift。Cranium使我们能够用SQL和Ruby编写ETL 任务job,它定义了这些任务之间的依赖和安排他们执行。Cranium支持数据可视化报告(利用Ruby和D3),但是大多数数据可视化是用Chartio。我们发现对于SQL经验有限的人来说Chartio非常直观。

无论是工程中还是业务中甚至是社区中人们都可以利用这些数据来解决问题,发现新的点。

用 Chartio 做数据可视化

机器学习

我们采用一些先进的机器学习技术来确保IFTTT用户有良好的体验。对于Recipe的推荐和滥用检测,我们用在EC2上的运行Apache Spark,用S3作数据存储。更多的内容我们将在之后的博文中解释。

实时监控和报警

API 事件存储在 Elasticsearch 中,来进行实时监控和报警。我们使用Kibana来可视化worker进程的实时性能和合作伙伴的API性能。

IFTTT的合作伙伴访问Developer Channel(当他们的API有问题时触发这个Channel)。他们可以用Developer Channel 创建Recipes,可选择不同的方式(SMS,Email,Slack,等)来通知合作伙伴们。

在开发者dashboard,合作伙伴可以访问实时日志和可视化他们的Channel健康状况。 用Elasticsearch来实现比较好。此外,提供给开发者强大的分析能力帮开发者们了解谁在使用他们的Channel以及如何使用的。

经验

我们从开发数据基础设施主中总结出一些经验:

  • 通过使用像Kafka这样的数据传输层将生产者和消费者分离,使得数据管道更有弹性。比如,几个慢点消费者不会影响其他消费者或生产者的性能。
  • 从一天开始就以集群的模式启动,这使得你可以很容易地扩展。但是在扩展集群前要确定性能瓶颈是什么。比如,在 Elasticsearch 中如果shard非常大,添加更多节点并不会帮助提高查询速度。你不得不减少shard。
  • 在复杂系统中,要在一些地方给适当的报警,确保一切正常。我们用Sematext来监控Kafka集群和消费者们。我们也用Pingdom来监控,用Pagerduty来报警。
  • 为了能充分信任你的数据,自动验证数据是非常重要的。比如我们开发了一个服务,来比较生产中的表和Redshift中的表,如果有异常将报警。
  • 使用基于日期的文件夹结构 (YYYY/MM/DD)来将 event 数据持久化存储(我们例子中的S3)。这方式存储易于处理。比如如果你想读某一天的数据,你只需要从一个目录中读取数据。
  • 与上面类似的是,在Elasticsearch中创建基于时间的索引(例如:每小时)。如果在Elasticsearch中查询最后一小时所有API错误,那么利用简单的索引就可以做到,提高效率。
  • 要批量提交event(基于时间段或者大量事件)到Elasticsearch,而不是提交独立的event。这有助于限制IO。
  • 根据运行的数据和查询的类型,来优化 Elasticsearch 的节点数、shard数、shard 和 replication factor 的最大值等参数。

本文来自合作伙伴“Linux中国”,原文发表于2013-04-02.

时间: 2024-10-09 09:58:59

揭秘 IFTTT 每天处理几十亿事件数据的基础结构的相关文章

人类已产生五十亿GB数据 X一代贡献的数据总量最大

大家知道吗,从计算机诞生以来.人类所产生的数据总量已经达到五十亿GB.哈哈,这还仅仅是截止到2003年的统计数据.时至今日,我们每两天就能产生同等规模蝗数据--哇哦,还真不少,对吧?   每一位网络用户都会留下大量数字化痕迹.它可能贯穿我们所使用的在线服务,例如Facebook.Twitter.谷歌.雅虎或者我们在移动设备上所使用的媒体资源.它也可能由设备使用本身所产生,包括个人计算机.游戏主机.智能手机.平板设备以及其它各类计算设备. Wikibon网站的<按世代划分数据痕迹>一文以信息图表

日均十亿级别的数据如何做到秒导、秒查?

讲师介绍  曹犟神策数据CTO  曾就职于百度,拥有数据收集.传输.建模.海量处理.分析.应用等实践经验,曾任极路由数据总监.   很多朋友想知道神策分析是如何实现在每天十亿级别数据的情况下能做到秒级导入和秒级查询,以及如何做到不需要预先指定指标和维度就能实现多维查询的.今天借此分享的机会,和大家交流一下我们的技术选型与具体的架构实现,希望能够对大家有所启发.   当然,脱离客户需求谈产品设计,不太现实:而脱离产品设计,纯粹谈技术选型与架构实现,也不现实.因此,我们首先会简要概述:   神策分析

互联网公司如何使用数十亿人的个人数据?

被推送.被记录.被打标签.被索引.被简报.被盘问.被编号--所有这一切都是互联网公司的日常行为. 数据收集产业,这个靠着从社交媒体和移动设备上搜集信息片段获利的行业,影响每个人的生活,却不受任何有意义的监管审查.     上周,位于奥地利维也纳的文化倡导组织 "破解实验室( Cracked Labs)",发布了一份长篇报告,称"数字环境下,个人频繁被调查评估,被分类编组,排名排位,编号量化,包含/排除,并由此被区别对待." 该报告题为<日常生活中的大规模监视:

维基解密再爆猛料:CIA利用漏洞入侵全球数十亿个人电子设备

美国当地时间本周二,维基解密称他们获取到了8761份来自美国中央情报局(下称CIA)的文件.这些文件透露了美国政府的强大黑客工具可以通过监控数十亿人的日常电子设备来窥探大家的隐私,电视.智能手机甚至杀毒软件都有可能受到CIA的黑客入侵.一旦入侵后,他们能够获取你的声音.图像和短信信息,甚至是经过加密软件处理的聊天内容. 据维基解密所说,这些数据代号为Vault 7,文件日期介于2013年和2016年之间,据说是已公布的相关CIA最大规模的机密文档,文件细数了CIA所用的网络入侵工具及其拥有的入侵

蓝翔校长发家记:数十亿身家教师看其照片发抖

揭秘蓝翔技校"成长记"其经历显现公立学校难以满足职业教育需求一场跨省斗殴的风波让山东蓝翔技校以及校长荣兰翔陷入舆论旋涡.无论是财富舵手荣兰翔,还是象征民营技校崛起的"蓝翔现象",这所在二十多年时间里培养出30万名技工.规模在国内排名第一的民办技校都足够惹人注目,成为改革开放之后职业培训产业大潮30多年汹涌发展中的一个样本,甚至是一个谜.近日,<中国经营报>记者在山东济南.河南商丘以及北京多地采访多人,包括荣兰翔的妻子孔素英.蓝翔技校的有关人士.蓝翔技校曾

2004中国媒体十大事件

媒体 寒风袭来,暖冬不再.又是一年即将逝去,又到了各种"盘点"粉墨登场的时刻,作为记录中国时代变迁的媒体,也在这一年中感受着属于自己的苦辣酸甜.而"中国媒体十大事件",作为记录中国媒体自身成长履历的文本,在这个寒冷的冬天,再次站在"晓德"的视角,以我个人的观察来对这一年的媒体事件进行相对自我的评说,对与否,全面或偏颇,都不重要,重要的,是有这样一份纯粹个人的记录,让每一年媒体的不完全事件得到梳理吧. 1.两会期间,三大门户网站"评论&q

如何做到“恰好一次”地传递数十亿条消息

在分布式领域中存在着三种类型的消息投递语义,分别是:最多一次(at-most-once).至少一次(at-least-once)和恰好一次(exactly-once).本文作者介绍了一个利用Kafka和RocksDB来构建的"恰好一次"消息去重系统的实现原理. 对任何一个数据流水线的唯一要求就是不能丢失数据.数据通常可以被延迟或重新排序,但不能丢失. 为了满足这一要求,大多数的分布式系统都能够保证"至少一次"的投递消息技术.实现"至少一次"的投递

盘点:2016年度WiFi行业十大事件

众所周知,WiFi以便捷.稳定.快捷.低成本.灵活组网的优势渗透到各个领域,也起到了非常重要的作用,它更是成功的改变了人们的生活方式.2016年对于WiFi行业来说是蓬勃发展的一年,也是机遇与挑战并存的一年,这其中公共WiFi安全问题一直是公众关注的焦点,但是总体而言,WiFi正迎来自己的黄金时代. 而在刚刚过去的2016年WiFi领域究竟发生了哪些大事呢?下面,小编就带领大家一起盘点"2016年度WiFi行业的十大事件"! 一.央视315晚会曝光:公共免费WIFI可瞬间盗取一切隐私

利用SS7漏洞可追踪全球数十亿部手机 黑客千里之外窃听澳洲议员

本文讲的是 利用SS7漏洞可追踪全球数十亿部手机 黑客千里之外窃听澳洲议员,澳大利亚版电视节目<60分钟时事>(60 Minutes)展示了黑客如何在数千公里外的德国窃听并追踪澳洲参议员 存在于现代通讯技术中的一个大型安全漏洞使得全球数十亿手机用户的数据可能遭到秘密窃取,黑客可以窃听电话并追踪受害者地理位置. 手机信令系统System Signalling Number 7(SS7)存在漏洞,黑客.骗子.流氓政府和肆无忌惮的商业运营商得以使用数以百计的在线端口进行入侵. "六十分钟时