Максимальный параллелизм во внешних приложениях ввода-вывода (JVM) - PullRequest
0 голосов
/ 24 января 2019

У меня есть класс проблем, которые можно сформулировать следующим образом:

Представьте себе полностью горизонтально масштабируемую службу, назовите ее Служба A , то есть с точки зрения потребителя служба A может обрабатывать бесконечное число одновременных запросов без сбоев (либо с помощью чрезвычайно хороших политик автоматического масштабирования без единой конкуренция на уровне данных или крайне допустимые очереди запросов)

Программа CLI (CLI) должна перебирать относительно большой файл (скажем, 10 ГБ), каждая строка в файле содержит запрос на Служба A . Программа CLI создает эти запросы по мере итерации по файлу и направляет запрос в службу А. Для каждого запроса, когда служба А отвечает, CLI анализирует ответ в кратковременном методе

Хотя служба A очень хорошо справляется с параллелизмом, каждый запрос является синхронным и может занять произвольно длительный период времени.

Непосредственная мысль: мы можем использовать ThreadPool, но тогда каждый рабочий поток будет связан с вводом-выводом - в CLI не будет видно большого использования кучи / ЦП, но CLI будет по-прежнему медленным

Какова предпочтительная неблокирующая архитектура для обработки этого класса проблем для максимального повышения параллелизма?

...