поиск по ТТН и магнеткам ищет и у днт-юзеров, по названию - только по открытым хабам
По названию — это уже DKT. Наверное, лучше бы сделать распределённый DC–трекер с афишами. Взять Inferno, взять библиотеку http и сделать распределённый ресурс, как в USENET.
Сообщение отредактировал OCTAGRAM - Вторник, 29.11.2011, 06:25
Ну если содержимое панели передач будет публиковаться с наивысшим приоритетом по сравнению с обычной шарой, то хотя бы новинки будут растекаться быстрее
Quote (hmury)
что-то не соображу, как это будет выглядеть с точки зрения пользователя
Я вот думаю такую систему: сейчас провайдеры ставят независимые магнитные порталы, и то, что есть у одних, не оформлено у других, хотя и есть у кого–то на хабе.
Узлы Prism Tower (так я собираюсь назвать софт портала), стоящие у провайдеров или у энтузиастов, синхронизируют друг у друга афиши и магнитные ссылки. Далее, специальный бот, запущенный внутри всё той же Inferno, сидит на локальных хабах, на которые его натравили админы узла, качает списки файлов юзеров и обновляет статус мёртвости/живости афиш. Если какая–то афиша, созданная на другом узле, имеет TTH, который в нашей сети никогда раньше не появлялся, на портале эта афиша публикуется как только что появившаяся. То есть, юзер одной сети скачал через глобальные хабы или даже через торренты файл у юзера другой сети, третий юзер в третьей сети когда–то давно оформил этот файл — и, вуаля, оно публикуется на портале. Разумеется, должна быть и возможность смотреть неживые афиши. Кроме афиш можно, допустим, иметь ещё и форумы с блогами, или систему распространения видеороликов, если только это не отключит админ узла.
Возможность поставить такой узел должна быть и у простых юзеров тоже, для индивидуального пользования.
Inferno становится актуальной по мере того, как web становится асинхронным. node.js однопоточный, и нужно городить лапшу из обратных вызовов, чтобы воспользоваться асинхронностью. Inferno использует многочисленные зелёные потоки, которые пишутся в синхронном блокирующем стиле. Код получается чистый, более понятный, без ущерба для виртуальной памяти и производительности. node.js имеет проблемы с Windows, Inferno — нет. node.js имеет глобальный сборщик мусора, который к тому же плохо работает с буферами. В Inferno сборщик мусора тоже есть, но основная часть мусора собирается сразу, при достижении счётчиком нуля ссылок. Как результат, Inferno работает гладко, без больших пауз на сборку мусора. Правда, конкретных сравнений производительности у меня нет. Было бы неплохо иметь в этой статье и Inferno тоже.
Позиционирование Inferno как OS и непозиционирование Inferno как web–сервера с зелёными потоками, возможно, было ошибкой, ставшей причиной непопулярности. Те, чьё внимание притягивалось, отворачивались, а те, кто не отвернулся бы, не притягивались.
Вот возьмём, допустим, всё тот же node.js. Mы не видим у него никакого GUI. Просто REPL и всё. Мы пишем на нём web–сервер типа Cloud9 IDE, юзер видит именно красивую web–часть. У Inferno же эта GUI–часть как бы есть, и она ужасна. Inferno позиционировалась как OS, но это хреновая OS. Acme, который позиционируется аргументами, аналогичными пропаганде Emacs, для меня невыносим. Там можно кликнуть по меню и случайно стереть его. Ненавижу такие приколы с интерфейсом. Браузер Charon — что–то с чем–то. Я ему нашёл применение для I2P, а ещё из него реализацию JavaScript выдрали, хоть чем–то, но полезен. Но так вообще, конечно, тяжеловато угнаться за современными браузерами. Однако, если мы не будем смотреть на GUI, а начнём показывать юзеру только HTTP, сайт будет настолько красив, насколько красив дизайн.
Я оценивал Inferno с разных сторон. У Inferno неважная поддержка баз данных. Чтобы работать с БД, нужно запускать отдельный процесс на основной системе, который через ODBC будет работать с БД и по протоколу 9P (Styx) обслуживать процесс Inferno. Это значит, надо ещё и ODBC настроить. В проекте LimboMachine я ещё видел клиент PostgreSQL, не знаю, насколько законченный.
Впрочем, я думаю, это занятие нужно оставить тем, кому зачем–то понадобится интеграция с существующей базой данных, а для внутренних нужд Prism Tower использовать банально файловую систему. В Inferno, как и в Plan9, VFS воистину virtual, а не как в линуксах, все плюшки только для рута. У каждого процесса может быть своё видение файловой системы, процессы могут влиять на это видение, а в системной оболочке есть специальные команды, позволяющие монтировать, биндить и экспортировать по протоколу 9P(Styx) файловые системы. Я думаю, для начала хватит того, что мы будем создавать пустой файл, монтировать KFS и использовать её для хранения данных в формате ключ–значение. KFS защитит нас от особенностей host OS, что касается исчерпания inode, максимальной длины путей, чувствительности к регистру, скорости создания файла и прочего.
Клиент, подключающийся к хабу, будет экспортировать файловую систему так же ircfs. Наверное, этот ircfs и стоит взять за основу. Web–порталы сейчас обычно слабо связаны с хабами, но с таким подходом можно будет из web отправлять в личку сообщения, обозревать шару юзера, чтобы выбрать файл.
Сообщение отредактировал OCTAGRAM - Четверг, 01.12.2011, 20:45
Узлы Prism Tower (так я собираюсь назвать софт портала), стоящие у провайдеров или у энтузиастов, синхронизируют друг у друга афиши и магнитные ссылки.
юзерам это нафиг не надо, что показала введённая в грей "система релизов". порталам это тем более не надо, потому что кто-то привлекает рекламный трафик, собирая у себя релизеров, как-то их поощряя и т.п., а кто-то будет нахаляву реплицировать афиши и получать трафик нахаляву. в результате сайты, генерирующие контент, не будут включаться в сеть, чтобы не терять прибыль
Да эта система релизов убога, скрыта где–то внутрях, реализовано чёрт–те как, я не могу сходу бота сделать, чтоб новости показывал, в частности, кроме грея больше и не реализовано нигде. И на релизы эти нельзя дать ссылку, чтоб юзер без клиента прочитал и захотел поставить клиент
Что касается контента, то давайте будем честны, это очень часто фильмы и сериалы, и афиши для них проще всего передирать с кинопоиска. А я постараюсь, чтобы это было возможно. Далее, можно, допустим, собирать всё с того же кинопоиска список новинок и по названию отслеживать появление в шаре. Через GreyLink или FlyLink можно узнать параметры видеофайла, юзеру остаётся только предложить указать качество видео и озвучки. Заодно можно фейкеров ловить за руку, если такие боты на нескольких компьютерах ещё работать будут. Текущие порталы сделаны на php, который живёт только во время запроса. Возможности интеграции портала и ботов не реализованы. В торрентах описанная схема и вовсе невозможна.
Найдутся сетки, допустим, студенческие, где найдутся энтузиасты, которые поднимут сервис для народа. Если удастся набрать критическую массу, будут подтягиваться мелкие провайдеры с хабом, не исключено, что через энтузиастов поначалу, опять же, где на некрупном хабе поставили Prism Tower, и начнётся совсем другая жизнь.
Сайты тут действительно могут быть не в выигрыше. Это сервис для народа, а не для халявщиков, удачно собравших аудиторию. Релизёрам профит — их релизы пойдут на пользу людям, а не третьим лицам. Плюс, найдутся сайты, на которых p2p каталог как бы не главное, но можно и добавить. Вот mail.ru новости публикует чужие, нет у них своих журналистов, и материал не уникальный и неоригинальный, но юзеры всё равно читают, потому что любят всё в одном месте. Также и тут может получаться добавка к чьёму–то порталу.
Сообщение отредактировал OCTAGRAM - Пятница, 02.12.2011, 22:08
попробую сформулировать основополагающие вопросы по системе и ответить на них.
1. какие задачи решает Prism Tower
a) информирование пользователя о новинках
замечание. я не пользуюсь списком новинок rutracker-а, а хожу на локальный torrent-портал. потому что две страницы новинок в день мне просмотреть комфортно, причём весь более-менее интересный контент там есть, а мониторить весь rutracker и трёх жизней не хватит
b) каталог файлов в dc++ шарах, хорошо оформленный, рассортированый
замечание. минимальную инфу можно получить через обычный dc-поиск, а чем глубже детализировать, тем больше конфликтов при слиянии потоков данных. один портал охарактеризовал фильм как комедию, другой - как драму, и кто прав?
c) устойчивость благодаря децентрализации
(забегая вперёд) установка узлов сети у пользователей необычайно расширит мощности сети, но усложнит саму сеть - дц-клиенты должны подтягиваться. если же клиенты будут пользоваться PT как внешним сервисом, интегрировать это в них будет намного проще
2. архитектура
компоненты Prism Tower располагаются на http-порталах и хабах. фантазировать особо не буду, лучше OCTAGRAM напишет, какой компонент за что отвечает и как они взаимодействуют
3. протокол
есть разные варианты:
a) open-source команда выдумывает протокол, пишет реализации, все пользуются - profit b) заинтересованная команда делает свои закрытые реализации, ожидая получить конкурентное преимущество (как релизы в greylink). в итоге никому это не нужно, все плюются c) протокол открыт, обсуждается, утверждается. кто угодно реализует его по схемам a), b), но в отличие от чистой схемы b) другие проекты не смогут заявить, что тут какое-то проприетарное закрытое гавно и мы не будем даже пытаться на него смотреть
Как я понял из написанного в системе участвуют 4 типа персонажей: 1. рилезер оформляет релиз через веб интерфейс ДС трекера 2. ДС трекер централизует релизы и спрашивает раз в час посредством Prism Tower у пользователя данной системы: "а у вас на хабе есть 100499 релизов?" 3. пользователь данной системы (он же бот на хабе, настроенный админом) качает разом у всех файл листы, формирует БД всех магнеток на хабе (супер-файл лист) и сравнивает это все с запросом хаба и говорит: "у меня есть 50049 релизов". ДС трекер обновляет релизы, в часности помечает - этот файл есть на таком то хабе и еще на 100 вот таких то хабах у 1000 пользователей". 4. простой пользователь заходит на один из ДС трекеров, которые между собой еще синхронизируют релизы и ответы пользователей Prism Tower, и смотрит "бааааа - такой то файл есть на этом задрипанном хабе..." ничего не упустил в представленной идее?
разве что представление "релиза" не как одиночного TTH, а как набора файлов. неплохо бы для хаба завести графу "Availability", как в торренте: целая часть - у скольких юзеров релиз есть полностью. дробная часть - какую часть от всего релиза можно собрать по юзерам, у которых он представлен не полностью
у меня единственное пожелание к данной системе - качать файл листы не раз в час. А отслеживать изменения на хабе: зашел юзер - качаем с него файл лист, запоминаем его точную шару и раз в час смотрим - не изменилась ли его точная шара.
один портал охарактеризовал фильм как комедию, другой - как драму, и кто прав?
Предполагается, что когда один портал опубликовал описание, а, если делать это через кинопоиск, то, скорее всего, ещё без ссылок, на остальных это описание незамедлительно появится. Соединения раз в час — для времён ФИДО, сейчас можно постоянные держать. Жанры надо брать с кинопоиска, их должно быть несколько.
Что касается разрешения конфликтов, можно посмотреть реализацию NNTP и IRC, почерпнуть идеи из них. В целом, я склоняюсь к тому, чтобы система была децентрализированной, распределённой, но закрытой. То есть, кто–то посторонний не должен иметь возможность заспамить или завайпать портал, но при всём при этом система не должна быть «злой», жёстко отделяющей элиту от неэлиты. Как NNTP, IRC и RetroShare, в противоположность DHT, Gnutella2, SMTP. Граф связей получается не стихийно, автоматом, а админ каждого узла выстраивает связи. В идеале сеть единая, но, по замыслу, она может размыкаться, хоть это и не желательно. Несколько сетей частных лиц могут однажды слиться и обрасти избыточными связями.
Админы узлов вручную устанавливают друг с другом связи, определяя свои круги доверия. По каким–то линкам информация свободно идёт, где–то модерация включена. Где–то для тысячи пользователей узел, где–то для одного. Частные лица, ставящие узлы для индивидуального пользования, тоже устанавливают какие–то связи друг с другом, кому они могли бы доверять. Как и в случае с NNTP, сеть должна иметь возможность отслеживать путь распространения информации, но, так как есть ещё и копирасты, которые слишком обрадуются этой информации, нужно шифровать путь при переходе по некоторым линкам. При этом шифрующийся узел отвечает за модерацию, и должен иметь возможность при жалобах восстановить свою часть шифрованного пути. Ну или модерировать информацию на стороне получателя.
Частные лица, в однопользовательском режиме эксплуатирующие свой узел, тоже вручную выстраивают свои линки с теми, кому доверяют. Никакой хрен с горы, такой красивый, не должен иметь возможность прийти и безнаказанно засорять сетку спамом или фейками. Будет видно, через кого он подключился. Непосредственно своими действиями он подставляет друзей и, в меньшей степени, всех промежуточных друзей, кто–то из которых, если ситуация по–хорошему не нормализуется, начинает рвать линки или включать модерацию на этом линке. Ответственность. Есть, что терять.
До того, как эти меры станут актуальны, пройдут годы, но, как показывает опыт Gnutella, если протокол популярен, рано или поздно станет. Распределённые порталы уже существуют, но не для DC. Надо всеми ними висит дамоклов меч отсутствия распределённой модерации.
Quote (hmury)
компоненты Prism Tower располагаются на http-порталах и хабах. фантазировать особо не буду, лучше OCTAGRAM напишет, какой компонент за что отвечает и как они взаимодействуют
Скорее всего, весь Prism Tower будут ставить на тот же сервер, что и http–портал. Сам http–портал и должен быть частью Prism Tower, но, предположительно кому–то захочется в свой look-n-feel интегрировать сервис, тогда, допустим, как у Яндекс.Сервер, делается JSON или XML интерфейс, через который делаются базовые запросы, которые прослойка, допустим, на php, отображает в общем стиле сайта. В этом случае портал и Prism Tower могут оказаться на разных серверах.
Так как в Prism Tower своя реализация http, а на серверах, как правило, 80й порт уже занят Апачем, то нужно будет либо в Apache настраивать mod_proxy, либо использовать Squid для обратного проксирования, как у меня, либо, обратное проксирование ещё есть в nginx.
Кроме http, пишутся боты для разных целей с разными алгоритмами. Одни боты могут качать списки файлов, другие — делать запросы по TTH новинок и по именам файлов. Причём, разные боты могут работать от имени одного DC-юзера.
Много пробелов ещё, не сделанных решений. Скажем, имело бы смысл дать возможность пользователям, зарегистрированным на крупном портале, публиковать на портал со своего домашнего узла, но только в ручном режиме. То есть, публикация друга, которому юзер доверяет, автоматически не пройдёт на портал даже на модерацию.
зашел юзер - качаем с него файл лист, запоминаем его точную шару и раз в час смотрим - не изменилась ли его точная шара.
Даже более того, можно делать при изменениях частичные запросы всех корневых директорий, одна из которых — Загрузки, и реагировать оперативнее на изменения.
06.09.10 Обновился индекс сервера поиска магнет-ссылок http://dc-poisk.no-ip.org, на сегодня проиндексировано 350 938 164 имен файлов, у более чем 29000 юзеров Direct Connect сетей.
И еще вопрос: кто будет все это реализовывать? OCTAGRAM-? или пока идет стадия выработки концепции?
так как есть ещё и копирасты, которые слишком обрадуются этой информации, нужно шифровать путь при переходе по некоторым линкам. При этом шифрующийся узел отвечает за модерацию, и должен иметь возможность при жалобах восстановить свою часть шифрованного пути.
от копирастов может поступить только одна просьба: убрать TTH из определённого релиза. по современным законам, ссылка на контрафактный файл запрещена к распространению в той же степени, что и сам файл. то есть, должен быть флажок: "скрыть TTH на некотором портале", а на другие узлы инфа пусть передаётся полностью. копирасты будут вынуждены писать запрос об удалении ссылок на каждый http-портал. вот им будет новая головная боль ))
Quote (AniNerbe)
И еще вопрос: кто будет все это реализовывать? OCTAGRAM-? или пока идет стадия выработки концепции?
поскольку речь уже идёт о принятых сугубо технических решениях (номера портов и т.п.), часть кода уже написана