Концептуальные вопросы работы Node.js
Собственно пришлось по работе коснуться вопроса асинхронной работы с данными, совершенно случайно вышел на Node.js, т.к. интересы лежат несколько в другой плоскости. Теперь же хочется понять следующее.
Сперва наводящий вопрос, ответ на который может все разрешить:
Где-нибудь можно посмотреть диаграмму работы механизма Node.js?
Что не понятно, буду говорить не всегда точным языком, тапками чур не забрасывать:
1) Я делаю приложение Hello world которое вешает колбэк на конкретный порт. Правильно я понимаю, что на него реагирует один mainloop - который я повесил и при одновременном обращении - параллелизма, и соответственно никакой диспечеризации запросов, не возникает - второй запрос будет ждать исполнения первого. Соответственно он возникает, если использовать кластер из нод, который и служит диспечером разных процессов main loop
2) Возьмем примитивную задачу парсинга ну очень большого файла XML. Требуется обеспечить параллельный парсинг, асинхронную проверку на ФЛК и запись значений в БД. Мне видится, что я делаю декомпозицию файла по некоторому алгоритму, отдаю эти части на съедение разным процессам, которые в свою очередь делают разбор и сохранение данных в БД, затем осуществляется синхронизация процессов, проверка на ФЛК( могут быть трудные случаи появления повторов в пределах одного XML), причем ФЛК заворачиваем в разные потоки, чтобы они параллельно исполнялись, синхронизируем результат и собственно формируем развернутый ответ по ошибкам, либо фиксируем изменения и даем позитивный ответ. Каким образом правильно работать с Node в таком случае? Да забыл сказать, что речь идет об асинхроне, соответственно делаются манипуляции и управление сразу возвращаются.
3) К вопросу №2 передача файла со стороны клиента и получение со стороны сервера. Правильно я понимаю. что есть механизм получения файла, его асинхронного сохранения в файловую систему. Вопрос в том как обеспечить последующую работу с файлом в Node в соответствии с п.2(механизмы, когда серверный Node становится клиентом относительно других нодов).
5) В какой момент осуществляется инициализация переменных и объектов. Обратил внимание на то, что во многих примерах подразумевается, что при каждом вызове колбэк функции создаются новые экземпляры объектов, старые при этом не уничтожаются(возможно зачищаются автоматом). Вопрос не праздный обратил внимание что при реализации таких примеров идет утечка по памяти с последующим обрушением приложения.
|