Павел Голубев - "Масштабирование rails"

17
МАСШТАБИРОВАНИЕ RAILS Голубев Павел Июнь 2009 20 июня 2009 г.

Upload: railsclub

Post on 16-Jun-2015

1.379 views

Category:

Technology


6 download

DESCRIPTION

RailsClub'Moscow (2009.06.20). Павел Голубев - "Масштабирование RAILS".

TRANSCRIPT

Page 1: Павел Голубев - "Масштабирование RAILS"

МАСШТАБИРОВАНИЕ RAILSГолубев ПавелИюнь 2009

20 июня 2009 г.

Page 2: Павел Голубев - "Масштабирование RAILS"

МАСШТАБИРОВАНИЕ RAILSГолубев ПавелИюнь 2009

Кто-то еще пользуется gif?

20 июня 2009 г.

Page 3: Павел Голубев - "Масштабирование RAILS"

МАСШАТАБИРОВАНИЕ

ГоризантальноеУвеличение производительности системы за счет подключения дополнительных серверов.Функциональное разделение.Шардинг.

ВертикальноеУвеличение производительности за счет наращивания мощности

сервера.

20 июня 2009 г.

Page 4: Павел Голубев - "Масштабирование RAILS"

ОБЩИЕ РЕСУРСЫ

Статика— Файловая система— Организация кеша— Распределенная ФС

Application сервера— Как их незаметно деплоить

База данных— Большое количество записей— Функциональное разделение— Денормализация

Shared memory

20 июня 2009 г.

Page 5: Павел Голубев - "Масштабирование RAILS"

ОБЩИЕ РЕСУРСЫ

Статика— Файловая система— Организация кеша— Распределенная ФС

Application сервера— Как их незаметно деплоить

База данных— Большое количество записей— Функциональное разделение— Денормализация

Shared memory

Секретарша— Длительный рабочий день— Большая команда— Месячные

20 июня 2009 г.

Page 6: Павел Голубев - "Масштабирование RAILS"

СТАТИКА

Файловая системаМного маленьких файлов? Наш выбор — ReiserFS.

Древовидный кеш/users/g/o/lubeff.html вместо /users/golubeff.html

Распределенная файловая системаЖелезо и DFS

NFS хорош, но есть нюансы

20 июня 2009 г.

Page 7: Павел Голубев - "Масштабирование RAILS"

NFS

Пишем только из одного местаРельсы вообще не используем для генерации статики. Вместо этого пишем простенькие крон-таски.

Пишем из разных мест, читаем только с masterПроксирование по url на уровне nginx.

20 июня 2009 г.

Page 8: Павел Голубев - "Масштабирование RAILS"

КАК ДЕПЛОИТЬ

Вариат 1. Nginx

20 июня 2009 г.

Page 9: Павел Голубев - "Масштабирование RAILS"

КАК ДЕПЛОИТЬ

Вариат 2. No restart, baby!

20 июня 2009 г.

Page 10: Павел Голубев - "Масштабирование RAILS"

ОЧЕРЕДИ

Front-end:

Back-end:

20 июня 2009 г.

Page 11: Павел Голубев - "Масштабирование RAILS"

ОЧЕРЕДИ

Позволяет выполнить логику, не занимая railsПолучили запрос, отдали пустой ответ.Через несколько секунд вычислили ответ, сообщили поль-лю.

Забудь про reload

20 июня 2009 г.

Page 12: Павел Голубев - "Масштабирование RAILS"

ОЧЕРЕДИ

Слишком много задач в очереди?Запускаем множество демонов

20 июня 2009 г.

Page 13: Павел Голубев - "Масштабирование RAILS"

БАЗА ДАННЫХ

Выносим старые данные

Функциональное разбиение

20 июня 2009 г.

Page 14: Павел Голубев - "Масштабирование RAILS"

БАЗА ДАННЫХ

Денормализация

cardscharacters

storages

character_id

storage_id

20 июня 2009 г.

Page 15: Павел Голубев - "Масштабирование RAILS"

БАЗА ДАННЫХ

Денормализация

cardscharacters

storages

character_id

storage_idcharacter_id

20 июня 2009 г.

Page 16: Павел Голубев - "Масштабирование RAILS"

www.play-me.ru

20 июня 2009 г.