north_leshiy
@north_leshiy
Руководитель направления разработки

Можно ли написать балансировщик на PHP?

Нужно описать логику балансировщика загрузки файлов по нескольким нодам, можно ли это реализовать на PHP, и если да, то с помощью чего?
  • Вопрос задан
  • 355 просмотров
Пригласить эксперта
Ответы на вопрос 5
nazarpc
@nazarpc
Open Source enthusiast
Можно, но не нужно. Такое делают специализированные инструменты вроде HAProxy и в том же Nginx можно распределять нагрузку по нескольким backend-ам.
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
php для балансировки отдачи файлов... это хреновая затея, это ж stateless язык! А вот для контроля доступа, но балансировкой nginx-ом - это норм. Файлы можно шардировать через mogilefs, через php вытягивать урл шарда, а отдачу производить уже nginx-ом через X-Accel-Redirect
Ответ написан
Комментировать
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Балансировщика чего?
Ответ написан
Sanes
@Sanes
Что балансировать собрались? Что-то наверное можно, но это будет на основании какой-то статистики и может несложных правил.
Ответ написан
copist
@copist
Empower people to give
Я правильно понимаю, что вы планируете использовать несколько серверов с приложениями на PHP для upload файлов?

В этом случае балансировка для POST запросов аналогичная той же, как и для GET запросов, но каждый из серверов будет сохранять файлы в своей временной директории для загруженных файлов. Если пользователю вернуть URL на такой файл, то может случиться ошибка при отображении файла, когда при повторном прохождении через балансировщик будет выбран другой сервер.

Три варианта решения:
1. Возвращать пользователю ссылку на конкретный файловый сервер, чтобы раздавать обратно в обход балансировщика
2. Использовать центральное сетевое файловое хранилище, чтобы раздавать файлы с него
3. Использовать распределённое облачное хранилище, возможно с использованием CDN

Немного шевелящихся картинок :) https://www.dropbox.com/s/eiwhngo66fzq6hi/shared_u...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы