Как один поток контролировать другой поток? - PullRequest
2 голосов
/ 10 января 2020

Я пытаюсь понять, как работают «потоки сердцебиения» (на концептуальном уровне, для начала).

Как это возможно, что «Поток-А» проверяет состояние «Поток-В» (в Java) и, соответственно, обновите статус на каком-либо сервере (который ожидает, что Thread-B активен). Какой механизм будет использовать Thread-A для получения статуса для Thread-B.

Может кто-нибудь помочь понять это?

1 Ответ

4 голосов
/ 10 января 2020

В общем случае один поток может только проверить, жив ли другой, вызвав isAlive().

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

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

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

Рекомендации по программному обеспечению не соответствуют действительности c, но одним экземпляром этого стека будет Микрометр для сбора метрик, Прометей для сбора и хранения их и Графана для их отображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...