p141592
@p141592
Backend

Как подождать, пока данные запишутся в ETL перед отдачей клиенту?

Всем привет.

Вопрос, который мучает меня последнее время -- как правильно ожидать данные на стороне websocket.

Оповещения о новых событиях приходят в момент добавления данных, через ZMQ отправляю на WS строку с названием измененного поля.
ETL система довольно большая(костыльная) и перед добавлением в базу может пройти некоторое время. Иногда пересчитываются показатели большие и приходится ждать десятки минут. Иногда просто данных приходит мало и пока не набирается достаточно большой пакет, в clickhouse ничего просто не попадает.

Сейчас ставлю искусственное ожидание - записываю, как долго ждал по этому полю и беру среднее значение.
+ содержу хеш таблицу по подпискам ws клиентов с хеш суммами прошлых результатов.

Но это все выглядит довольно кастыльно и работает не очень, часто бывает провал по данным по какой-то причине.
Как вы реализовали это у себя в проектах?
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
На самом деле не очень понятно что у вас происходит но хочется вам сказать несколько фактов:
- событийная система предполагает то что пользователю синхронный запрос отдает только идентификатор задания и сообщение о том что он в процессе обработки
- при окончании обработки либо обратно через вебсокет, либо же через short-pooling/signal-r вы получаете изменение статуса задания
- что касается clickhouse то у них заявлена eventual consistency, поэтому батчи слать имеет смысл только если у вас оптимизация стоимости в облаке
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы