Size: a a a

2020 December 29

A

Alexander in learn.java
Максим
А что значит при забитом количестве коннекшинов?
Я думал у resttemplate нет пула коннекшинов и при каждом вызове открывается новый коннекшин
Вот ты делаешь запрос в сторонний микросервис, а его там ддосят. Он твой запрос поместил в очередь и до него не добрался. По тайм-ауту - ты получаешь "до свидание" в виде 502
источник

A

Alexander in learn.java
Стоп. 504... Сорри
источник

A

Alexander in learn.java
Ну вот и ответ. Асинхронный клиент, чаще всего, под капотом имеет некий observer, который и ожидает пока не получит результат и берет на себя всю ответственность за получение результата (положительный или отрицательный с точки зрения логики, а не ответа от сервера что он слишком занят). Мне нравиться этот пример разбирать больше со стороны сервера.
Например, Webflux. Создай 2 endpoint'а - один обычный, а другой заверни в Flux или Mono. Включи дебаг и поставь breakpoint чтобы залочить выполнение. Далее, отправь запрос с Postman или SoupUI и увидишь разницу. В первом случае - ты отвалишься через определенный timeout с 504 в своем клиенте, но backend так и будет работать дальше. Во втором - неблокирующие очереди берут своё и ты будешь висеть до тех пор, пока backend не обработает твою операцию.
источник

A

Alexander in learn.java
Тебе гарантируют, что ты получишь результат.
источник

A

Alexander in learn.java
Почитай поподробнее про backpressure
источник

М

Максим in learn.java
Alexander
Почитай поподробнее про backpressure
Правильно ли я понимаю что тот же HttpAsyncClient не создает отдельный поток на ожидание каждого запроса?
источник

A

Alexander in learn.java
Максим
Правильно ли я понимаю что тот же HttpAsyncClient не создает отдельный поток на ожидание каждого запроса?
Давай так отвечу.
https://stackoverflow.com/questions/34505271/how-does-httpasyncclient-4-work

By default HttpAsyncClient permits only two concurrent connections to the same host per RFC 2616 specification. This limit has nothing to do with the number of i/o dispatch threads used internally by the i/o reactor.
источник

A

Alexander in learn.java
Опять же. У тебя потоки под капотом. Ты про них, ничего не знаешь. Тебе только гарантируют, что ты получишь результат
источник

A

Alexander in learn.java
Просто видимо не могу простыми словами это объяснить :(
источник

А

Алексей in learn.java
Dmtr Klkv
Погоди, ты говоришь, что фронт дергает бек и спрашивает, есть ли результат. Это я понял. Это так и должно быть. Но бэк в этот момент тоже должен проверять, есть ли результат и если его нет через определенное время, подставлять результат сам. Разве нет?
забудьте про дерганье бека с фронта. Если делаете игру, то только вебсокеты. Отправка хода, получение данных. Только вебсокеты. Никаких гет и пост запросов
источник

DK

Dmtr Klkv in learn.java
Почему?
источник

А

Алексей in learn.java
Dmtr Klkv
Почему?
Вебсокеты быстрее, легче, асинхронны.
источник

А

Алексей in learn.java
чтобы через гет запрос фронту получить результат, ему нужно много раз его запросить пока не получит нужный. Веб сокеты же будет просто ждать ответа от бека. Т.е. не будет лишней нагрузки на сервер
источник

А

Алексей in learn.java
а если, допустим, фронт будет каждую секунду дергать бек, то при увеличении онлайна получится ддос атака на самого себя
источник

А

Алексей in learn.java
есть другой вариант - лонг пул. Но тут уже другая проблема - ограничение по числу коннектов
источник

А

Алексей in learn.java
есть еще гибрид - отправка пост/гет, получение данных через SSE.
источник

DK

Dmtr Klkv in learn.java
А сколько вебсокетов я могу открыть одновременно, чем это регуллируется?
источник

ch

central hardware in learn.java
Dmtr Klkv
А сколько вебсокетов я могу открыть одновременно, чем это регуллируется?
ОС?
источник

А

Алексей in learn.java
между двумя ипами максимум 64к
источник

F

Fortune's Desire in learn.java
Алексей
между двумя ипами максимум 64к
Это много или мало
источник