Pull to refresh

Comments 23

И на какой еще планете этот сайт можно открыть?

Ну… maidsafe вроде как отдупляет, и сие интересней, чем то, о чем статья.
А если нужно самый быстрый сайт (из многих точек мира), то есть cloudflare.

Вот кстати интересно есть ли CloudFlare в Норильске?

Я воспользовался данным сервисом для 24 часового онлайна. Но в малонаселённых пунктах с медленным интернетом сомневаюсь что CloudFlare позаботится поставить свои сервера. Они держатся на слепом доверии что не будут вмешиваться в то что я через них публикую.

IPFS клиенты и соответственно шлюзы могут быть в каждой локальной сети. Считайте это такой народный CDN. Поскольку содержимое идентифицируется мультихешем IPFS может проверить что получает от других клиентов именно то содержимое которое я опубликовал.

По поводу MaidSafe ничего не могу сказать. Я и IPFS недавно только начал изучать.

Если я правильно понял карту серверов CloudFlare (https://www.cloudflare.com/network/), то из всей России они есть только в Москве.

maidsafe — будет представлять из себя десятки тысяч нод по всему миру, где инфа продублирована несколько раз. Как днс ориентированный хостинг не прокатит, но для анонимного размещения материала и p2p идеи самое то.


На счет cloudflare и населенные пункты — не уверен, что будут ставить, но весь мир и основные города стабильно (а из больших городов есть линки в маленькие). На счет контроля траффика… приведите пример, когда cloudflare вмешались во что-то, они даже радикальный сайт не закрыли.

Автор, было бы неплохо в начале статьи написать что это вообще такое IPFS и для чего «сие» нужно.
Я прочитав всю статью целиком, только в конце понял о чем речь.
Немного не по теме конкретно этой статьи, но есть вопрос по IPFS.

Я сейчас экспериментирую со связкой IPFS+Webtorrent и мне не очень нравится результат. Напрягает падение самого демона IPFS при высокой частоте запросов к нему. Webtorrent-плеер играет видео через webseed, пока ты первый, кто смотрит его. Webseed-урл в торрент-файле указывает как раз на IPFS-хеш. Всё работает нормально только какое-то время, пока количество range-запросов к IPFS не упирается в какой-то непонятный мне потолок и демон падает. Перезапускается супервизиром, но этот downtime останавливает стрим, плеер получает 502 и ничего больше не работает, нужна перезагрузка страницы. Опытным путём выяснил, что демон очень жадный и хочет весь CPU на моём бедном микроинстансе. Я увеличил CPU/RAM дроплета, стало лучше. Но это пока клиент стримит только одно видео. Моя идея ещё и в том, чтобы webtorrent продолжал раздавать медиа-файл уже своими средствами, в фоне, после переключения воспроизведения на что-то другое. В итоге вопрос — сколько ж нужно IPFS-демону для нормальной жизни, если я уже дважды увеличивал инстанс и больше (по бюджету) не хочу? И вдогонку — есть ли какой-то список публичных шлюзов, чтобы я как-то балансировал нагрузку? Спасибо.
Я тоже эксперементировал с IPFS + ( WebTorrent и Bittorrent ) и выяснил что последовательная загрузка ему даётся легче. Я предпологаю что IPFS клиент проверяет при каждом запросе хеш блоков даже из кеша.

Вы можете прикрыть свой шлюз кеширующим прокси чтобы снизить нагрузку. На данный момент IPFS для WebTorrent бесполезен в виде локального шлюза т.к. в настройках по умолчанию нет разрешения для range запросов. Но стоит добавить локальный шлюз в магнит или торрент на будущее. И инструктировать пользователей как его установить и настроить.

Из публичны шлюзов я знаю только gateway.ipfs.io или ipfs.io. Можно пройтись по пирам в сети и найти с открытым наружу портом шлюза но это не правильное использование IPFS.

Правильное использование сети IPFS это когда у каждого пользователя стоит IPFS клиент.

Я в будущем может пороюсь в клиенте и попробую найти и выключить перепроверку хешей если запрос идёт от WebTorrent и Bittorrent.
Спасибо за развёрнутый ответ.

Я уже установил nginx в роли прокси, с кешированием. Мне это не особо помогло. Да и хочется быть ближе к основной идее — безсерверному ресурсу.

IPFS с range-запросами работает хорошо. Только падает в итоге :) Клиент у меня сначала пытается достучаться к локальному демону, если его нет — то к шлюзу на моём инстансе. В целом всё оно работает. Но ощущение общей сырости не даёт покоя. Или я что-то делаю не так, или Go-имплементация далека от стабильной версии.

Но если оставить в покое видео и стримить более лёгкий статический контент, то всё прекрасно. Что-то в этом есть.

Для IPNS в текущей версии клиента кеширование не включено. То есть не отдаются хедеры "Etag" и "Cache-Control".


Я исправил у себя отдачу "Etag"


 core/corehttp/gateway_handler.go | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/core/corehttp/gateway_handler.go b/core/corehttp/gateway_handler.go
index c35431c..d69d8a9 100644
--- a/core/corehttp/gateway_handler.go
+++ b/core/corehttp/gateway_handler.go
@@ -177,7 +177,7 @@ func (i *gatewayHandler) getOrHeadHandler(w http.ResponseWriter, r *http.Request
        return
    }

-   etag := gopath.Base(urlPath)
+   etag := pbnd.Key().B58String()
    if r.Header.Get("If-None-Match") == etag {
        w.WriteHeader(http.StatusNotModified)
        return
@@ -216,8 +216,10 @@ func (i *gatewayHandler) getOrHeadHandler(w http.ResponseWriter, r *http.Request
    // and only if it's /ipfs!
    // TODO: break this out when we split /ipfs /ipns routes.
    modtime := time.Now()
+
+   w.Header().Set("Etag", etag)
+
    if strings.HasPrefix(urlPath, ipfsPathPrefix) {
-       w.Header().Set("Etag", etag)
        w.Header().Set("Cache-Control", "public, max-age=29030400, immutable")

        // set modtime to a really long time ago, since files are immutable and should stay cached
Это чудесно, всё никак не попробую. А вы делали им pull request? Всё же хочется получить на выходе одну имплементацию-стандарт, а не кучу форков.

Я сделал один пул реквест с исправлениями определения скрытых файлов под Windows. Но после того как отправил оказалось что его подписать надо. А потом ещё место с ошибкой нашёл. Пул реквес делал с сайта так как изменений был мизер. Как его поправить теперь не знаю.


Гуглу вон тоже отправил пул реквест и они тутже захотели чтоб я им документик подписал.


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


В общем надо изучать эти процессы.

Уточню что я не состаю в команде разработчиков. Я только изучаю этот клиент. Возможно я смогу отправить им свои изменения кода но сколько они будут висеть до принятия не известно.
Читал другие ваши статьи, знаю, что вы тоже пробовали webtorrent+ipfs, поэтому наверняка сталкивались с теми же проблемами и может как-то удалось их обойти. Судя по всему, в этом клубе нас двое.
Много ресурсов сжирает демон?
Побочный вопрос:
tk продолжает раздавать бесплатные домены? С продлением за 19$?
Двухядерный AMD 2.30 GHz.

В простое от 0 до 15 процентов прыгает. Пока большой блок отдаёт до 50 прыгает на пару секунд. Памяти 720 МБ сьел. Но это при последовательном проигрывании видео в браузере.

При сохранении видео на диск скорость прыгает с 1МБ/с до 5МБ/с. Загрузка процессора прыгает от 10 до 80 пстоянно. Памяти сьел 1ГБ.

При случайной загрузке торентом скорость от 200КБ/с до 700КБ/с. Загрузка процессора от 50 до 90 изретка падая до 0. Память 900МБ.

Видео: Первый день осени
Продолжают. У меня стоит минимальная цена Upgrade'а на 1 год 9.95$. 2 года — 19.90$

Добавил новую информацию:


Публикацию через ID нужно использовать когда сайт часто обновляется. IPFS клиент через который публикуется контент должен быть постоянно включен или выключаться на небольшие промежутки времени. За день offline у меня клиент забыл привязку id -> мультихеш. Видимо привязка храниться только в DHT.
Sign up to leave a comment.

Articles