Буферизация объектов Java, чтобы избежать сетевого голодания
Учитывая простой сценарий сетевого взаимодействия, в котором клиент "извлекает" данные с сервера по одному объекту за раз, что будет лучшим подходом для минимизации нехватки буфера?
Типичным вариантом использования может быть соединение одного производителя / потребителя, когда клиентское приложение отправляет запрос на сервер базы данных через Java SDK и получает results iterator
(курсор) объекты в качестве возвращаемого значения запроса.
В идеальных условиях сети, последовательно вызывая next()
Метод итератора достаточен для своевременного получения всех результатов запроса. Однако, если соединение имеет различное время отклика (например, из-за перегрузки на сервере или в сети), вызовы next()
Метод будет возвращаться с перерывами или даже блокировать в течение более длительных периодов времени.
Использование очереди (например, Java
BlockingQueue
) где много объектов написано перед чтением результатов (т. е. перед вызовом next()
метод), может сгладить это изменение задержки. Есть ли более подходящий способ?