используя один порт против многих на сервере со многими клиентами? - PullRequest
0 голосов
/ 10 января 2020

Я пишу код сервера с C#, и я думаю, что это хорошо (или даже возможно) обслуживать всех клиентов (скажем, миллионы в моих мечтах) с одним портом, или лучше использовать, например, 1000 порты и использовать менее используемый порт или случайный порт для каждого клиента! Как влияет производительность?

1 Ответ

1 голос
/ 10 января 2020

Использование нескольких портов для разных клиентов, как правило, неправильный подход.

Порт - это ограниченный ресурс, поэтому вам необходимо управлять им как таковым.
Существует максимум 65 535, из которых вы должны только используйте порты между 1024 и 49,151. См. https://en.wikipedia.org/wiki/Registered_port

Они также не лишены накладных расходов с административной точки зрения. Подумайте о брандмауэрах, прокси, балансировщиках нагрузки, маршрутизации и т. Д. c. Если у вас есть приложение, которое использует несколько портов, то оно требует настройки всех этих приложений для этого типа приложений (что также увеличивает риск безопасности) и рискует стать клиентом с sh для другого приложения, которое использует тот же порт по заданным параметрам. c server.

Кроме того, порт вообще не является ограничением производительности.

Если вы столкнулись с узким местом в производительности, вам нужно изменить код или использовать балансировщик нагрузки, чтобы распределить нагрузку на несколько экземпляров приложения на одном или нескольких хостах.

Если вы думаете об этом, все веб-серверы в мире используют порт 80 (по крайней мере, внешне). Так что, если поиск Google, Facebook, Instagram и т. Д. c. может обрабатывать такие нагрузки на одном порту, тогда я уверен, что ваше простое приложение также может управлять этим!

Вы можете использовать разные порты для разных целей, включая разные протоколы, и это общепринятая практика.

...