本文档所描述的内容属于神策分析的高级使用功能,涉及较多技术细节,适用于对相关功能有经验的用户参考。如果对文档内容有疑惑,请咨询您的数据咨询顾问获取一对一的协助。

神策分析设计为开放的架构,让用户可以订阅实时数据来满足更多使用场景。服务端接到一条 SDK 发来的数据后,会对数据做一些预处理并将数据写入到消息队列 Kafka 供下游各类计算模块使用。本文将介绍订阅 Kafka 数据的方法。

1. 一些要求

订阅数据需要满足以下要求:

  1. 启动订阅的机器需与部署神策分析的机器在同一个内网,且必须可以解析神策分析服务器的 host;
  2. 请选用兼容的 Kafka 客户端版本,高版本服务端兼容低版本客户端,反之则可能存在兼容性问题。神策 Kafka 服务端版本一部分早期用户为 0.8.2.x,后期新用户为 0.10.x,具体情况可在服务器上查看;
  3. 仅私有部署版支持通过 Kafka 订阅数据;
  4. 如果在自己的机器上订阅数据,需要先在自己机器上 hosts 中配上神策的服务器,订阅的时候 zookeeper 填写所有机器的 hostname,例如:hostname1:2181,hostname2:2181,hostname3:2181;

2. 订阅参数

参数名称参数值
topicevent_topic
partition单机 3 个/集群 10 个
zookeeperhostname1:2181,hostname2:2181,hostname3:2181
brokerhostname1:9092,hostname2:9092,hostname3:9092

3. 订阅数据

订阅有多种方式,可以选择一种适合使用场景的方式。

下面给出两种 Shell 方式启动订阅的示例,使用 Shell 方式可以通过重定向标准输出将数据写入文件后处理或直接用管道作为其他进程的输入,可以对接各种编程语言实现的处理程序。当然也可以使用原生 API 实现订阅,参数与 Shell 方式的一样,这里不再介绍。

3.1. 使用 Kafka Console Consumer

可以使用 Kafka 自带的 Kafka Console Consumer 通过命令行方式订阅,例如从最新数据开始订阅:

bin/kafka-console-consumer.sh --zookeeper hostname:2181 --topic event_topic
BASH

可以将 stdout 输出到文件或作为其他数据处理进程的输入数据。

3.2. 使用 Simple Consumer Shell

使用 Simple Consumer Shell 可以实现更灵活的订阅,可参考 Kafka 相关文档: Simple Consumer Shell,例如:

bin/kafka-run-class.sh kafka.tools.SimpleConsumerShell \
    --broker-list hostname:9092 \
    --offset 12345 \
    --partition 2 \
    --topic event_topic \
    --print-offsets
BASH

4. 数据格式

订阅的数据的格式可参考数据格式