HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

Yelp 的数据管道开源了

  • 2016-12-06
  • 本文字数:1390 字

    阅读完需:约 5 分钟

在过去的几个月里,Yelp 一直在不断地向大家分享着他们的数据管道的情况(文章列表见页尾)。这是一套基于 Python 的工具,可以实时地将数据流向需要它们的服务,并随之加以必要的数据处理。这一系列的文章讲述了如何从 MySQL 中将消息复制出来、如何跟踪模式的变化及演进、并最终分享了如何把数据接入到 Redshift 和 Salesforce 等不同类型的目标存储。

幸好 Yelp 非常慷慨,他们不只是分享了自己的设计思路和经验,更是赶在圣诞节之前向大家献上了一份大礼,把主要模块开源出来了!

在读过了所有这些关于我们的数据管道的文章之后,可能你会觉得我们这些 Yelp 的人不过是像一个孩子在向大家炫耀他的新玩具一样,肯定会自己捂得严严的,不会和大家分享。但是和大多数有了新玩具又不会分享的孩子一样,我们愿意分享——所以我们最终决定要把我们的数据管道的主体部分开源出来,然后大家就可以开心地迎来新年假期了。

闲话少说,下面这些就是 Yelp 为大家的假期准备的圣诞礼物:

  • MySQL Streamer 会不断地查看 MySQL 的 binlog,得到最新的表变更操作。Streamer 负责捕获 MySQL 数据库上的单条数据更改操作,并把它封装成 Kafka 消息,发布到 Kafka 的某个 Topic 中。如果有必要,也会做模式转换。
  • Schematizer 服务会跟踪每一条消息所使用的模式信息。在有新模式出现时,Schematizer 会处理注册消息,并为下游的表生成更改计划。
  • Data Pipeline clientlib 为生产和消费 Kafka 消息提供了非常易用的接口。有了 clientlib,就再也不必关心 Kafka 的 Topic 名字、加密或消费者程序的分区情况了。你可以站在表和数据库的角度去考虑问题,不必关心其它细节。
  • Data Pipeline Avro utility 包提供了读写 Avro 模式的 Python 接口。它也可以为表的主键等模式信息提供枚举类,这一点 Yelp 在实践中发现非常有用。
  • Yelp Kafka 库扩展了 Kafka-python 包,并提供了多重处理消费者组等新功能。这个库可以帮助大家非常高效地与 Kafka 进行交互。这个库也让用户可以判断出 Yelp 内部的 Kafka 跨区域部署情况。

数据管道中不同组成部分的概览图。单个服务用方形表示,而共享包用圆角表示。

这些项目每个都有 Docker 化的服务,你可以很容易地把它们用到你的架构中。我们希望对于每个用 Python 构建实时流处理程序的开发者来说,它们都能有用。

有了之前的文章介绍,现在又有了开源的代码,相信有许多数据处理工程师的圣诞假期都会过得无比充实了。

Yelp 的系列文章深度讲解了他们如何用“确保只有一次”的方式把 MySQL 数据库中的改动实时地以流的方式传输出去,他们如何自动跟踪表模式变化、如何处理和转换流,以及最终如何把这些数据存储到 Redshift 或 Salesforce 之类的数据仓库中去。

第一篇:一天几十亿条消息:Yelp 的实时数据管道。(英文
第二篇: Yelp 的实时流技术之二:将 MySQL 表数据变更实时流到 Kafka 中。(英文
第三篇: Yelp 的实时流技术之三:不止是模式存储服务的 Schematizer 。(英文
第四篇: Yelp 的实时流技术之四:流处理器 PaaStorm 。(英文
第五篇: Yelp 的实时流技术之五:数据管道之 Salesforce Connector 。(英文
第六篇: Yelp 的实时流技术之六:近实时地将 Kafka 中的数据流入 Redshift 。(英文


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-12-06 18:004923
用户头像

发布了 152 篇内容, 共 70.7 次阅读, 收获喜欢 64 次。

关注

评论

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

书单 | “实战派”系列,每一本都是学好用好一门技术的“航空母舰”

博文视点Broadview

以 Vuex 为引,一窥状态管理全貌

杨成功

JavaScript Vue 大前端 vuex

Prometheus Exporter (三十二)Varnish Exporter

耳东@Erdong

Prometheus 28天写作 exporter 12月日更 Varnish

从 WAN 到 SD-WAN 边缘设备的网络架构

devpoint

TLS ssl SD-WAN 12月日更

被灵魂问倒:这个BUG为什么没测出来?

华为云开发者联盟

测试 bug 文档 测试用例 测试工程师

跟着动画学Go数据结构之选择排序

宇宙之一粟

golang 数据结构 选择排序 12月日更

Java开发Excel数据导入mysql的实用小技巧

@零度

Java MySQL

读《思辨与立场》-07思维的标准

wood

28天写作 批判性思维 思辨与立场

龙智第四次荣登“2021上海软件和信息技术服务业高成长百家”名单

龙智—DevSecOps解决方案

上海软件和信息技术服务业

前端开发之JS中filter()的使用

@零度

JavaScript 前端开发

Hive查询的18种方式

编程江湖

大数据 hive

建木持续集成平台v2.1.0发布

Jianmu

DevOps CI/CD 开源社区

【1分钟调研赢好礼】HarmonyOS Connect 视频课堂用户反馈问卷

HarmonyOS开发者

HarmonyOS

10个比较不错的 JavaScript 库

编程江湖

JavaScript 前端开发

容器技术正在颠覆传统,重构整个软件世界

巨子嘉

容器 云原生

对话龙智专家,共探DevSecOps实践难点

龙智—DevSecOps解决方案

DevOps DevSecOps

Android 8.0 下载安装进入【安装未知应用】页面,两步简化一步

阿策小和尚

28天写作 Android 小菜鸟 12月日更

GaussDB(DWS)中共享消息队列实现的三大功能

华为云开发者联盟

线程 数据同步 GaussDB(DWS) 共享消息队列 共享消息

Kubernetes 集群无损升级实践

vivo互联网技术

容器 云原生 服务器集群 Kubernetes 集群

Redisson:这么强大的实现分布式锁框架,你还没有?

华为云开发者联盟

redis 分布式 分布式锁 可重入锁 Redisson框架

Go语言逆向技术:常量字符串

华为云开发者联盟

字符串 go语言 字符 逆向技术 常量字符串

即构科技 RTC 实践与深度解析 | 内容合集

ZEGO即构

音视频 RTC 内容合集 技术实践 技术专题合集

签名验证反爬,反反爬第二篇博客,Python爬虫120例

梦想橡皮擦

12月日更

实用机器学习笔记十九:模型验证

打工人!

人工智能 机器学习 深度学习 学习笔记 12月日更

【LeetCode】在 D 天内送达包裹的能力Java题解

Albert

算法 LeetCode 12月日更

COG云原生优化遥感影像,瓦片切分的最佳实践

华为云开发者联盟

云原生 遥感影像 瓦片切分 云上遥感影像文件 华为云地理遥感平台

netty系列之:netty对SOCKS协议的支持

程序那些事

Java Netty 程序那些事 SOCKS 12月日更

龙智宣布与ConnectALL成为合作伙伴 进一步提升DevOps解决方案水平

龙智—DevSecOps解决方案

DevOps ConnectALL 价值流 价值流管理

React进阶(十):React 项目启动原理详解

No Silver Bullet

React 12月日更

Kotlin Maps:五个基本函数

坚果

kotlin 28天写作 12月日更

19《重学JAVA》--集合(一)

杨鹏Geek

Java25周年 28天写作 12月日更

Yelp的数据管道开源了_语言 & 开发_足下_InfoQ精选文章