公司

  1. DataPipeline
  2. Fivetran
  3. 神策数据
  4. 日志易
  5. 数数科技
  6. Conviva
  7. GrowingIO
  8. TalkingData
  9. 友盟
  10. 袋鼠云
  11. 滴普
  12. 奇点云
  13. 七牛云
  14. 网易数帆
  15. 数梦工厂
  16. 海致BDP
  17. 明略科技
  18. 阿里dataphin
  19. 阿里datawork
  20. 阿里quickbi
  21. 腾讯数据中台
  22. 腾讯小马bi
  23. 盒子数据
  24. dataease
  25. davinci
  26. cboard
  27. datagear

一、 CDC数据库实时变化数据采集

实时同步最灵活的还是用kafka做中间转发,当数据发生变化时,记录变化到kafka,需要同步数据的程序订阅消息即可,需要研发编码支持。主要是订阅binlog日志,进行增量订阅&消费的业务。

1. canal

https://github.com/alibaba/canal 当前版本1.1.4

当前的canal开源版本支持5.7及以下的版本(阿里内部mysql 5.7.13, 5.6.10, mysql 5.5.18和5.1.40/48)

功能如下:

  • 基于日志增量订阅&消费支持的业务:
  • 数据库镜像
  • 数据库实时备份
  • 多级索引 (卖家和买家各自分库索引)
  • search build
  • 业务cache刷新
  • 价格变化等重要业务消息

界面 https://github.com/alibaba/canal/wiki/Canal-Admin-QuickStart

常用架构mysql binlog+canal+kafka+flink+大数据存储

2. otter

代码库https://github.com/alibaba/otter

otter是在canal基础上又重新实现了可配置的消费者,使用otter的话,刚才说过的消费者就不需要写了,而otter提供了一个web界面,可以自定义同步任务及map表。非常适合mysql库之间的同步。

另外:otter已在阿里云推出商业化版本 数据传输服务DTS, 开通即用,免去部署维护的昂贵使用成本。DTS针对阿里云RDS、DRDS等产品进行了适配,解决了Binlog日志回收,主备切换、VPC网络切换等场景下的同步高可用问题。同时,针对RDS进行了针对性的性能优化。出于稳定性、性能及成本的考虑,强烈推荐阿里云用户使用DTS产品。

3. kafka_connect+debezium+debezium-ui

kafka-connect-ui docker安装landoop/kafka-connect-ui

kafka_connect https://docs.confluent.io/3.0.0/connect/ 提供写kafka,读kafka功能

debezium https://github.com/debezium/debezium 提供各种db binlog解析插件

debezium-ui https://github.com/debezium/debezium-ui 提供同步任务管理功能

3.1 kafka connector:

https://github.com/apache/ignite/tree/master/modules

Kafka Connector很多,包括开源和商业版本的。如下列表中是常用的开源Connector

name HasSource HasSink
fileStream Source Sink
Jdbc Source Sink

商业版 https://www.confluent.io/product/connectors/

3.2 debezium 提供的connector

Connector文档https://debezium.io/documentation/reference/1.5/connectors/mysql.html

  • debezium-connector-mysql
  • debezium-connector-oracle
  • debezium-connector-postgres
  • debezium-connector-sqlserver
  • debezium-connector-mongodb

3.3. Kafka Connect的优点

  1. 对开发者提供了统一的实现接口
  2. 开发,部署和管理都非常方便,统一 
  3. 使用分布式模式进行水平扩展,毫无压力
  4. 在分布式模式下可以通过Rest Api提交和管理Connectors
  5. 对offset自动管理,只需要很简单的配置,而不像Consumer中需要开发者处理
  6. 流式/批式处理的支持
  7. k8s支持

4. maxwell

http://maxwells-daemon.io/ 当前版本1.33.0

mysql-to-json kafka的生产者

https://github.com/zendesk/maxwell

二、 数据库离线数据采集同步

1. dataX

  • 阿里巴巴开源的数据库同步工具
  • 开发语言:java,spring
  • dataX https://github.com/alibaba/DataX/blob/master/introduction.md
  • 功能:把数据从A数据源同步到B数据源
  • 数据源是:Mysql,Oracle,Postgresql,SQLServer,Hive,Hbase,mongodb, clickhouse,hdfs,hbase,kudu,mongodb
  • 工作原理: 分成reader,writer
  • reader:根据jdbc 和select sql读取 源数据库表
  • writer: 根据jdbc 和insert/replace sql 写到目标数据库表中
  • dataX web管理台:https://github.com/WeiYe-Jing/datax-web
  • 体验地址:http://192.168.126.147:9527/index.html#/datax/project/jobProject admin/123456

类似一个小型的dolphin调度系统,dataX是它启动一个插件,每个同步任务需要启动一个dataX进程。 功能类似arfa数据同步功能,dataX充当了kafka角色

优点:集中管理数据同步任务,配置简单(2步即可,创建作业的配置文件(json格式配置reader,writer),启动执行配置作业),分布式执行,多数据源匹配,部署简单,常适合离线数据,增量数据可以使用一些编码的方式实现,

缺点:无法做实时同步,开源版不支持kafka,需要自己开发reader和writer插件 仅仅针对insert数据比较有效,update数据就不适合。缺乏对增量更新的内置支持,因为DataX的灵活架构,可以通过shell脚本等方式方便实现增量同步。

2. Sqoop

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop导入:导入工具从RDBMS到HDFS导入单个表。表中的每一行被视为HDFS的记录。所有记录被存储在文本文件的文本数据或者在Avro和序列文件的二进制数据。

Sqoop导出:导出工具从HDFS导出一组文件到一个RDBMS。作为输入到Sqoop文件包含记录,这被称为在表中的行。那些被读取并解析成一组记录和分隔使用用户指定的分隔符。

Sqoop支持全量数据导入和增量数据导入(增量数据导入分两种,一是基于递增列的增量数据导入(Append方式)。二是基于时间列的增量数据导入(LastModified方式)),同时可以指定数据是否以并发形式导入。

3. Nifi

Apache NiFi 是一个易于使用、功能强大而且可靠的数据拉取、数据处理和分发系统,用于自动化管理系统间的数据流。它支持高度可配置的指示图的数据路由、转换和系统中介逻辑,支持从多种数据源动态拉取数据。

NiFi基于Web方式工作,后台在服务器上进行调度。 用户可以为数据处理定义为一个流程,然后进行处理,后台具有数据处理引擎、任务调度等组件。

几个核心概念:

  • Nifi 的设计理念接近于基于流的编程 Flow Based Programming。
  • FlowFile:表示通过系统移动的每个对象,包含数据流的基本属性
  • FlowFile Processor(处理器):负责实际对数据流执行工作
  • Connection(连接线):负责不同处理器之间的连接,是数据的有界缓冲区
  • Flow Controller(流量控制器):管理进程使用的线程及其分配
  • Process Group(过程组):进程组是一组特定的进程及其连接,允许组合其他组件创建新组件

4. kettle

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。 Kettle的Spoon有丰富的Steps可以组装开发出满足多种复杂应用场景的数据集成作业,方便实现全量、增量数据同步。缺点是通过定时运行,实时性相对较差。

三、 服务器日志数据采集工具

1. Flume

  • 官网:https://flume.apache.org/
  • 开发语言:java

2. Filebeat

  • 官方文档https://www.elastic.co/guide/en/beats/filebeat/current/index.html
  • 代码库:https://github.com/elastic/beats/tree/master/filebeat
  • 开发语言:go

3. Logstash

  • 代码库:https://github.com/elastic/logstash
  • 开发语言: java

4. Fluentd

  • 官方文档:http://docs.fluentd.org/articles/quickstart
  • 开发语言:c,ruby

5. Chukwa

  • 官网:https://chukwa.apache.org/
  • 代码库:https://github.com/apache/chukwa
  • 开发语言:java

6. Scribe

  • 代码库https://github.com/facebookarchive/scribe
  • 公司:facebook开发
  • 开发语言:c,c++

7. logkit

  • 官网: https://logkit-pro.qiniu.com
  • 代码库:https://github.com/qiniu/logkit
  • 文档:https://developer.qiniu.com/insight/4684/product_introduction
  • 开发语言:go
  • 公司:七牛云
  • 对比:https://developer.qiniu.com/insight/4934/logkit-pro-compared-with-mainstream-collecting-component-function-performance

8. logtail

  • 文档:https://help.aliyun.com/document_detail/28979.html
  • 其他公司https://logtail.com/
  • 开发语言:c++
  • 公司:阿里云
  • 不开源

9. jlogstash

  • 代码:https://github.com/DTStack/jlogstash
  • 开发语言:java
  • 公司:袋鼠云

四、 Http数据采集

1. openResty+lua+libkafka

五、 终端数据采集

  1. PC web
  2. android
  3. ios
  4. 微信小程序
  5. mobile h5
  6. 第三方

六、 kafka集群数据同步工具

1. brooklin

  • linked开源的工具,用来在kafka集群之间同步数据,用来替代kafka-mirror-maker
  • https://github.com/linkedin/brooklin
  • An extensible distributed system for reliable nearline data streaming at scale. fileConnector,kafkaConnector
  • 功能:把多个数据源的内容通过brooklin写入到多个目的地,类似kafka-mirror-maker。
  • 开发语言:java,gradle
  • 组件:zookeepr,kafka,connector,provider
  • 优点:架构新颖,可靠性好,部署简单
  • 缺点:connector和provider比较少;管理麻烦,没有界面

七、 kafka集群管理工具

1. logi-KafkaManager

2. kafkaMonitor

3. kafkaManager

4. kafkaEagle

八、 数据集成管理服务

1. DBus

  • 宜信开源的数据采集分发平台
  • 项目文档 https://bridata.github.io/DBus/
  • 项目代码https://github.com/BriData/DBus
  • 采用cannal抓取数据库实时binlog日志
  • 采用flume/filebeat采集日志文件

2. CDAP

  • 一个开源的框架建立数据分析服务
  • 项目代码https://github.com/cdapio/cdap
  • 项目官网https://cdap.io/
  • 项目文档https://cdap.atlassian.net/wiki/spaces/DOCS/