上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.3 数据采集流程
数据采集工作一般是由数据开发工程师承担的。本节笔者介绍一下用户行为数据采集、业务数据采集的流程,让大家了解数据开发工程师是如何工作的,这样才能更好地与他们合作。
一个典型的用户行为数据采集流程,如图2-5所示。
图2-5 用户行为数据采集流程
第一步,前端工程师通过异步HTTP接口的形式将埋点数据发送到Ngnix服务器,通过Ngnix做负载均衡将日志文件采集并存储起来。
第二步,通过如Flume之类的日志采集工具将埋点日志文件以消息的形式发送到Kafka集群。
第三步,数据中台通过订阅Kafka集群的日志消息将日志文件存储在数据中台。
一个典型的业务数据采集流程,如图2-6所示。
图2-6 数据中台业务数据采集流程
(1)业务数据库产生的业务数据一般存储在关系型数据库(如MySQL、Oracle等)中,存储的过程会产生Binlog日志文件。Binlog是一种二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会被记录到Binlog里,但是对库表等内容的查询不会被记录。
(2)Kafka MySQL CDC Connect读取了业务数据的Binlog文件后,通过CDC(Change Data Capture,意为“变动数据捕获”,是增量抽取数据解决方案之一,能够帮助识别从上次提取之后发生变化的数据)的方式将业务库变动数据记录到Kafka等下游来消费。
(3)可以通过Python语言在Kafka消费基础上做一个调用,将生产者产生的数据消费到Hbase。这样当MySQL中有相应操作时,Hbase便会同步。