2015-04-24 9 views
2

У меня есть разъем дилера на стороне клиента, который подключен к разъему маршрутизатора на стороне сервера.ZMQ Pattern Dealer/Router HeartBeating

Я часто вижу механизм Heartbeating: сервер регулярно отправляет сообщение клиенту, чтобы клиент знал, правильно ли он подключен к серверу, поэтому клиент может повторно подключиться, если он не получил сообщение в течение нескольких раз.

Например картина Paranoid Pirate здесь: http://zguide.zeromq.org/page:chapter4

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

Интересно, в каком случае требуется Heartbeating?

ответ

2

Heartbeating не обязательно поддерживать соединение (имеется опция сокета ZMQ_TCP_KEEPALIVE для сокетов TCP). Вместо этого для обеих сторон требуется биение, чтобы знать, что другая сторона все еще активна. Если какая-либо сторона обнаруживает, что другая неактивна, она может принять альтернативные меры.

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

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

Сказав это, если ваше приложение не нуждается в каком-либо определенном уровне надежности; возможно, вы можете просто задействовать оборудование цикла, когда произойдет сбой. Тогда вам, вероятно, не нужно беспокоиться о сердцебиении. В конце концов, в руководстве есть много шаблонов, которые не используют его. Это лошади для курсов.

+0

Благодарим вас за ответ! – igor

+0

«Простое силовое оборудование при сбое» '[+1]' – user3666197