Как эффективно транслировать большой файл из CMS на n клиентов в локальной сети - PullRequest
0 голосов
/ 09 января 2020

У меня есть мастер и n подчиненных устройств в локальной сети (WiFi) и CMS на inte rnet.

Мне нужно иметь возможность загружать / загружать мультигигабайтный видеофайл из CMS на всех подчиненных, выбрав его на ведущем. Трафик c в ЛВС должен быть зашифрован, шифрование в ЛВС было бы неплохо иметь. Если какое-либо ведомое устройство отбрасывает пакет, оно должно иметь возможность запросить его либо у CMS, либо у другого ведомого устройства. Все устройства в локальной сети являются планшетами под управлением android. Ведущий должен иметь возможность инициировать распространение видеофайла, расположенного на сервере в формате inte rnet, всем подчиненным. Эта передача файлов должна быть максимально быстрой. Сервер будет настроен заново, поэтому он может работать в основном что угодно.

Internet ------------------------> WLAN
   |                                |
   |                                +----Master
  CMS                               +----Slave-1
  holds large file                  +----Slave-...
                                    +----Slave-n

На мой взгляд, есть 4 способа сделать это:

  1. (Trivial) Дайте рабам имя файла и пусть они скачивают файл по отдельности. Количество traffi c: O (n * размер файла)
  2. (Trivial) Загрузите файл на мастер, и подчиненные загрузят его с мастера, а не с inte rnet. Traffi c Inte rnet: O (размер файла), Traffi c LAN: O (n * размер файла)
  3. Загрузите файл в мастер и передайте его всем клиентам. Сумма трафика c: O (2 * размер файла)
  4. Использовать что-то для трансляции файла в локальной сети. Поскольку WiFi является общей средой, теоретически каждый пакет должен отправляться только один раз, а traffi c должен иметь значение O (размер файла).

В то время как решение 1 было бы просто реализовать с помощью, например, загрузок scp это будет ужасно медленно и неэффективно. Я надеюсь внедрить решение 4, если это возможно, но я не знаю ни одной доступной технологии, способной сделать это «из коробки». Какие способы достижения трансляции описаны в 3 и 4?

1 Ответ

0 голосов
/ 09 января 2020

Специфика имеет значение здесь. Вы можете терпеть потерю некоторых данных? Сколько клиентов? Какая платформа совместимости у вас должна быть?

Для этого ответа предположим, что вы не можете терпеть потерю данных. Из-за этого ваш вариант многоадресной рассылки не возможен. Невозможно сказать, сможет ли конкретный клиент идти в ногу с потоком. Нет никакой гарантии, что пакеты даже попадут на устройство.

Теперь давайте предположим, для платформ, которые вы хотите сделать веб-ориентированными. Опять же, удар по многоадресной рассылке.

Хотя есть простое решение ... торренты. В частности, если вы используете WebTorrent , он использует зашифрованные каналы данных WebRT C. Вы можете сделать еще один шаг и зашифровать содержимое, если хотите, и поделиться ключом с помощью других средств.

Несколько клиентов подключатся напрямую к вашему серверу, а другие клиенты загрузятся через локальную сеть. Вам не придется беспокоиться о проблемах доступности, поскольку ваш сервер будет по-прежнему доступен при необходимости.

...