Skip to content
This repository was archived by the owner on Oct 7, 2025. It is now read-only.

xierongchuan/ClicksService

Repository files navigation

DI Container

Выполнение тестового задания #3 Время выполнения ~2ч

Задание #3

Создать микросервис Clicks со следующими возможностями:

  1. Прием ‘сырых’ кликов (из стороннего сервиса) с помощью webhook.
    • ~100-200k кликов в день с 1000 запросов в секунду в пике
    • Данные приходят в следующем формате: { "click_id": "abc123", "offer_id": 12345, "source": "asd_network_1", "timestamp": "2025-06-11T14:00:00Z", "signature": "hex_hmac_sha256" }
  2. Возвращает агрегированную статистику кликов за период времени ( с сортировкой по выбранному полю)
  3. Экспорт кликов в микросервис Finance (аналитический сервис):
    • POST /forward?date=YYYY-MM-DD
      • Собирает клики за нужную дату и посылает в Finance
      • В ридми опишите, каким образом будете получать и хранить данные в микросервисе Finance

Примените DI-контейнер из Задачи #1

Build

docker compose build

Run

docker compose up -d

Test

docker compose run --rm clicks-service vendor/bin/phpunit tests/

Схема работы

Клики

  1. Nginx.
  2. Laravel Webhook (/api/clicks)
  3. Валидация, проверка подписи
  4. Задание в очередь
  5. Ответ 202 Accepted
  6. RabbitMQ
  7. Laravel Worker
  8. Чтение 1000 из очереди
  9. Формирует batch запрос
  10. Вставляет пачкой в ClickHouse

Статистика

  1. Nginx.
  2. Laravel (/api/stats)
  3. Валидация параметров
  4. Запрос в ClickHouse
  5. Возврат результата

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors