Datafaker 简介

Datafaker 是一个现代框架,使 JVM 程序员能够有效地生成虚假数据他们的项目使用 200 多个数据提供商,可以快速设置和使用。当您需要一些特定于域的数据时,可以编写自定义提供程序。除了提供程序之外,生成的数据还可以导出为 CSV、JSON、SQL、XML 和 YAML 等流行格式。

有关基本功能的详细介绍,请参阅“Datafaker:使用生产数据的替代方案

Datafaker 提供了许多功能,例如使用序列和集合以及基于模式生成自定义对象(请参阅“ Datafaker 2.0)。

批量数据生成

在软件开发和测试中,无论是进行非功能测试还是模拟突发负载,都需要频繁生成用于各种目的的数据。让我们考虑一个简单的场景,当我们的任务是生成 10,000 条 JSON 格式的消息并将其发送到 RabbitMQ

从我的角度来看,这些选项值得考虑:

  1. 开发自己的工具:一种选择是从头开始编写自定义应用程序来生成这些记录(消息)。如果生成的数据需要更真实,那么使用 DatafakerJavaFaker
  2. 使用特定工具:或者,我们可以选择为特定数据库或消息代理设计的特定工具。例如,voluble 等工具用于 Kafka 提供专门的功能来生成消息并将消息发布到 Kafka 主题;或更现代的工具,例如 ShadowTraffic,目前正在开发中并针对基于容器的方法,这可能并不总是必要的。
  3. Datafaker Gen:最后,我们可以选择使用 Datafaker Gen,我想在当前的文章中考虑它。

Datafaker Gen 概述

Datafaker Gen 提供基于 Datafaker 库的命令行生成器,允许连续生成各种格式的数据并与不同的存储系统、消息代理和后端服务集成。由于该工具使用Datafaker,因此数据可能是真实的。无需重建项目即可完成方案、格式类型和接收器的配置。

Datafake Gen 由以下可配置的主要组件组成:

1。架构定义

用户可以在 config.yaml 文件中定义其记录的架构。该架构根据 Datafaker 提供程序指定记录的字段定义。它还允许定义嵌入字段。

YAML

 

default_locale: en-EN
字段:
  - 姓名:姓氏
    生成器: [ 名称#姓氏 ]
  - 姓名:名字
生成器:[名称#firstName]

2.格式

Datafake Gen 允许用户指定生成记录的格式。目前,有 CSV、JSON、SQL、XML 和 YAML 格式的基本实现。此外,可以通过自定义实现来扩展格式。格式的配置在 output.yaml 文件中指定。

YAML

 

格式:
  .csv:
    引用: ”@”
    分隔符:$$$$$$$
  格式:
    格式为:“[]”
  yaml:
  xml:
漂亮:真实

3.水槽

接收器组件确定生成的数据将存储或发布的位置。基本实现包括命令行输出和文本文件接收器。此外,接收器可以通过自定义实现(例如 RabbitMQ)进行扩展,如当前文章中所示。接收器的配置在output.yaml文件中指定。

YAML

 

接收器: 兔子MQ: batchsize: 1 # 当1条消息包含1个文档时,当>1条消息包含一批文档时 主机:本地主机 端口:5672 用户名: 来宾 密码:访客 交换:test.direct.exchange 路由键:products.key

通过 Java SPI 进行扩展

Datafake Gen 使用 Java SPI(服务提供者接口)来轻松添加新格式或接收器。这种可扩展性允许根据特定要求定制 Datafake Gen。

如何在 Datafake Gen 中添加新接收器

在添加新接收器之前,您可能需要检查它是否已存在于datafaker-gen-examples 存储库。如果不存在,您可以参考如何添加新接收器的示例。

在使用新接收器实现扩展 Datafake Gen 时,开发人员需要考虑两个主要选项:

  1. 通过使用此父项目,开发人员可以为其接收器扩展实现接收器接口,类似于 datafaker-gen-examples 存储库中提供的接口。
  2. 包含 Maven 存储库中的依赖项以访问所需的接口。对于这种方法,应该构建 Datafake Gen 并将其存在于本地 Maven 存储库中。这种方法在项目结构和要求方面提供了灵活性。

1。 实现 RabbitMQ 接收器

要添加新的 RabbitMQ 接收器,只需实现 net.datafaker.datafaker_gen.sink.Sink 接口即可。

该接口包含两个方法:

  1. getName – 此方法定义接收器名称。
  2. run – 该方法触发记录的生成,然后将所有生成的记录发送或保存到指定的目的地。方法参数包括从 output.yaml 文件中检索到的特定于该接收器的配置以及数据生成函数和要生成的所需行数。
爪哇