Общее·количество·просмотров·страницы

Java Dev Notes - разработка на Java (а также на JavaScript/Python/Flex и др), факты, события из АйТи

суббота, 20 ноября 2010 г.

HighLoad проекты на платформе Google App Engine

Выступление Михаила Кашкина на PyConf Киев 2010

http://app-engine.tumblr.com/post/1611919832

Стратегия генерации контента:
Вариант - вычислять результат в тот момент, когда к нему обращаются - подходит для небольших проектов с малой посещаемостью.
Если посещаемость вырастет в 1000 раз, то вычисления увеличатся в 1000 раз, что может положить ваш сервер.
Поэтому стратегия вычисления может быть такая: вычислять вещи в тот момент, когда они изменяются - а при запросе отдавать уже вычисленное значение.
Второй момент - клиентскую часть сделать приложением, которое само подгружает требуемые данные.
Статику сервер отдал, а динамические данные (те, которые нужно) подгрузит клиентская часть, обратившись к тому или иному API на сервере.
Следующая стратегия - выполнение всех вычислений в параллельном (фоновом) режиме.

Хранилище данных (datastore) - key-value, индексы, долгая запись, приемлемое чтение.
Мемкеш - данные там могут протухать. Данные в мемкеше должны быть слепком данных (копией) в datastore.

Места не должно быть жалко - пусть к нам приходит один и тот же объект, если нужно, мы должны его сохранить хоть в 10 разных видах (проекциях), чтобы имеь возможность быстро его отдать.

Устройство BlobStore:
разделяется на две части - загрузка блоба (объекта) и отдача блоба.
- генерация URL для загрузки объекта
- генерация URL для просмотра (получения) объекта

Google App Engine анонсировала новое API для использования server-push технологии, которое позволяет сильно разгрузить сервер от массы
так называемых poll-запросов, которые периодически проверяют, не появилось ли чего нового на сервере. Это Channel API.

Приемы работы от Михаила Кашкина:
1) Авторизация пользователей - не используются сесиии, вся инфа о пользователе хранится в куках.
2) Активные зоны (36-37-я минута выступления) - часть страницы заменяется уже на клиенте (например, вместо кнопок Авторизация появляется надпись "Привет, Вася, спасибо что залогинились")
3) Отображение аватара человека - аватар хранится в отдельном BlobStore
4) Отображение списка друзей - рендерится весь список друзей, на клиент выдается только дельта
5) Пагинация - непросто решается в БД типа key-value. Используется кнопка "Загрузить еще результаты"
6) Поиск по строке autocomplete -
7) Кеширование страниц - кешируются не только HTML-представления, но также и JSON-представления.

Гугл по письму увеличивает лимиты на CPU, память, запросы.

Комментариев нет:

Отправить комментарий

Постоянные читатели