Введение

Для создания и тестирования приложения для обнаружения мошенничества в режиме реального времени требуется непрерывный поток реалистичных данных. Но создание этих данных может быть проблемой. Вот почему мы недавно создали Datagen CLI, простой инструмент, который поможет вам создавать правдоподобные поддельные данные с помощью FakerJS API.

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

Предпосылки

  • Базовые знания Kafka и потоковых данных
  • Node.js и npm установлены на вашем компьютере
  • Кластер Kafka настроен и работает

Установка и настройка

Сначала установите интерфейс командной строки Datagen с помощью npm:

npm install -g @materializeinc/datagen

Создайте файл .env в своем рабочем каталоге с необходимыми переменными среды Kafka и Schema Registry. Замените значения заполнителей вашими фактическими настройками:

# Kafka Brokers 
KAFKA_BROKERS= 
# For Kafka SASL Authentication: 
SASL_USERNAME= 
SASL_PASSWORD= 
SASL_MECHANISM=

Создание схемы для данных обнаружения мошенничества

Чтобы создать реалистичные данные для приложения для обнаружения мошенничества, нам нужно определить схему, которая включает соответствующие поля, такие как идентификатор транзакции, идентификатор пользователя, отметка времени и сумма транзакции. Давайте создадим схему JSON с именем transactions.json:

[
  {
    "_meta": {
      "topic": "transactions"
    },
    "transaction_id": "faker.datatype.uuid()",
    "user_id": "faker.datatype.number({min: 1, max: 10000})",
    "timestamp": "faker.date.between('2023-01-01', '2023-12-31')",
    "amount": "faker.finance.amount(0, 10000, 2)",
    "is_fraud": "faker.datatype.boolean()"
  }
]

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

Генерация и отправка данных в Kafka

Теперь, когда у нас есть схема, мы можем использовать интерфейс командной строки Datagen для генерации данных и отправки их в тему Kafka. Используйте следующую команду для создания бесконечного потока транзакций в формате JSON:

datagen \
  -s transactions.json \
  -f json \
  -n -1 \
  -dr

Флаг -n указывает количество генерируемых сообщений. Мы установили значение -1 для создания бесконечного потока данных. Флаг -dr включает пробный режим, при котором данные выводятся на консоль, а не отправляются в Kafka. Это полезно для тестирования и отладки.

Пример вывода:

✔  Dry run: Skipping record production...  
  Topic: transactions 
  Record key: null 
  Payload: {"transaction_id":"b86d1d57-a650-4680-843d-06179f1c4c2e","user_id":5127,"timestamp":"2023-09-02T03:26:28.194Z","amount":"6904.40","is_fraud":false}


✔  Dry run: Skipping record production...  
  Topic: transactions 
  Record key: null 
  Payload: {"transaction_id":"719fe62a-322c-4b58-89f9-e380e2f3552d","user_id":2757,"timestamp":"2023-09-30T06:40:37.378Z","amount":"3375.15","is_fraud":true}

Нажмите Ctrl+C, чтобы остановить создание данных.

Обогащение данных

[
  {
    "_meta": {
      "topic": "transactions",
      "key": "id"
    },
    "id": "faker.datatype.uuid()",
    "user_id": "faker.datatype.number({min: 1, max: 1000})",
    "amount": "faker.finance.amount(1, 5000, 2)",
    "currency": "faker.finance.currencyCode()",
    "timestamp": "faker.date.past(1, '2023-01-01').getTime()",
    "is_fraud": "faker.datatype.boolean({likelihood: 5})",
    "ip_address": "faker.internet.ip()",
    "location": {
      "latitude": "faker.address.latitude()",
      "longitude": "faker.address.longitude()"
    },
    "device": {
      "id": "faker.datatype.uuid()",
      "type": "faker.helpers.arrayElement(['mobile', 'tablet', 'desktop'])",
      "os": "faker.helpers.arrayElement(['ios', 'android', 'windows', 'macos', 'linux', 'other'])"
    },
    "merchant_id": "faker.datatype.number({min: 1, max: 500})"
  }
]

Чтобы обогатить пример схемы datagen, мы можем добавить больше полей, связанных с геолокацией и другими атрибутами, которые могут быть полезны для обнаружения мошенничества. Обновите входную схему JSON следующим образом:

В этой расширенной схеме мы добавили:

  • ip_address: IP-адрес, связанный с транзакцией.
  • location: объект, содержащий широту и долготу.
  • device: объект, содержащий информацию об устройстве, такую ​​как идентификатор, тип и операционная система.
  • merchant_id: уникальный идентификатор продавца, участвующего в транзакции.

Связь между транзакциями и пользователями

Интерфейс командной строки Datagen также может генерировать данные для связанных сущностей.

Например, мы можем расширить схему, включив в нее тему users, содержащую информацию о пользователе. Затем мы можем использовать поле user_id в теме transactions, чтобы соединить две темы вместе:

Данные будут создаваться для тем users и transactions. Тема transactions будет содержать поле user_id, которое ссылается на поле id в теме users. Тема transactions также будет содержать поле registered_at, которое ссылается на поле registered_at в теме users.

Пример полученных данных:

Тестирование вашего приложения для обнаружения мошенничества

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

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

Заключение

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

Полезные ссылки:

Первоначально опубликовано на https://devdojo.com.