Api яндекс. Погоды
Скачать 0.81 Mb.
|
МИНИСТЕРСТВО науки и высшего образования РОССИЙСКОЙ ФЕДЕРАЦИИ ФГБОУ ВО «РЫБИНСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ имени П. А. Соловьева» Кафедра «Вычислительные системы» Направление «Информатика и вычислительная техника» РЕФЕРАТ по курсу: «Интерфейсы прикладного программирования» на тему: «API Яндекс.Погоды» Студент гр. ИВБ-18 Лебедев Т.Е. шифр подпись Руководитель: Сизов П. В. Рыбинск 2021 Содержание 1 Определение 3 2 Получение ключа 3 3 Составляющие API Яндекс.Погоды 3 3.1 Актуальный прогноз 3 3.2 История наблюдений 3 4. Внутренняя структура погоды 4 4.1 Что такое Погода 4 4.2 Как Погода устроена 5 4.3 GraphQL или RESTApi? 8 5 Достоинства и недостатки 9 API Яндекс.Погоды позволяет получать погодные данные в автоматизированном режиме. 2 Получение ключа Для использования API Яндекс.Карт необходимо получить ключ. Его можно получить на странице кабинета разработчика Яндекс. Для этого необходимо выбрать сервис «Яндекс.Погода» и заполнить небольшую анкету содержащую контактные данные, название компании и цели использования API. После этих действий ключ будет доступен в кабинете разработчика. 3 Составляющие API Яндекс.Погоды - актуальный прогноз; - история наблюдений; - дополнительные данные. 3.1 Актуальный прогноз Технология Meteum оценивает фактическую погоду и строит прогноз для любых координат на территории России. Компании могут получать и транслировать эти данные множеством способов, начиная с электронных писем и заканчивая виджетами в собственном интерфейсе. 3.2 История наблюдений Иногда важно понимать, что происходит с погодой в регионе, и как она влияет на бизнес-процессы. Яндекс располагает историческими данными по России, что позволяет нам при необходимости предоставлять усредненные показатели за последние 10 лет. 4. Внутренняя структура погоды 4.1 Что такое Погода В первую очередь это наш сайт pogoda.yandex.ru, там самое большое количество наших активных пользователей, на нём вы можете посмотреть погоду, погодные карты, прогноз погоды на сейчас, на 10 дней и так далее. Также вы можете найти погоду на главной странице, yandex.ru. Вторая по значимости причина захода на Яндекс — узнать погоду. У нас есть мобильное приложение. Еще нас показывают по новостям. Очень много и других потребителей — радио, Алиса в Яндекс.Станции, которую вы можете спросить о погоде. Что это в цифрах? Такое количество платформ дает нам большую нагрузку на API — около 50 тысяч RPS в довольно спокойные дни. Также это около 10 миллионов пользователей, которые каждый день приходят на Погоду, на наш сайт из разных источников. Весь сервис спроектирован так, что мы обслуживаем эти запросы за 30 миллисекунд в 99-м квантиле. Мы к этому результату очень долго шли, в частностипереход на Apphost в этом нам помог. Чаще всего к Погоде обращаются с вопросом, какая погода сейчас за окном, идет ли сейчас дождь или какая температура, чтобы было понятно, как одеваться. Второй по частотности юз-кейс — почасовой прогноз: люди заходят и смотрят, не начнется ли дождь и когда он закончится. Также мы предоставляем прогноз на 10 дней. Последняя фишка —наукаст осадков. Мы скачиваем радарные данные о том, где идёт дождь, и показываем прогноз того, где будут осадки в будущем. У нас есть и довольно много побочных данных — климат, температурные карты, но о них мы сегодня не будем говорить. 4.2 Как Погода устроена Как это устроено внутри? Казалось бы, такое количество информации о погоде очень сильно связано между собой, и данных довольно много. Внутри мы устроены довольно классически. Поставщики присылают нам данные, у нас поднята celery-очередь, к которой подключены обработчики на Python и C++. Эта celery-очередь работает поверх облачного Yandex Message Queue, который предоставляет интерфейс, похожий на Amazon SQS. Дальше эти все данные скачиваются и отправляются вYT. Это MapReduce-система для обработки, мне кажется, сверхбольших данных. Там данные складываются для обучения. Периодически туда приходят графы в Нирване.Нирвана - это система для организации распределенных вычислений. В частности, она очень часто используется для обучения формул. Нирвана по завершении графа сохраняет обычную модель в Yandex Object Storage. Оно очень похоже на S3, даже предоставляет API, совместимый с S3. Над этим облачным хранилищем развернут облачный PostgreSQL, который сохраняет метаинформацию, чтобы ее потом было удобно искать по моделям и сохраненным файлам. YT запускается и скачивает модель из объектного хранилища, у него уже есть на руках данные, он их применяет и загружает результаты применения обратно в наше облачное хранилище. Если перейти к цифрам, то от поставщиков в YT у нас скачивается примерно 5,25 терабайта данных. Это довольно много, но данные у нас в большинстве своем распространяются на весь мир. Самые большие по занимаемому месту — погодные модели ECMWF, GFS JMA. Меньше занимают показания со станций, которые предоставляют Foreca, NOAA, ВНИИГМИ. Данные со спутников, которых у нас два, Himawari и Meteosat, — тоже не очень большие, как и данные с радаров. Последние весят около мегабайта, но радаров порядка 20 и они присылают очень частотные данные. Каждый радар присылает их раз в три-пять минут. После применения у нас есть на руках около 500 гигабайт данных — температура, скорость ветра, UV-индекс и так далее, более 25 переменных. Все эти данные скачиваются нашим рантаймом, который обслуживает запросы. Этот рантайм поднят в Apphost, в него входит около 30 микросервисов, каждый из которых отвечает за свою область данных. Микросервис Meteum отвечает за прогнозные данные по температуре, а микросервис Nowcast — за прогнозируемые данные для карты Nowcast. Также есть Молнии, Климат, Предупреждения, Геолокация. Весь этот зоопарк микросервисов живет исходным кодом в едином репозитории, а рантайм развернут в нашем облаке. Над этим всем работает Apphost, про него уже тоже было сказано. Это аналог Service Mash, только он использует архитектуру вида «звезда»: все запросы замыкаются в Apphost, и он решает, в какие микросервисы он пойдет, как сделать запросы, что будет в момент отказа каких-то сервисов, куда пойти или не пойти. Чтобы общаться с Apphost, нужен интерфейс для клиентов. У нас этот интерфейс предоставляет API, который принимает запросы пользователей по REST и GraphQL и вызывает Apphost, чтобы он выполнил граф. Как это выглядит в продакшене? У нас тоже есть свой большой граф. На слайде его не полная версия, оранжевые квадраты — это подграфы, в которых лежат другие графы. Схема довольно сложная. Глядя на нее, можно увидеть: чтобы получить прогноз или текущую температуру, нам нужно опросить много сервисов, принять из них ответы, нормализовать их и отдать пользователю. 4.3 GraphQL или RESTApi? В ходе использования RestApi были выявлены следующие проблемы Ручная документация на вики Лишние данные в ответе Для разных клиентов слишком сильно отличаются параметры Протекание сложной логики запросов и перезапросов на клиент Переход на GraphQL позволил нам добиться уменьшения потребления в два раза на некоторых сервисах, получить больше доступных CPU и железа. Логика клиентов на фронте упростилась, теперь им не надо думать о том, откуда какие цифры передавать. Они запрашивают только то, что им нужно. 5 Достоинства и недостатки Достоинства Возможность получения большого объёма всевозможных данных, связанных с отслеживанием погоды Наличие активной поддержки пользователей в случае возникновения проблемы Простота использования при одиночных запросах Возможность добавления виджета Яндекс.Погоды на свой веб-сайт Недостатки Существенная стоимость покупки тарифа для использования на постоянной основе Ограниченность возможностей бесплатной версии |