Я недавно работаю над программированием сокетов на Java, и что-то меня смущает.У меня есть три вопроса по этому поводу.
Первый:
В Java есть метод ServerSocket
.И этот метод может принимать до 3 параметров, таких как port
, backlog
и ip address
.Отставание означает количество клиентов, которые могут подключаться в виде очереди к серверу.Теперь давайте подумаем над этой ситуацией.
Что произойдет, если 10 клиентов попытаются подключиться к этому серверу одновременно?
Отбрасывает ли сервер последние 5 клиентов, которые пытались подключиться?Позволяет увеличить количество клиентов до 1 миллиона в час.Как я могу справиться со всеми из них?
Второй вопрос:
Может ли клиент отправлять сообщения одновременно, не ожидая ответа сервера?Что произойдет, если клиент отправит 5 сообщений на сервер, имеющий размер 5 невыполненных заданий?
Последнее действительно не является вопросом .У меня есть план управления балансировкой нагрузки.Предположим, у нас на компьютере запущено 3 сервера.
Пусть имена серверов A, B и C, и оба они работают без сбоев.Согласно моему плану, если я дал им приоритет в соответствии с входящими сообщениями, то наименьший приоритет означает самый доступный сервер.Например;
Начальные приоритеты -> A (0), B (0), C (0) и время ответа - в конце единицы времени.
1.Message -> A (1), B (0), C (0)
2. Сообщение -> A (1), B (1), C (0)
3. Сообщение -> A (1), B (1), C (1)
4.Message -> A (2), B (1), C (1)
5.Message -> A (2), B (2), C (1)
6. Сообщение -> A (1), B (2), C (2)
.,.
Хороша ли эта логика?Бьюсь об заклад, есть гораздо лучшая логика.Что мне делать, чтобы обрабатывать более или менее нескольких миллионов запросов в день?
PS: Вся эта логика будет реализована в проекте Java Spring-Boot.
Спасибо