У меня есть сервер, который принимает TCP-соединение, и весь трафик является данными проприетарного протокола.Я настроил nginx в качестве внешнего интерфейса, и он пересылает TCP-трафик в другой бэкэнд-сервис, используя потоковый модуль nginx.Все работает нормально, поскольку пересылается необработанный TCP-трафик.Я могу успешно использовать его с или без SSL-терминации.Если завтра мой единственный внутренний сервер не сможет справиться с нагрузкой из-за неожиданного роста числа клиентов, я могу добавить другой сервер для внутреннего сервера и использовать балансировку нагрузки TCP.Я пробовал это, и он также работает нормально, используя схему круговой схемы.Даже если завтра я добавлю несколько внутренних серверов, но фактические клиенты будут продолжать подключаться к этому внешнему серверу ngnix.Он должен принимать гораздо больше соединений TCP.Таким образом, этот сервер nginx будет перегружен и станет единственной точкой дросселирования.
Мой вопрос касается балансировки нагрузки и производительности, имеет ли смысл использовать такой вид балансировки нагрузки TCP или просто использовать несколько разных серверов и реализовать механизм для настройки клиентов для взаимодействия с разными серверами вместо перегрузки?единственная коробка nginx?Существуют ли сценарии, в которых использование такого вида балансировки нагрузки по протоколу TCP на самом деле является лучшим выбором, чем динамическая настройка клиентов для прямого подключения к различным серверам?Каковы плюсы и минусы (кроме дополнительного кода, который мне придется написать, чтобы сказать клиентам подключаться к различным серверам по какой-то схеме)?