я пытаюсь соединить две машины. Облачная служба Azure (A) с компьютером Linux (B), который не принадлежит Windows Azure. Я пытаюсь установить открытое соединение между A и B. Чтобы A мог знать, что B жив. Я не могу пинговать B от A напрямую, потому что B будет во внутренней сети. У B нет общедоступного IP-адреса, по которому я мог бы пинговать. Другими словами, B будет подключаться к Интернету через маршрутизатор. Мне нужно отправить некоторые команды в B из Интернета через A. Вот почему мне нужно поддерживать открытое соединение между A и B. Какие-либо решения, идеи или статьи, которые я мог бы прочитать, чтобы достичь этого?
Вот схема инфраструктуры для более подробной информации.
Что вам нужно сделать, так это изменить логику в клиентских системах - вместо того, чтобы подключаться каждые 15 минут, например:
Пусть они это сделают ...
Таким образом, центральный сервер может при необходимости отправлять данные узлам, например, обновлять их файлы конфигурации на лету - каждая из видеосистем будет подключена к нему и сможет немедленно принимать обновления с сервера. Системы push-уведомлений работают, по сути, по одному и тому же механизму - клиент поддерживает соединение с сервером, и сервер может отправлять ему новые данные, как только это необходимо.
В зависимости от архитектуры вашего приложения, возможно, имеет смысл подключить для этого какую-то систему очереди сообщений; Я не знаком со спецификой протокола связи большинства MQ (и будут ли они работать с настройкой вашей сети), но что-то вроде Redis Pub / Sub кажется, это было бы здорово.