В настоящее время Vibeapp получает данные о мероприятиях и билетах из Kafka-стримов Ticketscloud. Стримы передают информацию об организаторах, мероприятиях, заказах и возвратах билетов. Формат сообщений — Protobuf.
Текущие стримы ориентированы на внутренние процессы Ticketscloud и избыточны для внешней интеграции, так как содержат много специализированных полей.
Kafka-топики:
- Организаторы — данные об организаторах мероприятий
(Partner Proto) - Мероприятия — события, создаваемые организаторами
(Event Proto) - Заказы — информация о заказах и купленных билетах
(Order Proto) - Возвраты — данные о возвратах билетов
(Refund Proto)
Стрим возвратов используется для актуализации статусов билетов в Vibeapp.
Для упрощения интеграции предлагается два варианта передачи данных о билетах и их статусах в Vibeapp. Формат сообщений — JSON или Protobuf, по договорённости между командами.
flowchart LR
TL[Ticketland]
subgraph Kafka
O[Organizers]
E[Events]
subgraph Orders-based
OR[Orders]
R[Refunds]
end
subgraph Tickets-based
T[Tickets]
end
end
TL --> O
TL --> E
TL --> OR
TL --> R
TL --> T
O --> V[Vibeapp]
E --> V
OR --> V
R --> V
T --> V
V --> DB[(Vibe DB)]
Вариант, близкий к текущей модели. Vibeapp получает информацию о проданных билетах и их статусах из стрима заказов, а изменения статусов — из стрима возвратов.
Топики Kafka:
- Организаторы —
Organizer JSON,
Organizer Proto
Должны быть синхронизированы до обработки мероприятий и заказов. - Мероприятия —
Event JSON,
Event Proto
Должны быть синхронизированы до обработки заказов. - Заказы —
Order JSON,
Order Proto) - Возвраты —
Refund JSON,
Refund Proto
Набор топиков может быть изменён по согласованию (например, объединение данных организаторов с мероприятиями или заказами).
Альтернативный вариант — передача непосредственно билетов и их текущих статусов (активен, использован, отменён, возвращён).
Kafka-топики:
- Организаторы —
Organizer JSON,
Organizer Proto
Должны быть синхронизированы до обработки мероприятий и билетов. - Мероприятия —
Event JSON,
Event Proto
Должны быть синхронизированы до обработки билетов. - Билеты —
Ticket JSON,
Ticket Proto
Как и в предыдущем варианте, структура стримов может быть упрощена или объединена по договорённости.
Примеры сообщений в формате JSON приведены в соответствующих файлах по ссылкам выше. Для Protobuf-сообщений схемы также доступны по ссылкам в описании топиков.
Для сообщений обязательно указывать следующие заголовки:
content-type:application/jsonилиapplication/x-protobufschema-version: версия схемы сообщения (например,1.0)application-id: идентификатор источника данных (например,ticketland)
В качестве ключа сообщения рекомендуется использовать уникальный идентификатор сущности (например, organizer_id, event_id, order_id, ticket_id).