【问题标题】:Generate "fake" stream data. Kafka - Flink生成“假”流数据。卡夫卡-Flink
【发布时间】:2019-01-26 19:23:53
【问题描述】:

我正在尝试生成流数据,以模拟我在不同的时间范围内接收到两个值(整数类型)、时间戳和 Kafka 作为连接器的情况。

我使用 Flink 环境作为消费者,但我不知道哪个是生产者的最佳解决方案。 (如果可能,Java 语法比 Scala 更好)

我应该直接从 Kafka 生成数据吗?如果是,最好的方法是什么? 或者,如果我作为生产者从 Flink 生成数据,将其发送到 Kafka 并在最后由 Flink 再次使用它,也许会更好?我怎么能从 flink 做到这一点? 或者也许还有另一种简单的方法来生成流数据并将其传递给 Kafka。

如果是,请让我走上实现它的轨道。

【问题讨论】:

  • 视情况而定。你在测试架构吗?你想生成特定的数据吗?生产率重要吗?你能提供更多关于你想做什么的信息吗?如果您只想生成数据,您可能需要使用 Kafka Producer API 和 Java 线程创建一个 Java 类,并开始尽可能多地生成数据。
  • 感谢大卫的回答。假设我有 2000 个用户,他们在 2 周内每天 4 次生成 2 个值,整数(例如 (3.001, 2.434))。 2 周后,数据将在 6 个月内每天只显示一次,而不是 4 次。我会将这些数据用于 CEP Flink API。但这是我第一次生成流数据。我将检查 Kafka Producer API。

标签: java apache-kafka apache-flink stream-processing event-stream-processing


【解决方案1】:

正如 David 还提到的,您可以使用 KafkaProducer API 在简单的 Java 中创建一个虚拟生产者,以便根据需要安排消息并将消息发送到 Kafka。同样,如果您想要多个同时生产者,您可以使用 Flink 来做到这一点。使用 Flink,您需要为生产者和消费者编写单独的作业。 Kafka 基本上启用了异步处理架构,因此它没有队列机制。所以最好将生产者和消费者的工作分开。

但请多考虑一下这个测试的意图:

您是否正在尝试测试 Kafka 流式传输的持久性、复制、偏移管理功能

在这种情况下,您需要同一主题的同时生产者,消息中的键为空或非空。

或者您是否正在尝试测试 Flink-Kafka 连接器功能。

在这种情况下,您只需要一个生产者,很少有内部场景可以通过让生产者推送比消费者处理的更多消息来进行背压测试。

或者您是否正在尝试测试主题分区和 Flink 流并行性。

在这种情况下,单个或多个生产者但消息的 key 应该是非空的,您可以测试 Flink 执行器如何与各个分区连接并观察它们的行为。

您可能想要测试更多想法,其中每一个都需要在生产者中完成或不完成某些特定的事情。

如果需要,您可以查看https://github.com/abhisheknegi/twitStream 以使用 Java API 提取推文。

【讨论】:

    猜你喜欢
    • 2016-05-11
    • 2017-01-10
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 2017-02-08
    相关资源
    最近更新 更多