среда, 14 апреля 2010 г.

Получение данных от сторонних сервисов

Интегрировали в наш портал блок с информацией о погоде для выбранного города от одного из провайдеров погодных данных.

Всё было хорошо, пока сервис работал. Однако когда у самого провайдера начались проблемы — его сайт был периодически недоступен, аналогичные проблемы начались и на портале. В очереди Tomcat'а накапливались соединения к сайту погоды, а учитывая, что они создавились при кажджом действии пользователя на странице, их было очень много. Соответственно увеличилось время загрузки страниц у пользователей и страницы им отдавались не полностью.

Решением было реализовать загрузку блока с погодой асинхронно от общего контента портала, не дожидаясь загрузки погодных данных, а так же установили таймаут, через который предпринималась попытка очередного соединения с сайтом погоды, если предыдущая не завершилась успешно.

Если в приложении используются какие-либо сторонние провайдеры данных, следуют не только проверить, что будет в случае недоступности сервиса, но и как поведёт себя приложение при недоступности такого сервиса, особенно в стрессовых условиях, под нагрузкой.