Дочерние процессы в NodeJS: 100 потоков данных + математические вычисления
Допустим, у вас есть 100 потоков данных. Каждый держит около 20.000 ценностей..
Всякий раз, когда поток получает новые значения, он выполняет некоторые базовые вычисления по своим прошлым 20 000 значений. Никаких реальных тяжелых вычислений, но все же есть несколько вещей, таких как проценты и т. Д.
Я мог бы справиться с этим действительно хорошо, сохранив его оптимизацию. Но, в конце концов, это становится тяжелым для одного потока nodeJS, поэтому я хочу разделить рабочую нагрузку между несколькими процессами.
Единственное, что я застрял!
Что было бы лучшим способом сделать это:
1: Запустите 100 новых экземпляров узлов, например, "кластер". Но я думаю, что это приведет к значительным накладным расходам, поскольку все они имеют одинаковые зависимости. Слишком много для выполнения только некоторых вычислений.
2: Создайте child_processes, которые никогда не умирают, и имеют собственный экземпляр потока данных, просто предоставляя ему "самые новые" записи. Сам процесс содержит все прошлые записи, а не "основной" процесс.
3: Размещайте вычисления только в отдельном потоке и постоянно передавайте ему 20 000 записей для выполнения своих вычислений. Но это также оказывает огромное давление на интенсивность данных, я бы сказал??
4: веб-работники..??
Это должна быть очень хорошая производительность, потому что при запуске программы все 100 потоков получают 5000 записей "истории" для предварительного расчета. Это занимает около 30 секунд, когда выполняется в одном потоке (читай: долго)
Спасибо!!