У нас есть система, которая при наличии пакета запросов делает эквивалентное количество вызовов внешнего стороннего API. Учитывая, что это задача, связанная с вводом-выводом, в настоящее время мы используем кешированный пул потоков размером 20 для обслуживания этих запросов. Помимо вышеперечисленного, это решение:
Используйте меньше машин с большим количеством ядер (меньшее переключение контекста, возможность поддержки большего количества одновременных потоков)
or
Используйте больше машин, используя стандартное/дешевое оборудование (коробки для пиццы).
Количество запросов, которые мы получаем в день, составляет порядка миллионов.
Мы используем Java, поэтому темы здесь относятся к ядру, а не к «зеленым».
Другие моменты/мысли:
- Hadoop обычно используется для решения проблем такого рода, но это должно быть в режиме реального времени, а не стереотипным автономным интеллектуальным анализом данных.
- Запросы API занимают в среднем от 200 мс до 2 секунд.
- Между запросами нет общего состояния
- Рассматриваемая третья сторона способна обслуживать больше запросов, чем мы можем запустить (поставщик платежей).