ВАРИАНТ 1: Общая стоимость создания TCP-соединения:
- Создание сокетного соединения
- Отправка данных
- Разрывное соединение
Шаг 1. Требуется обмен пакетами, поэтому он задерживается на задержку сети и обратно плюс время обслуживания сервера назначения. Нет значительного использования ЦП ни на одном из блоков.
Шаг 2. Зависит от размера сообщения.
Шаг 3: IIRC, просто отправляет пакет «сейчас закрывается», без ожидания подтверждения назначения, поэтому задержка не требуется.
ВАРИАНТ 2: Стоимость UDP: *
- Создать объект UDP
- Отправка данных
- Закрыть объект UDP
Шаг 1. Требуется минимальная настройка, не нужно беспокоиться о задержке, очень быстро.
Шаг 2: БУДЬТЕ ОСТОРОЖНЫ РАЗМЕРА, в UDP нет повторной передачи, поскольку ему все равно, был ли пакет кем-то принят или нет. Я слышал, что чем больше сообщение, тем больше вероятность получения поврежденных данных и что практическое правило заключается в том, что вы потеряете определенный процент сообщений свыше 20 МБ.
Шаг 3: Минимальная работа, минимальное время.
ВАРИАНТ 3: используйте вместо ZeroMQ
Вы сравниваете TCP с UDP с целью сокращения времени переподключения. Есть хороший компромисс: розетки ZeroMQ.
ZMQ позволяет вам настроить гнездо публикации, где вам все равно, слушает ли кто-либо (например, UDP), и иметь несколько слушателей на этом сокете. Это НЕ UDP-сокет - это альтернатива обоим этим протоколам.
Подробнее см. ZeroMQ.org .
Это очень высокая скорость и отказоустойчивость, и по этой причине он все чаще используется в финансовой индустрии.