Я думаю, что самый «практический» пример - фузианский пассажир и рельсовое приложение.
(Вид вводящего в заблуждение пассажира на самом деле является процессом apache mod_rails, который управляет многими приложениями ruby, которые спят / припаркованы).
Итак, вы разрабатываете приложение rails или приложение sinatra. Затем разверните его на веб-сервере с установленным пассажиром.
Лидером на самом деле является балансировщик нагрузки пассажиров.
Пассажир - это кто-то, посещающий веб-страницу.
Такси - это спящие экземпляры вашего приложения для рельсов в пуле устройств для пассажиров.
При установке этого пула на 45 (database.yml в приложении rails). Ваше высказывание, я хочу 45 такси, готовых обслуживать веб-страницы.
Когда кто-то посещает виртуальный хост, пассажир передает запрос одному из 45 приложений ожидающих рельсов. Приложениям не нужно взаимодействовать друг с другом, потому что все они подключены к одному и тому же бэкэнду базы данных (или несколько тоже возможно, если вы выполняете репликацию ваших данных).
http://www.modrails.com/.
Круто то, что хотя отдельным процессам может потребоваться некоторое время для обработки запроса, общая система действительно эффективна / быстра, потому что у вас есть 45 из них, готовых для обработки запросов. Таким образом, даже если первое такси (приложение rails) не вернулось с пути (обслуживает запрошенную страницу), второй ожидающий экземпляр в очереди можно использовать для следующего запроса. Как только первый завершается, он также возвращается в очередь, и таким образом вы можете быть отзывчивыми и легко получить 4000+ страниц / сек, даже если одно приложение rails может обрабатывать только 400 рег / сек. Конечно, существуют ограничения (объем памяти и т. Д. Для размера пула, в противном случае вы можете взять пул размером 200000 приложений rails), но на практике это работает очень хорошо ...