Устранить баги в программе по сбору данных
15 000 UAHProject #2
Data collection
Этот проект создан для сбора данных с одного веб-сервиса, который предоставляет доступ к историческим данных спортивных матчей.
Программа по сбору данных делает следующее:
2 Сервера собирает исторические данные за все года.
1 Сервер собирает данные next games
Past game - матчи за вчерашний день и добавляют их в базу
Next game - матчи, что будут сыграны в ближайшие дни.
Главный сервер хранит данные и выдает их Экстрактору по запросу.
Есть 4-е сервера, 3-и из которых - Рабочие, которые собирают данные и 1 - Главный, который получает данные от Рабочих и хранит их в базе данных.
Задачи:
1. Завершить сбор данных (Past data).
2. Настроить сбор данных сыгранных матчей (Yesterday games) и добавление их в базу данных.
3. Настроить сбор данных предстоящих матчей (Next games)
4. Настроить Экстрактор
1. Завершить сбор данных (Past data).
Данные были собраны на ~ 75%. В октябре, после перезагрузки серверов, они прекратили собирать данные. Необходимо провести анализ, выявить причину проблемы и устранить ее.
2. Настроить сбор данных сыгранных матчей (Yesterday games) и добавление их в базу данных.
Эта задача насторена и должа работать. Надо проверить, добавляет ли парсер матчи за Вчера в бд, или переводит матчи с Next games в Past games обновив данные по нему (счет, коэффы и тд)
3. Собирать данные предстоящих матчей (Next games) и добавлять их в базу данных.
У парсера есть задача собирать данные по предстоящим матчам. Он добавляет эти данные в базу данных Главного сервера, а потом с определенным интервалом он их обновляет. В основном он обновляет линию закрытия (коэффы). После того, как матч будет сыгран, парсер обновляет данные добавляя счет, субсчет и тд
Это все настроено, но необходимо проверить. Проверить это возможно экспортировав данные с бд.
4. Настроить Экстрактор
Есть в наличии экстрактор, который взаимодействовал с сервером/бд.
Но, он был настроен под старую версию сервера/бд.
Задача настроить его под работу с текущим сервером/бд.
А также сделать его более гибким, за счет расширения возможностей запросить еще следующие данные:
- Next games
- InPlay odds
- Average and Highest odds
После обновления версии сервера/бд на текущую версию, было сделано следующее:
- были с нуля переписаны парсер и сервис сохранения данных. Скорость сбора +- 1.1 событие в секунду (в базе уже около 13000 событий истории). Плюс, в отличие от предыдущей версии, парсер гораздо менее подвержен блокировке (прошлый минут через 10 блокировался и скорость парсинга деградировала даже на 5 потоках)
- добавлены InPlay odds (в т.ч. для уже прошедших событий, если информация доступна), average и highest для prematch и InPlay
- Решена проблема со Score. Теперь формат результата зависит от вида спорта. Информация в скобках или в виде "степени" (в теннисе) вынесена в отдельное поле. Кроме того, записывается специфическая для каждого вида спорта информация о результате (например, total legs для дартса). Кроме того,
в зависимости от типа окончания события автоматически определяется победитель.
- добавлена информация о типе события (квалификации, плей-оффы и т.д.)
- в базу не сохраняются отмененные (canceled/postponed/abandoned) события
- теперь парсер собирает все доступные события nextGames и обновляет их
- написаны с нуля алгоритмы предотвращения дублей на уровне приложения + защита от дублей на уровне БД
- переработана структура данных лиг. Теперь в базе хранятся все старые названия лиг и сезоны. Кроме того, переработан алгоритм определения формата сезона - проблема с сезонами на 99% решена. Кроме того, есть возможность искать по стартовому году сезона.
- Кроме того, раз в 2 дня сканируется список лиг с целью обновления названия и текущего сезона
- А также, добавлены недостающие виды спорта
- полностью переработана архитектура приложения для сбора с прицелом на масштабируемость, отказоустойчивость и безопасность. Благодаря Rabbitmq и Redis реализована концепция асинхронной очереди. Теперь парсеры и сервис сохранения практически не зависят друг от друга. То есть, если сервис сохранения откажет, собранные, но не сохранённые события будут храниться в очереди и ждать обработки. Кроме того, добавление новых серверов парсинга не требует перезапуска серсиса сохранения (в прошлой реализации необходимо было в сервисе для сохранения прописывать ip - адреса и порты парсеров). Кроме того, в том числе благодаря асинхронной очереди, сбор данных происходит быстрее.
- новая структура БД, позволяющая быстрее получать данные
- и последнее - теперь сервера для парсинга могут принимать опциональные аргументы. Т.е., например, парсер может собирать события определённой даты/диапазона дат.
Предоставляю, для работы следующие материалы:
- исходный код,
- доступ к серверам,
- инструкцию по запуску от разработчика, который писал код для этого проекта.
- архив с экстрактором
По бюджету жду предложения от потенциальных исполнителей.
После завершения отладки/ремонта и настройки сбора данных, небходимо перейти к реализации веб-сервиса database-creator.
-
ставка скрыта фрилансером
-
687 13 1 В данном случае так много написано, что и усвоить это нельзя.
Главное, что невозможно найти ответ на вопрос, что же нужно, собственно, сделать.
Ясно одно, разработчик всего этого либо занялся чем-то другим, либо умер. И нужно подхватить, запустить, продолжить. Тут совершенно невозможно определить ни время, ни суммы. Поэтому указываю сумму, которая позволит развернуть, посмотреть, попробовать, понять.
-
ставка скрыта фрилансером
-
Мне одной кажется, что эта задача тут мелькала, только от другого заказчика?