У меня есть класс проблем, которые можно сформулировать следующим образом:
Представьте себе полностью горизонтально масштабируемую службу, назовите ее Служба A , то есть с точки зрения потребителя служба A может обрабатывать бесконечное число одновременных запросов без сбоев (либо с помощью чрезвычайно хороших политик автоматического масштабирования без единой конкуренция на уровне данных или крайне допустимые очереди запросов)
Программа CLI (CLI) должна перебирать относительно большой файл (скажем, 10 ГБ), каждая строка в файле содержит запрос на Служба A . Программа CLI создает эти запросы по мере итерации по файлу и направляет запрос в службу А. Для каждого запроса, когда служба А отвечает, CLI анализирует ответ в кратковременном методе
Хотя служба A очень хорошо справляется с параллелизмом, каждый запрос является синхронным и может занять произвольно длительный период времени.
Непосредственная мысль: мы можем использовать ThreadPool, но тогда каждый рабочий поток будет связан с вводом-выводом - в CLI не будет видно большого использования кучи / ЦП, но CLI будет по-прежнему медленным
Какова предпочтительная неблокирующая архитектура для обработки этого класса проблем для максимального повышения параллелизма?