Использование петлевого интерфейса для связи между производственным приложением

Я разрабатываю 2 приложения на сервере Ubuntu, который должен взаимодействовать друг с другом по протоколу UDP со скоростью около 200 Мбит / с. На начальном этапе я планирую развернуть оба приложения на одном и том же сервере, взаимодействующем по loopback-адресу.

У меня есть 2 проблемы с этой настройкой. Любая помощь с благодарностью.

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

1 ответ

Решение

Использование интерфейса обратной связи (127.0.0.1) обычно является шагом разработки (отладки) для приложения с поддержкой сети и поддержкой. Если вы используете петлевой интерфейс исключительно как средство межпроцессного взаимодействия (IPC), я бы "поднял бровь". Кроме того, пропускная способность данных (пиковая нагрузка 200 Мбит / с) не передается (через физический уровень OSI) и "переворачивается" на сетевом уровне. На ваши (два) вопроса:

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

  2. Производительность будет зависеть от вашего дизайна UDP. Размер полезной нагрузки, структура сообщений, управление очередями и т. Д. Конечно, вы будете иметь дело с обычными накладными расходами сетевого стека (но при правильной и применимой реализации ваши механизмы IPC будут меньше накладных расходов).

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

Другие вопросы по тегам