2. Кто-то еще пользуется gif?
МАСШТАБИРОВАНИЕ RAILS
Голубев Павел
Июнь 2009
20 июня 2009 г.
3. МАСШАТАБИРОВАНИЕ
Горизантальное
Увеличение производительности системы за счет подключения
дополнительных серверов.
Функциональное разделение.
Шардинг.
Вертикальное
Увеличение производительности за счет наращивания мощности
сервера.
20 июня 2009 г.
4. ОБЩИЕ РЕСУРСЫ
База данных
— Большое количество записей
— Функциональное разделение
Статика — Денормализация
— Файловая система
— Организация кеша Shared memory
— Распределенная ФС
Application сервера
— Как их незаметно деплоить
20 июня 2009 г.
5. ОБЩИЕ РЕСУРСЫ
База данных
— Большое количество записей
— Функциональное разделение
Статика — Денормализация
— Файловая система
— Организация кеша Shared memory
— Распределенная ФС
Секретарша
Application сервера — Длительный рабочий день
— Как их незаметно деплоить — Большая команда
— Месячные
20 июня 2009 г.
6. СТАТИКА
Файловая система
Много маленьких файлов?
Наш выбор — ReiserFS.
Древовидный кеш
/users/g/o/lubeff.html вместо /users/golubeff.html
Распределенная файловая система
Железо и DFS
NFS хорош, но есть нюансы
20 июня 2009 г.
7. NFS
Пишем только из одного места
Рельсы вообще не используем для генерации статики.
Вместо этого пишем простенькие крон-таски.
Пишем из разных мест, читаем только с master
Проксирование по url на уровне nginx.
20 июня 2009 г.
11. ОЧЕРЕДИ
Позволяет выполнить логику, не занимая rails
Получили запрос, отдали пустой ответ.
Через несколько секунд вычислили ответ, сообщили поль-лю.
Забудь про reload
20 июня 2009 г.
12. ОЧЕРЕДИ
Слишком много задач в очереди?
Запускаем множество демонов
20 июня 2009 г.
13. БАЗА ДАННЫХ
Выносим старые данные
Функциональное разбиение
20 июня 2009 г.
14. БАЗА ДАННЫХ
Денормализация
cards
characters
storage_id
storages
character_id
20 июня 2009 г.
15. БАЗА ДАННЫХ
Денормализация
cards
characters
storage_id
character_id
storages
character_id
20 июня 2009 г.