Я пытаюсь выяснить, как обрабатывать большие объемы данных (до 1,5 Гб float64) на микросервисе, управляемом клиентом JavaScript.
Библиотека Python (технически оболочка C)Ранее был разработан для параллельной работы наших алгоритмов обработки данных.(Примечание: разделение данных для параллельной обработки увеличивает использование памяти, поскольку каждый соседний блок нуждается в значительном перекрытии данных)
В настоящее время мой общий подход заключается в том, чтобы иметь клиент и микросервис:
Служба, работающая с библиотекой Python (при необходимости может запускаться локально), обрабатывает входные данные.
Клиентское приложение JavaScript отправляет команды / параметры обработки от пользователя и выводит графики изслужба.
Для отправки данных между ними я пробовал:
- Потоковая передача данных между клиентом и службой:
- Это работаетштраф для небольшого количества тестовых данных, но недостаточно отзывчив для больших объемов.
- Отправка пути к файлу в службу для предварительной загрузки вместо отправки фактических данных:
- Отправка обработанных данных обратно клиенту все еще происходит медленно, поскольку обработанные данные имеют размер, равный оригинальному файлу.
ТекущийПринимая во внимание:
- Разбиение на страницы или сжатие данных, отправляемых обратно клиенту, но сжатия / разбиения на страницы может быть недостаточно для уменьшения размера.
- Использование общей локальной памяти между клиентом JavaScript и службой дляне нужно фактически отправлять данные между ними.
Есть ли подход, который мог бы работать лучше для решения этой проблемы?