解密IFTTT的数据架构

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

36大数据

什么是IFTTT?

IFTTT是“if this then that”的缩写,如果这样就那样。this 称为 trigger,而 that 称为 action。每条 if this then that 称为 task。IFTTT可以实现多种互联网应用的协同工作。

为了实现 IFTTT的功能,IFTTT必须获得授权。

走近IFTTT

随着信息技术的发展,人们在日常生活和工作中都不可避免的要用到邮箱、聊天工具、云存储等网络服务。然而,这些服务很多时候都是单独运行的,不能很好的实现资源共享。针对该问题,IFTTT提出了“让互联网为你服务”的概念,利用各网站和应用的开放API,实现了不同服务间的信息关联。

例如,IFTTT可以把指定号码发送的短信自动转发邮箱等。为了实现这些功能,IFTTT搭建了高性能的数据架构。近期,IFTTT的工程师Anuj Goyal对数据架构的概况进行了介绍,并分享了在操作数据时的一些经验和教训。

在IFTTT,数据非常重要——业务研发和营销团队依赖数据进行关键性业务决策;产品团队依赖数据运行测试/了解产品的使用情况,从而进行产品决策;数据团队本身也依赖数据来构建类似Recipe推荐系统和探测垃圾邮件的工具等;甚至合作伙伴也需要依赖数据来实时了解Channel的性能。鉴于数据如此重要,而IFTTT的服务每天又会产生超过数十亿个事件,IFTTT的数据框架具备了高度可扩展性、稳定性和灵活性等特点。接下来,本文就对数据架构进行详细分析。

36大数据

1.数据源

在IFTTT,共有三种数据源对于理解用户行为和Channel性能非常重要。首先,AWS RDS中的MySQL集群负责维护用户、Channel、Recipe及其相互之间的关系等核心应用。运行在其Rails应用中的IFTTT.com和移动应用所产生的数据就通过AWS Data Pipeline,导出到S3和Redshift中。其次,用户和IFTTT产品交互时,通过Rails应用所产生的时间数据流入到Kafka集群中。最后,为了帮助监控上百个合作API的行为,IFTTT收集在运行Recipe时所产生的API请求的信息。这些包括反应时间和HTTP状态代码的信息同样流入到了Kafka集群中。

2.IFTTT的Kafka

IFTTT利用Kafka作为数据传输层来取得数据产生者和消费者之间的松耦合。数据产生者首先把数据发送给Kafka。然后,数据消费者再从Kafka读取数据。因此,数据架构可以很方便的添加新的数据消费者。

由于Kafka扮演着基于日志的事件流的角色,数据消费者在事件流中保留着自己位置的轨迹。这使得消费者可以以实时和批处理的方式来操作数据。例如,批处理的消费者可以利用Secor将每个小时的数据拷贝发送到S3中;而实时消费者则利用即将开源的库将数据发送到Elasticsearch集群中。而且,在出现错误时,消费者还可以对数据进行重新处理。

3.商务智能

S3中的数据经过ETL平台Cranium的转换和归一化后,输出到AWS Redshift中。Cranium允许利用SQL和Ruby编写ETL任务、定义这些任务之间的依赖性以及调度这些任务的执行。Cranium支持利用Ruby和D3进行的即席报告。但是,绝大部分的可视化工作还是发生在Chartio中。

36大数据

而且,Chartio对于只了解很少SQL的用户也非常友好。在这些工具的帮助下,从工程人员到业务研发人员和社区人员都可以对数据进行挖掘。

4.机器学习

IFTTT的研发团队利用了很多机器学习技术来保证用户体验。对于Recipe推荐和问题探测,IFTTT使用了运行在EC2上的Apache Spark,并将S3当作其数据存储。

5.实时监控和提醒

API事件存储在Elasticsearch中,用于监控和提醒。IFTTT使用Kibana来实时显示工作进程和合作API的性能。在API出现问题时,IFTTT的合作者可以访问专门的Developer Channel,创建Recipe,从而提醒实际行动(SMS、Email和Slack等)的进行。

36大数据

在开发者视图内,合作者可以在Elasticsearch的帮助的帮助下访问Channel健康相关的实时日志和可视化图表。开发者也可以通过这些有力的分析来了解Channel的使用情况。

36大数据

6.经验与教训

最后,Anuj表示,IFTTT从数据架构中得到的教训主要包括以下几点:

  • 为了完全信任数据,在处理流中加入若干自动化的数据验证步骤非常重要!例如,IFTTT开发了一个服务来比较产品表和Redshift表中的行数,并在出现异常情况时发出提醒。
  • 在类似的复杂架构中,设置合适的警告来保证系统工作正常是非常关键的!IFTTT使用Sematext来监控Kafka集群和消费者,并分别使用Pingdom和Pagerduty进行监控和提醒。
  • 从一开始就要使用集群,方便以后的扩展!但是,在因为性能问题投入更多节点之前,一定要先认定系统的性能瓶颈。例如,在Elasticsearch中,如果碎片太多,添加更多的节点或许并     不会加速查询。最好先减少碎片大小来观察性能是否改善。
  • 通过Kafka这样的数据传输层实现的生产者和消费者的隔离非常有用,且使得Data Pipeline的适应性更强。例如,一些比较慢的消费者也不会影响其他消费者或者生产者的性能。
  • 在长期存储中使用基于日期的文件夹结构(YYYY/MM/DD)来存储事件数据。这样存储的事件数据可以很方便的进行处理。例如,如果想读取某一天的数据,只需要从一个文件夹中获取数     据即可。
  • 在Elasticsearch中创建基于时间(例如,以小时为单位)的索引。这样,如果试图在Elasticsearch中寻找过去一小时中的所有API错误,只需要根据单个索引进行查询即可。
  • 不要把单个数据马上发送到Elasticsearch中,最好成批进行处理。这样可以提高IO的效率。
  • 根据数据和查询的类型,优化节点数、碎片数以及每个碎片和重复因子的最大尺寸都非常重要。

  • 本文作者:以墨茄data
  • 来源:51CTO
相关文章
|
19天前
|
机器学习/深度学习 数据采集 人工智能
揭秘!47页文档拆解苹果智能,从架构、数据到训练和优化
【8月更文挑战第23天】苹果公司发布了一份47页的研究文档,深入解析了其在智能基础语言模型领域的探索与突破。文档揭示了苹果在此领域的雄厚实力,并分享了其独特的混合架构设计,该设计融合了Transformer与RNN的优势,显著提高了模型处理序列数据的效能与表现力。然而,这种架构也带来了诸如权重平衡与资源消耗等挑战。苹果利用海量、多样的高质量数据集训练模型,但确保数据质量及处理噪声仍需克服。此外,苹果采取了自监督与无监督学习相结合的高效训练策略,以增强模型的泛化与稳健性,但仍需解决预训练任务选择及超参数调优等问题。
125 66
|
2月前
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
44 0
|
2月前
|
SQL 数据库
数据架构问题之如何通过计算引擎的流批一体能力和对应的connector解决数据同步问题
数据架构问题之如何通过计算引擎的流批一体能力和对应的connector解决数据同步问题
|
14天前
|
安全 网络安全 数据安全/隐私保护
云原生技术探索:容器化与微服务架构的实践之路网络安全与信息安全:保护数据的关键策略
【8月更文挑战第28天】本文将深入探讨云原生技术的核心概念,包括容器化和微服务架构。我们将通过实际案例和代码示例,展示如何在云平台上实现高效的应用部署和管理。文章不仅提供理论知识,还包含实操指南,帮助开发者理解并应用这些前沿技术。 【8月更文挑战第28天】在数字化时代,网络安全和信息安全是保护个人和企业数据的前线防御。本文将探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。文章旨在通过分析网络安全的薄弱环节,介绍如何利用加密技术和提高用户警觉性来构建更为坚固的数据保护屏障。
|
19天前
|
存储 监控 安全
大数据架构设计原则:构建高效、可扩展与安全的数据生态系统
【8月更文挑战第23天】大数据架构设计是一个复杂而系统的工程,需要综合考虑业务需求、技术选型、安全合规等多个方面。遵循上述设计原则,可以帮助企业构建出既高效又安全的大数据生态系统,为业务创新和决策支持提供强有力的支撑。随着技术的不断发展和业务需求的不断变化,持续优化和调整大数据架构也将成为一项持续的工作。
|
27天前
|
机器学习/深度学习 自然语言处理 数据处理
|
28天前
|
缓存 程序员 调度
第3章-图形处理单元-3.1-数据并行架构
第3章-图形处理单元-3.1-数据并行架构
25 1
|
11天前
|
Java 数据库连接 微服务
揭秘微服务架构下的数据魔方:Hibernate如何玩转分布式持久化,实现秒级响应的秘密武器?
【8月更文挑战第31天】微服务架构通过将系统拆分成独立服务,提升了可维护性和扩展性,但也带来了数据一致性和事务管理等挑战。Hibernate 作为强大的 ORM 工具,在微服务中发挥关键作用,通过二级缓存和分布式事务支持,简化了对象关系映射,并提供了有效的持久化策略。其二级缓存机制减少数据库访问,提升性能;支持 JTA 保证跨服务事务一致性;乐观锁机制解决并发数据冲突。合理配置 Hibernate 可助力构建高效稳定的分布式系统。
23 0
|
1月前
|
存储 XML 数据管理
数据架构规划与设计
数据库在数据管理方面具有管理方便、存储占用空间小、检索速度快、修改效率高和安全性好等优点。
39 1
|
1月前
|
存储 测试技术 API
面向数据的架构
面向数据的架构
41 1

热门文章

最新文章

下一篇
DDNS