Генерация "фальшивых" потоковых данных. Кафка - Флинк

Я пытаюсь сгенерировать потоковые данные, чтобы смоделировать ситуацию, когда я получаю два значения, типа Integer, в другом временном диапазоне с временными метками и Kafka в качестве соединителя.

Я использую среду Flink как потребитель, но я не знаю, какое решение является лучшим для производителя. (Синтаксис Java лучше, чем Scala, если это возможно)

Должен ли я производить данные непосредственно из Кафки? Если да, каков наилучший способ сделать это? Или, может быть, лучше, если я произведу данные из Flink в качестве производителя, отправлю их в Kafka и снова использую их в конце Flink? Как я могу сделать это от Flink? Или, возможно, есть другой простой способ генерировать потоковые данные и передавать их в Kafka.

Если да, пожалуйста, поставьте меня на трек, чтобы добиться этого.

2 ответа

Как также упоминал Дэвид, вы можете создать фиктивного производителя в простой Java, используя API-интерфейсы KafkaProducer для планирования и отправки сообщений в Kafka по вашему желанию. Точно так же вы можете сделать это с Flink, если вы хотите несколько одновременных продюсеров. С Flink вам нужно будет написать отдельную работу для производителя и потребителя. Kafka в основном включает архитектуру обработки ASync, поэтому у нее нет механизмов очереди. Поэтому лучше разделять рабочие места производителей и потребителей.

Но подумайте немного о намерениях этого теста:

Вы пытаетесь проверить надежность потоковой передачи, репликацию, возможности управления смещением Kafka?

В этом случае вам понадобятся одновременные продюсеры для одной и той же темы с пустым или ненулевым ключом в сообщении.

или вы пытаетесь проверить возможности разъема Flink-Kafka.

В этом случае вам нужен только один производитель, несколько внутренних сценариев могут быть проверены на обратное давление, заставляя производителя отправлять больше сообщений, чем может обработать потребитель.

или вы пытаетесь проверить разделение темы и потоковый параллелизм Flink.

В этом случае один или несколько производителей, но ключ сообщения должен быть ненулевым, вы можете проверить, как исполнители Flink соединяются с отдельными разделами, и наблюдать за их поведением.

Есть больше идей, которые вы, возможно, захотите проверить, и каждая из них должна будет что-то конкретное сделать в продюсере или нет.

Вы можете проверить https://github.com/abhisheknegi/twitStream для извлечения твитов с использованием API Java в случае необходимости.

Для описанного варианта использования я бы порекомендовал проект datagen CLI с открытым исходным кодом.

Это очень простой инструмент для создания реалистичных поддельных потоковых данных для Kafka. Он использует API Faker.js, вы можете создавать собственные схемы для моделирования различных вариантов использования. Он также поддерживает схемы JSON, Avro и SQL, вы можете легко создавать данные в желаемом формате и даже устанавливать связи между наборами данных. Это позволяет вам генерировать значимые потоки данных для целей тестирования, разработки или демонстрации в среде Kafka.

Для описанного вами варианта использования вы можете создать 2 тыс. пользователей по следующей схеме:

      [
  {
    "_meta": {
      "topic": "users",
      "key": "id"
    },
    "id": "faker.datatype.number({min: 1, max: 2000})",
    "name": "faker.name.fullName()",
    "email": "faker.internet.email()",
    "registered_at": "faker.date.past(5, '2023-01-01').getTime()"
  }
]

И создайте данные с помощью следующей команды:

      datagen -s users.json -n 2000 --dry-run

Этот инструмент также позволяет генерировать реляционные данные, которые можно запрашивать в последующих приложениях.

Другие вопросы по тегам