Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2016.03.20;
Скачать: [xml.tar.bz2];

Вниз

DHT   Найти похожие ветки 

 
xayam from NB ©   (2015-07-11 08:28) [0]

Объясните, кто в теме, как можно DHT использовать для системы мгновенных сообщений? Сами основы работы DHT мне тоже не совсем понятны...

https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D0%B0%D1%8F_%D1%85%D0%B5%D1%88-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0


 
Rouse_ ©   (2015-07-11 10:53) [1]

Соединяешь двух пользователей напрямую посредством DHT (пробивая NAT), а дальше по классике


 
xayam from work ©   (2015-07-11 11:33) [2]


> Rouse_

есть неясности.
Вот получил я "сервер-трекера" ip-адреса и открытые порты клиентов с которыми есть возможность соединиться. Причем этот список может быть большим, а я могу установить скажем максимум 10 соединений. Как мне из этого списка выбрать 10 клиентов (и им тоже), таким образом, чтобы создать оптимальную оверлейную сеть? По какому критерию отбираются нужные соединения непонятно...


 
Smile ©   (2015-07-11 11:44) [3]

Может быть ответ и не по делу, но критерии "нужности" думаю, что кроме тебя никто определить не сможет...


 
xayam from work ©   (2015-07-11 11:48) [4]


> но критерии "нужности" думаю

нужно сделать multicast - передать всей оверлейной сети сообщение, но напрямую должна быть связь только с частью сети - максимум 10 соединений может даже меньше.


 
Rouse_ ©   (2015-07-11 12:23) [5]

Ну ты спросил, ну как выбрать первых 10 это понятно, а вот как дальше чтоб сделать то что тебе нужно - я даже затрудняюсь ответить


 
Rouse_ ©   (2015-07-11 12:29) [6]

Само построение такой сети у тебя займет тонну времени, с учетом что нужно избежать пересечений дерева связей. ИМХ придумай другой алгоритм


 
xayam from work ©   (2015-07-11 12:43) [7]


> придумай другой алгоритм

других вариантов особо нет, нужно снизить нагрузку на основной сервер.
Можно конечно на сервере хранить всю карту связей и выдавать оптимальный вариант соединений, но это все накладно для сервера ИМХО


 
Rouse_ ©   (2015-07-11 15:18) [8]

Ну смотри, давай я разрисую логику, если я правильно ее понял:
Ты хочешь сделать децентрализованную связку, по аналогу TOR, где конечный адресат получает сообщение не прямую а через цепочку пиров? Верно?
Стало быть вопрос - тебе нужно правильно выстроить сеть пиров, причем выстроить ее максимально эффективно, чтобы в оптимальном случаем запрос шел максимум через два узла (это для паутины в тысячу адресатов).
С учетом что ты ограничиваешь размер пула каждого пира в 10 адресатов, это условие уже мало выпонимо, за исключением того случая когда у тебя будет некий управляющий сервер, который заранее построит карту маршрутов и даст каждому пиру конкретный список адресов с которым он должен быть связан (сам понимаешь - уже задачка).
Но не это интересно - теперь тебе нужно настроить правильную маршрутизацию от пира в конечной точке дерева, до адресата в совершенно другой ноды - вот тут и возникнет главный затык, который может решить либо броадкастовый запрос либо управляющий центр, который выдаст правильный маршрут передачи запроса.


 
Rouse_ ©   (2015-07-11 15:43) [9]

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


 
xayam from work ©   (2015-07-11 19:00) [10]


> у тебя от двух крайних узлов будет четыре хопа (с учетом
> тысячи подключений). Что есть грустно.

не представляю как ты это подсчитал :)
интересно, а вот в биткойне какая система используется?
там в пуле то ли три узла то ли 8 по умолчанию


 
Rouse_ ©   (2015-07-11 19:06) [11]

Ручками посчитал, по схеме пот твой алгорит, а в биткойнах другая используется


 
Rouse_ ©   (2015-07-11 19:10) [12]

Пардон, пишу с планшета - не удобно набирать и очепятки


 
xayam from work ©   (2015-07-12 16:40) [13]

Еще вопрос, Rouse. Какие есть способы тестирования такой сети. Нужно смоделировать запуск 1000 клиентов и их общение в сети. Как это лучше сделать?


 
brother ©   (2015-07-12 16:43) [14]

имхо на макетах не поканает тестировать, только "в железе"


 
xayam from work ©   (2015-07-12 18:44) [15]


> Ты хочешь сделать децентрализованную связку, по аналогу
> TOR, где конечный адресат получает сообщение не прямую а
> через цепочку пиров? Верно?

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


 
Rouse_ ©   (2015-07-13 11:34) [16]


> xayam from work ©   (12.07.15 16:40) [13]
> Еще вопрос, Rouse. Какие есть способы тестирования такой
> сети.

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



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2016.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
2-1407411562
Дмитрий
2014-08-07 15:39
2016.03.20
Разное "поведение" date() на XP и Win7


2-1409137402
Санек
2014-08-27 15:03
2016.03.20
Действия при Нажатии на ссылку в TWebbrowser


2-1409140712
ARchi
2014-08-27 15:58
2016.03.20
Чтение из ini файла


1-1337236810
shurets
2012-05-17 10:40
2016.03.20
Изменение ширины ScrollBar в cxGrid


2-1409152558
XCoder
2014-08-27 19:15
2016.03.20
Вычислить размер массива





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский