Использование таймаута в архитектуре P2P - PullRequest
1 голос
/ 07 апреля 2011

Я пишу приложение P2P, используя Java.Точнее говоря, я использую RMI для реализации Token Ring, такой как система межузловой связи. Для реализации отказоустойчивой системы мне необходимо обнаруживать сбои узлов.Каждый узел в кольце должен ждать токен в течение X секунд.По истечении этого времени узел должен проснуться и выполнить какое-то действие (например, он может извлечь токен).Какой метод можно использовать для определения времени ожидания в каждом узле?

Заранее спасибо !!

1 Ответ

1 голос
/ 07 апреля 2011

Это классическая проблема в системах P2P. Краткий ответ: если вы не получите ответ от удаленного партнера после некоторой выбранной задержки, вы ДОЛЖНЫ предположить, что он недоступен (и рискнуть ошибиться).

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

Суть в том, что вы не можете точно выяснить, что случилось с соединением, когда вы заметили какие-то проблемы с удаленным одноранговым узлом (т. Е. Кто-то перерезал кабель или узел фактически сорвался?), Независимо от того, как старайся.

...