Обратный туннель s sh для p2p загрузок - PullRequest
4 голосов
/ 28 мая 2020

Я ищу решение, в котором я использую удаленный клиент BitTorrent на облачном сервере, а затем загружаю файлы в локальную систему через http. Ожидается, что это улучшит мою полосу пропускания и преодолеет черный список моего IP (предположим, если я нахожусь за прокси). Мое решение было бы точно таким же, как seedr. cc. Еще одно улучшение, которое я хочу предложить, заключается в том, что файлы / каталоги должны загружаться локально по частям (клиентское приложение) одновременно. Это также можно сделать очень легко, если моим решением является клиент-серверное приложение. Теперь реальный вопрос: предположим, хочу ли я вообще загружать файлы / каталоги не на сервер, а на клиентов напрямую, без подключения удаленного диска (клиентского диска). Здесь помните, что сервер используется только для сети, хранилище не используется вообще. Знаете ли вы что-нибудь, что может помочь?

Ответы [ 3 ]

3 голосов
/ 02 июня 2020

Для ясности позвольте мне сначала описать вашу топологию.

Вы создаете сервер и несколько клиентов, клиенты могут загружать файлы с помощью p2p. И вы хотите, чтобы клиент мог загружать файл как с сервера, так и с других клиентов, чтобы увеличить скорость.

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

Во-вторых, если эта топология может вам помочь, то вы можете построить такие системы.

  • Требуется обход NAT, это основная c связь p2p. Вам может понадобиться natpmp, upnp или ICE. Поскольку у вас есть сервер, возможно, ICE лучше.

  • LSD и DHT помогут вам найти других клиентов.

  • протокол связи между узлами необходимо для подключения к другим одноранговым узлам и загрузки файлов.

Существует проект с открытым исходным кодом под названием libtorrent, который может вам помочь. Он строит всю систему, вы можете использовать ее или построить свою собственную, изучив ее.

Что касается загрузки как сервера форм, так и клиентов, там должен быть дизайн однорангового менеджера, что относительно сложно, и я не могу короче, вам нужно сделать много примеров и оптимизацию самостоятельно.

1 голос
/ 06 июня 2020

ну, "rsyn c" в названии немного вводит в заблуждение, и здесь вы сталкиваетесь с несколькими проблемами: удаленный компьютер должен быть доступен ... поэтому наличие "активного туннеля" обратно к вашим клиентам будет тяжелая задача

для входящей части: вы можете использовать lftp для торрентов https://lftp.yar.ru/torrent.html и разделять это для каждого пользователя, также помогая вам с квоты и т.д. c. , предложение: используйте его на экране или byobu сеансе

для загрузки части:

  • возможно используйте ramdisk (mkdir /tmp/ramtamtam;mount -t tmpfs /dev/null /tmp/ramtamtam/ -o size=64M) и позвольте клиенту получить доступ к этому
  • используйте archivemount https://github.com/bramp/archivemount и отправьте его клиенту
  • используйте внешних провайдеров, таких как mega с rclone, и позвольте клиентам получить доступ к этому
  • аккуратный optoin позволит клиентам получить доступ к торренту на вашем сервере через сам торрент с настраиваемой ссылкой ma gnet, и добавьте это к работающему сеансу lftp, поскольку загрузка на 100%, для этого вы можете использовать https://webtorrent.io/
  • , загрузка через http также может быть достигнута с помощью lftp s mirror команда
0 голосов
/ 06 июня 2020

Bittorrent-клиенты обычно требуют произвольного доступа к данным, которые они передают, поскольку они загружают и выгружают одновременно и должны обслуживать случайные запросы от удаленных узлов. Это означает, что если вы используете сетевую файловую систему, то производительность BitTorrent-клиента будет ограничиваться пропускной способностью загрузки и скачивания и задержкой хоста, предоставляющего хранилище. Это, вероятно, снизит производительность, которую в противном случае мог бы достичь облачный экземпляр.

Вместо этого вы могли бы использовать облачный экземпляр (отныне сервер) с временным хранилищем в качестве ускорителя. Этого можно достичь, разрешив как серверу, так и локальному клиенту реализовать BitTorrent, но отдав предпочтение пропускной способности от сервера к клиенту. Таким образом, сервер будет загружать данные от других одноранговых узлов и одновременно передавать их клиенту. Сервер может сохранять торрент из своего временного хранилища до тех пор, пока он не будет перезагружен.

...