Овернет, Brahms, Brightman, Sinatra
 LF_ Member is Offline
 Posted: 05-07-2002, 04:22 (post 1, #16846)

Hand of Doom
Group: Roots
Group: Roots
Posts: 17384

Как и обещал, напишу я сегодня об Овернете... Сразу хочу сказать - описание скорее популярно-научное, чем научно-популярное, сам я не все понял и все, что я напишу - скорее "кажется, так", чем "я уверен" smile.gif

Итак, основная мысль и крики в форуме сводятся к двум самым важным вопросам:
1) Нафига??
2) А как оно работает?

Ответ на первый вопрос ясен - мы ушли от MS-Dos и я помню, что при появлении Виндов я первый орал - нафига smile.gif Теперь я старый больной человек, меня не любят девушки и посему я стал ценить прогресс, который не остановить и, как и все другое, осел не вечен. Мы все знаем, как тяжело идет процесс и основная проблема во всех сетях - как найти то, что мне надо. Т.е. не как пользоваться окошечком Сёрч, а я знаю, что мне надо, но осел не находит сорсов. Причины ясны - сервера осла не справляются, народу больше, запросов поисковых больше. Единственное, что спасает - это когда файл хотят 5000 человек, тогда сорсов 500, можно и найти. Во всех других случаях - давайте все зайдем на Кастл, тогда быть может, если меня не вынесет на другой сервер, то... Посему хочется все тоже самое, но чтобы искало хорошо, надежно и с перламутровыми пуговицами. Переходим к пункту 2.

Вас никогда не удивляло, что в интернете Х млн человек, но если вы знаете IP - вы находите человека за пару секунд? Овернет - это НЕ Гнутелла, Гнутелла работает примерно так : Вась, ты знаешь где найти ХХХ? А твой сосед справа знает? А вон тот парень не в курсе? Ясное дело, что при такой организации можно пройтись по всей сети и найти ХХХ только в последний момент. СуперНоды Гнутеллы - это почти сервера осла, и они просто запоминают наиболее частые поисковые запросы, посему если ХХХ ищут все - результат может найтись быстрее, чем полным перебором. Теперь представим, что я говорю - а найдите мне Серегу_Аахена! Вы можете просто бегать по всей планете и спрашивать или поехать в Аахен и спрашивать там и ясное дело, что в Аахене у вас шансов больше smile.gif Теперь как всю это байду приделать к ослу smile.gif Для математиков я дам ссылки, а для остальных расскажу на пальцах. Единственное, я не уверен в том, что я правильно понял сам, посему просьба в меня пальцАми не тыкать, а математики должны нам доложить все правду в комментариях smile.gif Итак, организован Овернет простым способом - все мы пронумерованы (точнее, у каждого свой уникальный ID, который генерится раз при первом запуске, его можно перегенерить, но для простоты - у каждого есть ID). Этот самый ID - это ваш .... хммм... почтовый индекс smile.gif Теперь представим, что все русские индексы в одной части сети, а все американские в другой - становится ясно, что посмотрев на индекс, можно сказать, с какой стороны сети искать и поиск по индексу работать будет быстрее, чем полный перебор. Так и Овернет - когда вы заходите в сеть -(не важно с какой точки) - вас "встраивают" в определенное место, где ваш ИД будет похож на ИД соседа.... Т.е. русские индексы группируем в одном месте, израильские в другом и тп. Что значит слово группируем - ясное дело, что мы не будем ради какого-то ИД хватать комп и тащить его в Америку - в данном контексте это означает, что как только вы вошли в сеть, вы громко орёте - я американец - где тут наши? Точка входа может и не знать, где Америка, но знает, где Канада - она вас отправит в Канаду и быть может в Канаде кто-то знает, где Америка. Переведя это на более математический язык - при входе в сеть исходя из некого математического понятия близости вашего ИД к другому ИД (скажем мой ИД 100, самые близкие мне ИД 101 и 99, но разница может быть больше - близкими мне могут быть и юзера 180 и 30, потому как других мне не попадалось) ваш контакт лист наполняется и вы оказываетесь связаны с близкими вам пользователями сети. При вылете пользователя - вы ловите ближайшего и, если в процессе работы находите более близкого по ИД (скажем с номером 90) - выкидываете дальнего (180го) и запоминаете ближнего. Короче говоря - вы знаете, скажем, 20 ближайших ИД и вас знают 20 человек (число 20 я обозначу буквой О). Скажем, мы имеем ИД = 20 0000 и вопрос в том, где пользователь нумер 100? Ответ можно получить достаточно быстро - смотрим на наш контакт лист и пытаемся понять, кто ближе всего к пользователю с ИД = 100, быть может это юзер 18 000, запрашиваем его о юзере 100, парень 18 000 не знает, но шлет к юзеру 12 000 и тп. Надеюсь, из моих объяснений стало ясно, что полного перебора нет и поиск идет довольно бодро и что самое главное - НЕ СЛУЧАЙНЫМ образом, я все время двигаюсь в направлении юзера 100. Я точно знаю, что мне нужен пользователь 100 и я спрашиваю о нем только тех, кто к нему ближе всего. Как же быстро работает такой поиск при кол-ве нодов N = 100 000? Согласно ихним выкладками это O * Lg (N) и если О я сказал равное 20 (это кол-во ваших контактов или нодов, которые вы знаете), то Lg (100 000) = 5, т.е. система обещает найти нам ЛЮБОГО пользователя за не более 100 ходов. И это при том, что пользователей - 100 000. Впечатляет? smile.gif

Теперь внимательный читатель спросит - а на кой нам искать пользователей-то? Нам же файлы нужны, а не какой-то дятел за номером 100! Вот тут начинается самое крутое - ваш файл имеет хеш, который можно трактовать как некий ИД. Скажем у вас два файла - один имеет хеш = 120, а другой имеет хеш = 20 010. Ваш собственный ИД (тот самый, который овернет нагенерил вам при установке) скажем 5 000. Так вот в этот момент входа в сеть происходит следующее (после встраивания) - ваш овернет начинает искать ноду, у которой ИД как можно ближе к ИД первого файла - в нашем примере это дятел номер 100 и как только мы его находим - мы туда закидываем наш ИД файла, ИП адрес нашего компа и порт. Т.е. запись о вашем файле номер 1 хранится не у вас на компе, а у дятла номер 100. Файл номер два (хеш 20 010) - о нем будет знать дятел с номером 20 000 и вы сами будете хранить записи о файлах, которые близки к ИД = 5 000. При таком раскладе, поиск файла - это поиск нужного дятла и, я надеюсь, я смог объяснить выше, как это происходит и с какой скоростью.

Теперь вопрос о том, а ведь дятлы мрут временами - что же делать?? Согласно дизайну сети - нода каждый час проделывает все заново - шлет инфу о своих файлах, находит новые контакты - т.е. информация о файлах с точностью до одного часа. Проверка нодов, мне кажется (и я дам линк на тулзу), происходит гораздо чаще. Кроме этого, там есть репликации информации на соседние ноды и много чего еще, у меня нет сил это понять smile.gif Еще один вопрос - может ли сеть развалиться на сегменты.... Может, но вероятность этого события очень мала - в моем примере мы знаем о 20 нодах (хотя число 20 - это я взял с потолка, сколько нод связывает Овернет - понятия не имею, в моем контакт листе их 100-150)- какова вероятность, что все они РАЗОМ упадут? С точки зрения математики - никакая smile.gif

Ссылки по теме (я очень благодарен за е-мыл, который я прочесть не смог из-за кодировки знаками вопроса, поймал только линк) :

Kademlia (это то, на чем работает Овернет) : http://kademlia.scs.cs.nyu.edu/kpos_iptps.pdf
Chord (там более подробное изложение, как работают distributed hashtable) : http://www.pdos.lcs.mit.edu/papers/chord:s...ord_sigcomm.pdf
FAQ : http://www.overnet.com/faq.html (Серуй, твой люникс клиент не за горами)
Пару прилад (они помогут вам кушать ed2k линки Овернетом, смотреть статистику нодов) : http://kickme.to/FlockHelpApp/ и http://fly.to/rasmoe (тут есть линки на все компоненты, необходимые для Овернета)

Ну и чтобы любители осла не называли меня предателем, я накопал пару ословых муз релизов smile.gif Да, по многочисленным просьбам серия Jazz For будет доступна и в осле, наши буржуазные Овернетчики сказали, что помогут, да и на этом форуме нашлись желающие помочь.... Но Овернетом у вас это было бы быстрее smile.gif





1. The Lady Is a Tramp performed by Sinatra / Luther Vandross
2. What Now, My Love? performed by Sinatra / Aretha Franklin
3. I've Got a Crush on You performed by Sinatra / Barbra Streisand
4. Summer Wind performed by Sinatra / Julio Iglesias
5. Come Rain or Come Shine performed by Sinatra / Gloria Estefan
6. Theme from New York, New York performed by Sinatra / Tony Bennett
7. They Can't Take That Away from Me performed by Sinatra / Natalie Cole
8. You Make Me Feel So Young performed by Sinatra / Charles Aznavour
9. Guess I'll Hang My Tears Out to Dry/In the performed by Sinatra / Carly Simon
10. I've Got the World on a String performed by Sinatra / Liza Minnelli
11. Witchcraft performed by Sinatra / Anita Baker
12. I've Got You Under My Skin performed by Sinatra / Bono
13. All the Way/One for My Baby (And One More... performed by Sinatra / Kenny G.

Frank Sinatra - Duets







1. Time to Say Goodbye (Con Te Partirу) performed by Brightman / Andrea Bocelli - 4:04
2. No One Like You performed by Brightman / London Symphony Orchestra - 4:46
3. Just Show Me How to Love You performed by Brightman / Jose Cura - 3:58
4. Tu Quieres Volver performed by Brightman / London Symphony Orchestra - 3:48
5. In Pace performed by Brightman / London Symphony Orchestra - 3:06
6. There for Me performed by Brightman / London Symphony Orchestra - 3:32
7. Bilitis-Gиnиrique performed by Brightman / London Symphony Orchestra - 3:25
8. Who Wants to Live Forever performed by Brightman / London Symphony Orchestra - 3:54
9. La Wally performed by Brightman / London Symphony Orchestra - 4:02
10. Naturaleza Muerta performed by Brightman / London Symphony Orchestra - 5:22
11. En Aranjuez con Tu Amor performed by Brightman / London Symphony Orchestra - 3:50
12. In Trutina performed by Brightman / London Symphony Orchestra - 2:28
13. O Mio Babbino Caro (Gianni Schicci) (Puccini) - 2:41
14. Alleluja (Mozart) - 3:10

Sarah Brightman - Time To Say Goodbye







1 Johannes Brahms Sonata for violin & piano No. 1 in G major ("Regen"), Op. 78 1983
2 Johannes Brahms Sonata for Violin & Piano No. 2 in A major ("Thun"), Op. 100 1983
3 Johannes Brahms Sonata for Violin & Piano No. 3 in D minor, Op. 108 1983

Brahms Violin & Piano Sonatas - Perlman & Ashkenazy
PM
Top Bottom
Topic Options