Отслеживание клиента RMI - PullRequest
0 голосов
/ 19 марта 2011

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

Главное, чтобы монитор подключался ТОЛЬКО к серверам, а не к клиентам напрямую. Моя первая идея состояла в том, чтобы реализовать простой метод rmi входа / выхода, когда клиент подключается / отключается и отслеживает их в списке, но основная проблема заключается в том, что клиент или сервер заканчивают работу ненормально.

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

Буду признателен за любые идеи о том, как реализовать эту функциональность.

Ответы [ 2 ]

0 голосов
/ 19 марта 2011

Zookeeper может быть на что посмотреть.Пусть каждый клиентский сервер зарегистрирует эфемерный узел для себя и для каждого подключенного к нему клиента.Когда клиент-сервер выходит из строя, эфемерные узлы умирают.Мониторинговый сервер просто должен наблюдать за zookeeper, чтобы видеть, кто подключен и подключен.

Для обнаружения сбоя клиентов вам понадобится какое-то звуковое биение, чтобы клиентский сервер мог определить, когда клиент умирает.Если клиент может напрямую общаться с zookeeper, просто попросите клиента зарегистрировать эфемерный узел в zookeeper, а clientserver сможет наблюдать за эфемерным клиентом и узнавать, когда клиент не работает.

0 голосов
/ 19 марта 2011

Я бы предложил реализовать «сессионный» подход к проблеме, при котором серверы и клиенты отправляют вызов метода «heartbeat» серверу мониторинга каждые несколько минут (может быть, секунды или часы, в зависимости от ваших потребностей). Если сервер мониторинга не получает «сердцебиение» от серверов или клиентов в течение определенного времени, то вы считаете, что они пропали (ненормально прерваны), и уведомляете соответствующим образом.

...