Динамическое регулирование пропускной способности
Я планирую настроить потоковый сервер.
Потоковая передача выполняется так, как это делает YT; там будет большое количество аудиоконтента, и каждый пользователь сможет прослушать его прямо на сайте. Для одновременного размещения большого количества пользователей я буду использовать небольшой кластер серверов.
Поскольку я буду использовать NGINX, он будет отвечать за распределение нагрузки на каждом сервере в равной степени (справедливая балансировка нагрузки, поскольку каждый сервер будет иметь одинаковые спецификации). Каждый сервер подключен со скоростью 1 Гбит / с.
Но так как у меня ограниченный бюджет, у меня не может быть слишком много серверов, поэтому я планирую иметь динамический газ (каждая песня будет иметь известный постоянный битрейт). Например. Если подключается 1 пользователь, ему доступна вся пропускная способность. Другой подключается и пропускная способность делится пополам и так далее, и так далее. Так что каждому пользователю предоставляется равное количество полосы пропускания. (Под пропускной способностью я подразумеваю скорость, с которой пользователь передает музыку на свой компьютер, например, 300 Кбит / с)
Регулирование должно продолжаться до тех пор, пока не будет достигнуто максимальное пороговое значение (1. В этот момент NGINX должен перенаправлять запросы на другой сервер или, если все достигло своего предела, вернуть сообщение об ошибке 503.
Решение должно быть основано на сервере, так как я буду арендовать выделенные ящики в центре обработки данных, и у меня не будет доступа к сетевому оборудованию (брандмауэр будет также выполняться через сервер). Я посмотрел на то, что предлагает NGINX, squidproxy и HAPROXY.
NGINX и HAPROXY, по-видимому, ограничивают только количество запросов от пользователей, а не скорость, с которой они загружаются. Squidproxy, кажется, ограничивает скорость, но это статически определено, например. Я могу ограничить каждого пользователя 640 Кбит / с, но если в данный момент подключен только 1 пользователь, остальная часть канала остается бездействующей.
Я продолжал искать решение уже 2 недели, но не могу найти то, что ищу. Возможно, я тоже не знаю правильной терминологии.
2 ответа
Решение состоит в том, чтобы использовать формирование трафика (в частности, гарантию минимальной пропускной способности) и эффективное распределение нагрузки - хотя это выходит за рамки ракетостроения - я знаю многих людей, которым платят большие деньги в качестве сетевых экспертов, которые не понимают формирование трафика должным образом. Вы не узнаете, как это сделать, прочитав некоторые ответы здесь и некоторые онлайн-уроки.
Каждый сервер подключен со скоростью 1 Гбит / с. Но так как у меня ограниченный бюджет,
Вы можете позволить себе подключение к Интернету с несколькими GBps, но не можете позволить себе много серверов? Я думаю, что один из нас смущен тем, что вы пытаетесь сказать здесь.
Я подозреваю, что большая проблема здесь - преждевременная оптимизация.
Привет Может быть, вы должны попробовать и использовать другой хороший веб-сервер под названием lighttpd
Прочитайте эту запись в блоге: Ограничение скорости