|
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 18
|
|
Распарсить лог работы распределенных бэкэндов27.04.2016, 08:57. Показов 2555. Ответов 8
Метки нет (Все метки)
Всем привет.
Устраиваюсь на работу в одну компанию, так вот мне дали задание (сроки выполнения неделя) написать программу на Python по парсингу лога, будущий работодатель в курсе из моего резюме, что я не знаю Python да и вообще очень слаб в программировании, но не смотря на это мне все равно поставили задачу. Имя входного файла: input .txt Имя выходного файла: output. txt Сервис состоит из фронтенда и бекендов. Бекенды бывают нескольких типов. Для увеличения отказоустойчивости бекенды одного типа реплицированы и составляют группу реплик (далее ГР). Бекенды из одной ГР одинаковы, и для формирования выдачи фронтенду достаточно получить от¬вет хотя бы с одного бекенда из каждой ГР. Фронтенд может сделать несколько попыток обращения к бекендам ГР, пока не получит результат. У фронтенда есть три фазы обработки запроса: 1) Опрос бекендов 2) Мерджинг результатов, полученных с бэкендов 3) Отправка результатов пользователю В случае, когда фаза опроса бекендов занимает слишком много времени, фронтенд может при¬нудительно завершить опрос и перейти к фазе мерджинга результатов с неполным набором данных. В процессе работы фронтенд пишет в лог файл события, возникающие при обработке запроса. Вам нужно по данному логу событий посчитать: 1. 95-й перцентиль времени обработки запросов фронтендом 2. Найдите 10 запросов, в которых фаза отправки результатов пользователю была максимальной. В качестве ответа выдайте 10 идентификаторов запросов. 3. Для каждого бекенда, отметившегося в логе, посчитайте количество обращений к нему, коли¬чество и типы ошибок, возникших при работе с ним. 4. Посчитайте количество запросов к фронтенду на которые фронтенд не смог собрать данные со всех ГР. Формат входных данных Входной файл состоит из строчек в формате: <время события> <идентификатор запроса на фронтенд> <тип события> [<дополнительные параметры>] Разделителем полей выступает символ табуляции. Строки отсортированы по времени события — UNIX timestamp в микросекундах. Идентификатор запроса это уникальное целое число. Отфильтровав лог по записям с выбран¬ным идентификатором запроса можно узнать всё об обработке соответствующего пользовательского запроса. Типы событий: StartRequest Начало обработки запроса BackendConnect Установка tcp соединения с бекендом. Дополнительные параметры: <номер ГР> <URL запроса на бекенд> BackendRequest Отправка запроса на бекенд. Дополнительные параметры: <номер ГР> BackendOk Отметка успешного получения ответа с бекенда. Работа с ГР завершается. Дополнительные параметры: <номер ГР> BackendError Ошибка работы с бекендом. Следует после BackendConnect или BackendRequest. Дополнительные параметры: <номер ГР> <строка с текстом возникшей ошибки> StartMerge Означает конец фазы опроса бекендов и начало фазы мерджа результатов. Start SendResult Означает конец фазы мерджа и начало отправки результата пользователю. Finis hRequest Конец обработки запроса. Формат выходных данных Выведите в свободной фоме ответ на поставленные вопросы. Время обработки пользовательского запроса вычисляется как время между событиями StartRequest и FinishRequest. Подсмотреть, что такое 95-й перцентиль можно тут: ru.wikipedia.org/wiki/Квантиль Время ответа пользователю можно вычислить как разницу времени между событиями Start SendResult и FinishRequest. Бекенды, с которыми производилась работа можно узнать разобрав URL в событии BackendConnect. В качестве типа ошибки можно использовать строковое представление ошиб¬ки в событии BackendError. Запросы, на которые ответили не все ГР не имеют событий BackendOK хотя бы для одной из своих ГР. Система оценки Мы ожидаем, что решение будет оформленно на Python 2.7. Модно пользоваться любыми библиотеками с pypi, но не забудьте описать зависимости в pip-requirements.txt Также, мы будем признательны, если, при прочих равных, вы выберете pure python библиотеки себе в зависимости — нам это сильно упрощает проверку. Вобщем случае событийный лог может быть большим, программа не должна зачитывать весь лог в память. Постарайтесь оптимизировать свою программу по памяти и процессору. И приложены несколько файлов с логами, вот примерные строчки одного из них: 1390137366792361 3 BackendConnect 9 http://backend9-011.yandex.ru:1612/search? 1390137366792367 3 BackendConnect 19 http://backend19-004.yandex.ru:1247/search? 1390137366792392 2 BackendConnect 5 http://backend5-008.yandex.ru:1611/search? 1390137366792407 3 BackendConnect 16 http://backend16-014.yandex.ru:1120/search? 1390137366792410 3 BackendConnect 1 http://backend1-006.yandex.ru:1924/search? 1390137366792421 2 BackendConnect 15 http://backend15-013.yandex.ru:1334/search? 1390137366792467 3 BackendConnect 17 http://backend17-011.yandex.ru:1197/search? 1390137366792469 3 BackendConnect 6 http://backend6-004.yandex.ru:1347/search? 1390137366792480 3 BackendConnect 11 http://backend11-013.yandex.ru:1457/search? 1390137366792481 3 BackendConnect 0 http://backend0-007.yandex.ru:1080/search? 1390137366792516 3 BackendConnect 3 http://backend3-007.yandex.ru:1203/search? 1390137366792517 4 StartRequest 1390137366792524 3 BackendConnect 8 http://backend8-006.yandex.ru:1373/search? 1390137366792622 3 BackendConnect 12 http://backend12-006.yandex.ru:1028/search? 1390137366792627 3 BackendConnect 4 http://backend4-009.yandex.ru:1959/search? 1390137366792662 3 BackendConnect 10 http://backend10-013.yandex.ru:1888/search? 1390137366792731 3 BackendConnect 5 http://backend5-001.yandex.ru:1268/search? 1390137366792745 3 BackendConnect 18 http://backend18-004.yandex.ru:1605/search? 1390137366792896 3 BackendConnect 14 http://backend14-006.yandex.ru:1730/search? 1390137366794324 4 BackendConnect 13 http://backend13-006.yandex.ru:1103/search? 1390137366794346 4 BackendConnect 18 http://backend18-003.yandex.ru:1852/search? 1390137366794361 4 BackendConnect 12 http://backend12-012.yandex.ru:1910/search? 1390137366794364 4 BackendConnect 17 http://backend17-010.yandex.ru:1518/search? 1390137366794374 4 BackendConnect 19 http://backend19-011.yandex.ru:1276/search? 1390137366794379 4 BackendConnect 11 http://backend11-013.yandex.ru:1457/search? 1390137366794409 4 BackendConnect 6 http://backend6-001.yandex.ru:1590/search? 1390137366794438 4 BackendConnect 2 http://backend2-008.yandex.ru:1199/search? 1390137366794448 4 BackendConnect 7 http://backend7-005.yandex.ru:1103/search? 1390137366794461 4 BackendConnect 8 http://backend8-010.yandex.ru:1171/search? 1390137366794565 4 BackendConnect 9 http://backend9-008.yandex.ru:1060/search? 1390137366794597 4 BackendConnect 5 http://backend5-004.yandex.ru:1121/search? 1390137366794602 4 BackendConnect 4 http://backend4-007.yandex.ru:1172/search? 1390137366794628 4 BackendConnect 0 http://backend0-007.yandex.ru:1080/search? 1390137366794657 4 BackendConnect 15 http://backend15-012.yandex.ru:1776/search? 1390137366794659 4 BackendConnect 14 http://backend14-009.yandex.ru:1036/search? 1390137366794662 4 BackendConnect 16 http://backend16-008.yandex.ru:1349/search? 1390137366794694 4 BackendConnect 3 http://backend3-008.yandex.ru:1008/search? 1390137366794727 4 BackendConnect 10 http://backend10-005.yandex.ru:1086/search? 1390137366794829 4 BackendConnect 1 http://backend1-010.yandex.ru:1746/search? 1390137366797781 5 StartRequest Помогите кто чем может, хотя бы с разработкой алгоритма на псевдокоде, буду очень признателен любой помощи!
0
|
|
| 27.04.2016, 08:57 | |
|
Ответы с готовыми решениями:
8
Чем лучше распарсить вот такой лог Распарсить лог файлы через BAT Лог работы свича. |
|
in code we trust
133 / 162 / 12
Регистрация: 29.02.2016
Сообщений: 885
|
|
| 27.04.2016, 10:50 | |
|
в задании всё смешано в кучу! Какое это вообще имеет отношение к программированию? Он перепутал вопросы похоже. Пусть в академию наук вышлет запрос с вакансиями и требованиями высшего академического образования.
--- p.s сам он квантиль) Добавлено через 7 минут Вот только 1 но: там ведь требования с опытом работы python от 3 лет вроде) а академики вроде работают только академиками).
0
|
|
|
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 18
|
|
| 27.04.2016, 11:09 [ТС] | |
|
Это при трудоустройстве в яндекс задают такие задачи
0
|
|
|
in code we trust
133 / 162 / 12
Регистрация: 29.02.2016
Сообщений: 885
|
|
| 27.04.2016, 14:39 | |
|
Тогда выход 1-ый - стать академиком.
2-ой - попытаться стать доктором наук и убедить яндекс что вы доктор наук со знанием академика (и вам некогда заниматься решением всяких глупостей). У вас есть ведь задачи поважнее так ведь? 3-ий - выход стать бизнесменом , купить яндекс, уволить всех рекрутеров, назначить своего, и ждать согласия о приёме вас на работу в яндекс программистом). Всё просто). Добавлено через 3 минуты А вообще парсинг это проще чем расписано в задаче http://www.slideshare.net/guestbd1ac4/http-3903943 Добавлено через 14 минут http://www.slideshare.net/yandex/http-15335226 про протокол http Добавлено через 1 минуту Пройдя 5 таких собеседований ты гарантированно на 100-ую попытку пройдёшь собеседование) Любое дело в жизни это 99% процентов неудач и 1% победы и ради этого стоит жить. Добавлено через 18 минут Для самомотивации от Довганя а вдруг ты и правда станешь великим бизнесменом?) https://www.youtube.com/watch?v=LTDbHUCqFks
0
|
|
|
0 / 0 / 0
Регистрация: 23.09.2013
Сообщений: 18
|
|
| 27.04.2016, 15:04 [ТС] | |
|
Спасибо и на этом.
0
|
|
|
60 / 69 / 16
Регистрация: 18.04.2016
Сообщений: 213
|
|
| 29.04.2016, 09:40 | |
|
А в чём проблема? Тривиальная в целом задачка на подумать, возможно даже не на чистого программиста, а на какого-нибудь сисадмина-разраба внутренних сервисов.
0
|
|
|
in code we trust
133 / 162 / 12
Регистрация: 29.02.2016
Сообщений: 885
|
||
| 29.04.2016, 11:24 | ||
|
Добавлено через 11 минут КОМУ-ТО ВЗЛОМАТЬ ЯНДЕКС-КОШЕЛЁК - лёгкая задача, а пройти собеседование в яндекс невозможно. Добавлено через 4 минуты Для тех кто проходит интервью в собеседовании - вопросы по python http://grishaev.me/interview/#_16 может пригодится кому? ----- Вот именно что задача в собеседовании на сисадмина! Я не сисадмин! Вот и пусть ищут сисадмина и сами проходят своё собеседование.
0
|
||
|
60 / 69 / 16
Регистрация: 18.04.2016
Сообщений: 213
|
|||
| 29.04.2016, 11:28 | |||
|
0
|
|||
|
in code we trust
133 / 162 / 12
Регистрация: 29.02.2016
Сообщений: 885
|
||
| 29.04.2016, 11:46 | ||
|
Но останусь при своём). О деньгах не надо думать) - мне главное что-то делать, то к чему душа лежит. А деньги сами приходят/приносят). Добавлено через 7 минут Главное найти страсть, предназначение в жизни, просыпаться во сне от потока идей. И решать новые, иногда безумные задачи. Вот когда начнёт вам снится код, можете себя поздравить! Это ваше предназначение! Иногда спишь по 3 часа в день). Но это счастье. Такими темпами через год изучу 3 язык программирования). И уж условия буду ставить я - ВАМ. Поверьте на слово.
0
|
||
| 29.04.2016, 11:46 | |
|
Помогаю со студенческими работами здесь
9
Как создать лог работы bat файла?
Алгоритм записи в лог файл, принцип работы? Распарсить уравнение из файла (строки), для дальнейшей работы с ним Пожалуйста проверьте правильно ли я составила лог.функцию по лог.схеме? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|