У меня ServiceFabric с двумя приложениями. В приложении вызывается извне ServiceFabric, а затем выдает HTTP-запросы на получение другому приложению внутри ServiceFabric.
Моя первая попытка заключалась в том, чтобы обратиться ко второму приложению с помощью IP-адреса обратного прокси-сервера ServiceFabric, так же, как первое приложение адресуется с помощью:
Это приводило к ненадежной связи внутри ServiceFabric, и первый запрос всегда терпел неудачу, а второй в основном выполнялся.
Затем я прочитал о внутренней связи ServiceFabric на https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy. Теперь я обращаюсь к своему второму приложению с помощью localhost, и, похоже, оно работает, как ожидалось:
Единственный открытый вопрос: работает ли адресация приложений внутри ServiceFabric с помощью localhost только потому, что приложение также работает на том же узле? Или это работает, потому что существует реальное поведение обратного прокси, и даже если приложение не запускается на том же узле, запрос все равно доходит до него?
обратный прокси работает на всех узлах, поэтому он всегда доступен на localhost. Он перенаправляет ваш звонок во вторую службу, которая разрешается автоматически.
Вы также можете использовать встроенную службу DNS для разрешения внутренних служб. Таким образом вы сэкономите часть накладных расходов обратного прокси. В отличие от использования IP-адреса вам не нужно знать, работает ли служба на локальном хосте или на другом узле. Кроме того, у вас не возникнет проблем, если ваша служба будет перемещена во время выполнения.
Можете ли вы добавить примеры URI, которые вы используете для адресации приложения?