me-zundig
@me-zundig
инженер

Консультация по оптимизации алгоритма?

Задача: из большой удаленной БД через API пассажира получить, отфильтровать и аккуратно засторить данные к себе. Пассажир отдает данные постранично, на одной странице 50 записей, или меньше, если предверие конца. При конце данных получаем ожидаемые теги.

Сначала решал задачу в одно потоковом режиме типа page++ эффективность такого решения примерно 23 часа. По не зависящим факторам БД может обновится раз в сутки и этот момент может повлиять на консисетность, да и вообще, если честно долго.

Написал пул из 10 воркеров, которые решают задачу, работа из 23 часов превратилась в работу от 1 до 3 часов. Суть работы пула, это просто револьвер, мастер делает page++ а свободный воркер подхватывает задачу. Найдена граница? все следующие воркеры либо узнают в процессе, доделывают и завершаться, либо при ожидании задачи тоже завершатся. Все работает нормально.

Вопрос вот какого характера: вот этот револьвер, как думаете? можно еще оптимизировать?

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

Спасибо!

PS: Извините если нет тут кода golang, но смею вас заверить все написано на go, поэтому примеры будут кстати.
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 1
@bodrich
Какое примерно среднее количество записей вы получаете из API/записываете в таблицу?
Есть ли ограничения на количество запросов к API ?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы