Я только что слушал http://www.zend.com/webinar/PHP/70170000000bAuS-webinar-php-performance-principles-and-tools-20100218.flv (Вебинар зенда о производительности PHP).
Я не могу понять то, что это средство фразы "Пытаются сделать Вас архитектурой более горизонтальный, а не вертикальный" (см. снимок экрана),
сопроводительный текст http://img2.pict.com/4e/4d/18/3358007/0/screenshot2b153.png
Спасибо.
Простой пример горизонтального масштабирования VS. вертикальное масштабирование только с помощью базы данных
Рассмотрим пример такого приложения: У приложения много клиентов, у каждого клиента есть несколько пользователей.
обновление: Клиенту не нужно знать о другом клиенте, каждый пользователь принадлежит исключительно одному клиенту.
Данные клиента хранятся в нормализованной базе данных на основе SQL. {{1} } учетные данные всех пользователей хранятся в таблице client_users.
Поскольку все учетные данные клиентов хранятся в этой одной таблице вместе с соответствующими данными , для поддержания или повышения производительности потребуется увеличить уровень вашей базы данных за счет дополнительных ресурсов или инвестировать в большее количество ведомых устройств для этого одного ведущего устройства.
Каждый клиент существует в схеме таблицы с префиксом.client_users становится client01_users
Кто-то со средним уровнем навыков администрирования БД может написать простой сценарий для копирования таблиц client # _ * на новый сервер БД примерно за 5 минут (затем еще час на проверку / тестирование / проверку работоспособности). ). Таким образом, вы можете подтолкнуть своих клиентов с низким трафиком к серверу с избыточным количеством мест и получить прибыль от экономии на инфраструктуре, одновременно взимая с клиентов с более высоким трафиком плату за выделенное оборудование.
Если вначале я вижу возможность ничего не делиться, я буду бороться изо всех сил, чтобы реализовать это. Для новых клиентов с проблемами масштабирования после заключения контракта мое первоначальное предложение будет включать рефакторинг для включения шардинга или принципалов без общего доступа. На мой взгляд, с дополнительной сложностью можно справиться, если правильно подойти / обработать.
Горизонтальная масштабируемость означает легкость добавления дополнительных серверов в вашу архитектуру.
Вертикальная масштабируемость представляет собой добавление дополнительных ресурсов к одному серверу (например, большего количества ЦП, ОЗУ ...).