четверг, 27 декабря 2012 г.

Медиа-информация в окне поиска (Тест-3)

Сборка  только для тестов - она будет просить обновления - отказывайтесь.
issue-843-fly-server-x64-x86-test-3.7z

С исходным кодом всей реализации данной функции можно познакомиться в ветке:
svn co http://flylinkdc.googlecode.com/svn/branches-dev/ppa/issue-618-mediainfo
Заранее спасибо за замечания.

Изменения в test-3
  • На сервер передаются только те элементы, которые видны в окне результатов поиска
  • По мере скроллирования окна на сервер досылаются запросы (с интервалом 5 секунд) после получения результата записи по которым есть сведения - немного темнеют (10%).
  • На стороне сервер исправлен баг в обработке запросов размером более 64к)
  • Снял видеоролик как это работает "Поиски Шрэка"  (fly-server-shrek-search-demo.flv )
Изменения в test-2
  •  Обмен информацией выполняется даже если не собрана расширенная инфа, собранная в FlylinkDC_mediainfo.sqlite (данная таблица заполняется только при новом хешировании)
  •  Со стороны сервера поправлен возврат параметра fly_xe - разрешение видео
  • Добавил x64
Вопросы лучше писать в трэккер но можно и сюда
Для увеличения активность - открыл доступ анонимам :)
Особенности и идея алгоритма:
* Клиент не меняет протокол.
* Ветка после успешного тестирования будет встроена в r4xx и StrongDC++ sqlite
* Для обмена используется www –сервер и алгоритм обработки пока реализован на C/C++
* База данных – sqlite (после анализа нагрузки подменю на другую – cassandra?)
* Модель хранения данных  очень простая
  - Мастер таблица TTH+size + счетчики популярности, фейков и т.д.
  - Дочерняя таблица в модели EAV для сохранения дополнительной атрибутной информации.
* У каждого клиента информация о характеристиках медиа-файла будет храниться локально в дополнительной базе данных FlylinkDC_mediainfo.sqlite. В результате использования функции поиска «постепенно» передаваться на хранение в облако. Одновременно с этим клиент будет запрашивать у облака информацию о файлах, которые попадаю под критерии поиска и в случае успешности - получать результат и визуализировать его.
* После регистрации нового TTH на сервере, фоновый процесс будем дополнять объект признаками
    - Ссылки на dcmagnets.ru и другие порталы
    - Рейтинги этого объекта на указанных порталах и т.д.
* После анализа нагрузки планируется попробовать работу без www - прослойки на чистых сокетах. (для серверной части пока тестировал libevent – может что-то еще посоветуете?)





















Ссылки на предыдущие тестовые - версии (Качать не рекомендуется)
issue-843-fly-server-test-1.7z
issue-843-fly-server-x64-x86-test-2.7z



19 комментариев:

Анонимный комментирует...

не боитесь, что когда функция попадёт в release, 20000 клиентов задосят вам любой веб-сервер?

надёжнее ведь было разработать медиа-базу поверх протокола DHT.

Pavel Pimenov комментирует...

Спасибо за первый отзыв.
Этого боюсь а также размеры будущей базы)
Но как сделать через DHT не смог придумать :(

Пока прорабатывается просто интерфейс.
если идея вообще заработает - научу клиента работать и другими способами.

Сейчас это конфигурируется на лету вот таким файлом
http://flylinkdc-update.googlecode.com/svn/trunk/etc/flylinkdc-config.xml

В нем можно настроить какие файлы попадают под обмен,протокол и фильтрация.

Анонимный комментирует...

Сервер точно задосит, придется урезать

Pavel Pimenov комментирует...

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

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

Тут нужно найти распределенную базу данных, которая умеет реплицироваться автоматом разрешая конфликты - я пока не сильно изучал этот вопрос. но по-моему подходит noSQL
у меня модель как-раз key-значение

Если не найду - аналог можно и самому написать на базе любого sql-сервера - имхо там все просто.
А мелкие задержки в инфе тут не критичны - не банковские проводки кидаем :)

Анонимный комментирует...

Много гемора, вы написали большой велосипед. Если фишка работает только между последними версиями флая, почему нельзя было сделать передачу данных напрямую между клиентами? Создатели стронга стараются децентрализовать сеть вводя DHT, а вы наоборот всё на свои сервера вешаете. Сначала понадобится один сервак, потом два и вскоре всеравно придется отказаться от этого решения.

Pavel Pimenov комментирует...

Велосипед тут пока очень маленький :)
Сейчас отлаживается JSON-интерфейс между клиентом и другим компом (просто сейчас он называется выделенным сервером)
А сервер выбран для того, чтобы гарантированно помнить максимум TTH-ек и не зависеть от активности клиентов определенной сети.
По-моему тут можно прозрачно выполнить масштабирование.

А вот как с помощью текущей реализации DHT хранить такой объем информации и быстро отдавать по запросу я не знаю.

подскажите?

Анонимный комментирует...

Зачем здесь вообще DHT или какой-то сервак? Если нашел файл в поиске - значит он у кого-то есть, нужно всего лишь спросить его. Вполне можно было "выкачивать" эту инфу также, как к примеру скачиваются файллисты пользователей. И получилась бы абсолютно стабильная и простая реализация, не зависящая от настроения ваших сервов.

Анонимный комментирует...

>> подскажите?

а чего непонятного?

в данный момент dht-сеть хранит по TTH (ключу) хранит пару дополнительных полей: размер файла и CID раздающего. нужно дополнить полями с медиа-инфой. при публикации шары в dht клиент кроме имени/размера файла будет выплёвывать медиаинфу тем нодам, чей CID наиболее близок к TTH файла (при поиске спрашивать медиаинфу у тех нод, чей CID близок к TTH). оно уже так и работает с обычным поиском

плохо только, что пока клиентов этой фичей мало, доп. инфа будет отбрасываться. можно либо предпочитать клиентов с этим SUPPORTS (передавать медиаинфу не просто ближайшим, а ближайшим флаям) либо параллельно построить вторую dht-сеть, исключительно для флаев. не то чтобы совсем другую сеть, а вести списки медиа-соседей в отдельных k-bucket'ах, поиск и паблиш медиа по этим бакетам, поиск и паблиш TTH - по обычным, где в том числе и стронги-апексы

сроки хранения медиа-инфы увеличить, чтобы не expire-ось как обычные dht-записи, а например при достижении некоторого размера вытесняло случайную запись

Анонимный комментирует...

>> Зачем здесь вообще DHT или какой-то сервак? Если нашел файл в поиске - значит он у кого-то есть, нужно всего лишь спросить его.

хорошая идея! но быстрее будет не спрашивать отдельно, а пусть клиенты сразу вместе с результатом поиска передают медиа-инфу где-то в поисковом ответе (но так, чтобы клиент, не понимающий медиаинфу, видел это как обычный поисковый ответ)

либо отсылать одновременно два ответа: стандартный и медиа-инфо

Pavel Pimenov комментирует...

Вывод медиа-информации это первый шаг разобрать мусорку царящую в DC++ сетях.
К файлу будут прикрепятся доп-атрибуты.
- счетчик запросов (популярность попадания в зону поиска)
- признаки +1/-1/фейк/и т.д.
- рейтинг файла на трэккерах с URL
- комменты к файлу
- и т.д.

и эта информация будет доступна при последующих поисках данного TTH.
даже если клиент передавший этот TTH первый раз уже давно отключился от сети DC

Анонимный комментирует...

Павел, а почему нельзя вот так сделать ?
http://flylinkdc.com/forum/viewtopic.php?f=15&t=832
Все ссылки с описанием будут храниться у юзеров. Чем плохо ?

Ещё один вариант хранения описания самих раздаваемых файлов можно сделать вот таким образом : http://rutracker.org/forum/viewtopic.php?p=56971489#56971489
Компьютер юзера может отдавать тогда не только ссылку с описанием на страницу с веб сервером, но и на страницу описания сохранённую на его компьютере

Анонимный комментирует...

Вот видите, надо было сначала хорошо подумать и народ спросить. Выходит всетаки костыль вы сделали...

Анонимный комментирует...

Возможно не туда пишу.Хорошо было бы сделать в флайлинке копирование медиаинформации,по типу магнет url ,и можно было настраивать по переменным шаблон копирования как магнет url , например %codecid% %bitrate% и т.д

Анонимный комментирует...

Возможно ли научить флай нормально работать через DHT скачивание/отдача, как в торрентах.

P.S. Находит и отдает нормально , но скачивать наотрез не хочит.

Анонимный комментирует...

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

Анонимный комментирует...

когда планируется перевести основной чат на webkit?

Анонимный комментирует...

Кто тебе наврал про такие планы?

Анонимный комментирует...

[url=http://certifiedpharmacy.co.uk/products/indinavir.htm][img]http://onlinemedistore.com/3.jpg[/img][/url]
online pharmacy no rx http://certifiedpharmacy.co.uk/products/estrace.htm celebrex from new pharmacy zealand [url=http://certifiedpharmacy.co.uk/products/lasuna.htm]st lucie county florida pharmacy discount card[/url]
cvs pharmacy transfer prescription http://certifiedpharmacy.co.uk/products/cytotec.htm mexico international pharmacy [url=http://certifiedpharmacy.co.uk/products/levitra-super-active-plus.htm]levitra super active plus[/url]
alamo heights pharmacy http://certifiedpharmacy.co.uk/products/aricept.htm pharmacy resume examples [url=http://certifiedpharmacy.co.uk/categories/antiviral.htm]meiers pharmacy algonquin il[/url]
next day overnight delivery pharmacy http://certifiedpharmacy.co.uk/products/copegus.htm pharmacy road smokers lothian smoking [url=http://certifiedpharmacy.co.uk/products/triphala.htm]triphala[/url]

Анонимный комментирует...

[url=http://englandpharmacy.co.uk/products/zovirax.htm][img]http://onlinemedistore.com/8.jpg[/img][/url]
us discount pharmacy ambien no prescription http://englandpharmacy.co.uk/products/desyrel.htm westby pharmacy [url=http://englandpharmacy.co.uk/catalogue/s.htm]catonsville pharmacy catonsville maryland[/url]
joint forces pharmacy seminar http://englandpharmacy.co.uk/products/dilantin.htm pharmacy tech pay scale [url=http://englandpharmacy.co.uk/products/lopid.htm]lopid[/url]
pharmacy chat rooms http://englandpharmacy.co.uk/products/micardis.htm allegra d online pharmacy [url=http://englandpharmacy.co.uk/products/crestor.htm]overseas pharmacy forum[/url]
cvs pharmacy prescription http://englandpharmacy.co.uk/products/trimox.htm degree programs for pharmacy san antonio texas [url=http://englandpharmacy.co.uk/categories/erection-packs.htm]erection packs[/url]