在最近的一些项目中,我使用Apache Kafka开发了一些数据管道。在性能测试方面,数据生成总是会在整个活动中引入一些样板代码,例如创建客户端实例,编写控制流以发送数据,根据业务逻辑随机化有效负载等等。

在测试设置期间,拥有一个处理所有繁重工作的框架会很好,因此只需要回答两个基本和基本的问题:

  • 数据应该是什么样的?(架构)
  • 要生成多少数据?(体积)

有了Kafka Connect,事实证明实现自定义源连接器能够实现这一目标。以下是用于生成测试数据的示例属性列表的快速概述。

topic.name = generated.events 
poll.size = 10
poll.interval.ms = 5000
message.template = {“status”:“foo”,“direction”:“up”}
random.fields = status:foo | bar |巴兹,方向:向上|向下|向左|向右

这些属性是不言自明的。为了回答上述两个基本问题:message.templaterandom.fields控制模式,而poll.sizepoll.interval.ms控制音量。

基于这些属性,我创建了一个名为“kafka-connect-datagen”(或简称“datagen”)的自定义源连接器,可在GitHub上获得

在下一节中,我将简要介绍一些实现细节。

实现自定义连接器

Kafka Connect源连接器将数据从数据存储复制到Kafka,而接收器连接则相反。虽然是源连接器,但datagen不会链接到任何数据存储; 它从内部生成数据。其实施的其余部分根据是标准卡夫卡连接开发指南:它延伸SourceConnectorSourceTask,并实现了一些生命周期方法的钩。以下片段缩写自datagen。

 
 

如代码所示,Connector定义Task要运行的类型和要为其设置的配置Task,同时Task是执行自定义逻辑的工作单元。两者ConnectorTask实例都在一个Worker 进程中运行。该汇合的文档详细介绍了这些概念。

除了实现这两个类之外,还有一个步骤在运行演示之前:ConfigDef为用户定义配置列表()。之后,这些类可以打包为Connector插件。在全面实施可以在GitHub上找到。

在下一节中,我将演示如何将插件与dockerized本地群集设置一起使用。

快速入门演示

在本快速入门示例中,我们使用docker-compose管理所有必需的服务,如ZooKeeper,Kafka和Kafka Connect。要显示所有这些服务,请运行docker-compose up -d,然后运行docker-compose ps以打印状态信息,如下所示。

Name State Ports 
----------------------------------------------- --------------------
quickstart_broker_1 Up 0.0.0.0:9092->9092/tcp
quickstart_connect_1 Up 0.0.0.0:8083->8083/tcp,t ...
quickstart_kafka- connect-ui_1 Up 0.0.0.0:8001->8000/tcp
quickstart_kafka-rest-proxy_1 Up 0.0.0.0:8082->8082/tcp
quickstart_kafka-topics-ui_1 Up 0.0.0.0:8000->8000/tcp
quickstart_zookeeper_1 Up 0.0。 0.0:2181-> 2181 / tcp,...

Kafka和Kafka Connect将需要更长的时间才能开始。感谢Landoop Ltd,我们有这些不错的UI工具:打开http:// localhost:8000查看Kafka主题UI,http:// localhost:8001查看Kafka Connect UI。您也可以运行docker-compose logs -f以查看日志。

由于通常Kafka Connect服务是最后一个完成启动的服务,我们可以通过运行docker-compose logs -f connect来查看其日志,以查看如下的正常运行指标。

INFO使用config offset -1(org.apache.kafka.connect.runtime.distributed.DistributedHerder)
启动连接器和任务INFO完成启动连接器和任务(org.apache.kafka.connect.runtime.distributed.DistributedHerder)

当所有服务完全启动时,是时候创建“datagen”连接器实例了。以下是用于此演示的配置示例。它基本上设置“datagen”任务,每5秒生成10条消息。每条消息都使用定义的JSON消息模板和一些随机字段。运行以下命令以实例化Connector和Task。

curl -X POST http:// localhost:8083 / connectors \ 
-H'Content-Type:application / json'\
-H'Eccept:application / json'\
-d @ connect.source.datagen.json

现在,在Kafka主题UI中,我们能够看到以generated.events定义的速率发布到主题的随机JSON消息。

 

kafka-connect-datagen发布消息

要停止生成,我们可以转到Kafka Connect UI并暂停或删除连接器。同样,我们可以使用如下所示的REST API来实现相同的结果。查看此Confluent文档以获取更多操作。

#pause连接器(如果成功则为空响应)
curl -X PUT http:// localhost:8083 / connectors / connect.source.datagen / pause
#delete连接器(如果成功则为空响应)
curl -X DELETE http:// localhost:8083 / connectors / connect.source.datagen

总之,我们能够利用Kafka Connect,这是一种现成的工具,可以很好地与Kafka集成,以最少的样板代码实现随机数据生成。自定义连接器插件 - kafka-connect-datagen - 具有高度可移植性,可以进一步扩展以支持集成测试和不同消息格式等功能。

使用Kafka Connect创建测试数据生成器的更多相关文章

  1. SQL Server CDC配合Kafka Connect监听数据变化

    写在前面 好久没更新Blog了,从CRUD Boy转型大数据开发,拉宽了不少的知识面,从今年年初开始筹备.组建.招兵买马,到现在稳定开搞中,期间踏过无数的火坑,也许除了这篇还很写上三四篇. 进入主题, ...

  2. Kafka connect快速构建数据ETL通道

    摘要: 作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 业余时间调研了一下Kafka connect的配置和使用,记录一些自己的理解和心得,欢迎 ...

  3. 使用kafka connect,将数据批量写到hdfs完整过程

    版权声明:本文为博主原创文章,未经博主允许不得转载 本文是基于hadoop 2.7.1,以及kafka 0.11.0.0.kafka-connect是以单节点模式运行,即standalone. 首先, ...

  4. kafka connect 使用说明

    KAFKA CONNECT 使用说明 一.概述 kafka connect 是一个可扩展的.可靠的在kafka和其他系统之间流传输的数据工具.简而言之就是他可以通过Connector(连接器)简单.快 ...

  5. kafka connect rest api

    1. 获取 Connect Worker 信息curl -s http://127.0.0.1:8083/ | jq lenmom@M1701:~/workspace/software/kafka_2 ...

  6. Kafka: Connect

    转自:http://www.cnblogs.com/f1194361820/p/6108025.html Kafka Connect 简介 Kafka Connect 是一个可以在Kafka与其他系统 ...

  7. kafka connect简介以及部署

    https://blog.csdn.net/u011687037/article/details/57411790 1.什么是kafka connect? 根据官方介绍,Kafka Connect是一 ...

  8. 1.3 Quick Start中 Step 7: Use Kafka Connect to import/export data官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Step 7: Use Kafka Connect to import/export ...

  9. 替代Flume——Kafka Connect简介

    我们知道过去对于Kafka的定义是分布式,分区化的,带备份机制的日志提交服务.也就是一个分布式的消息队列,这也是他最常见的用法.但是Kafka不止于此,打开最新的官网. 我们看到Kafka最新的定义是 ...

随机推荐

  1. JAVA集合框架的特点及实现原理简介

    1.集合框架总体架构 集合大致分为Set.List.Queue.Map四种体系,其中List,Set,Queue继承自Collection接口,Map为独立接口 Set的实现类有:HashSet,Li ...

  2. make几个知识点

    即时变量和延时变量 在下面代码中,定义了一个值为x的x变量,以延时变量的方式将它的值赋给y,以即时变量的方式将它的值赋给z. 因为y为延时变量,所以y的取值并不会立即计算,而是在整个文件解析完成之后才 ...

  3. 用node发布一个包

    手把手教你用npm发布一个包 注:本文引用于简书 http://www.jianshu.com/p/36d3e0e00157   但是内容的话,还是一样的,也就是继续之前的工作,将那个autoRout ...

  4. Qt中的强制类型转换

    在C++开发中经常要进行数据类型的强制转换. 刚开始学习的时候,直接对基本数据类型强制类型转换,如float fnum = 3.14; int num = (int)fnum; 随着C++标准的发展, ...

  5. maven 学习---Maven中央存储库

    当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载. 首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源, 如果没有找到,然后把它会 ...

  6. Go 语言基础语法-Go

    Go 标记 Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号.如以下 GO 语句由 6 个标记组成: fmt.Println("Hello, World!") ...

  7. 设计模式:单例(Sigleton)模式

    题目:设计一个类,我们只能生成该类的一个实例. 只能生成一个实例的类是实现了Singleton(单例)模式的类型. 相关知识: 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象 ...

  8. 8皇后问题SQL求解(回溯算法)

    问题 八皇后问题是一个古老而著名的问题,是回溯算法的典型例题.该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一 ...

  9. MySQL Execution Plan--使用Query Rewrite

    安装Query Rewrite Plugin 在MySQL的安装目录的share文件夹下,有两个文件用来安装和卸载Query Rewrite Plugin: install_rewriter.sql: ...

  10. eclipse 搭建springboot项目pom.xml报错

    1. 报错信息 2. 解决方法 在pom.xml文件中加入maven版本修改 <maven-jar-plugin.version>3.1.1</maven-jar-plugin.ve ...