Я использую Node на pi Zero с Raspbian Stretch Lite.
В основном я хочу, чтобы были запущены два процесса: один процесс должен поддерживать открытое соединение с сервером для отправки и получения сообщений, таких как автономный статус, а другой — сканировать iBeacons.
Было бы лучше создать один проект и иметь два файла JS и запустить их отдельно, используя что-то вроде PM2? Или было бы лучше иметь два совершенно отдельных проекта? Один процесс зависит от другого, так как я буду обновлять маяки для сканирования через открытое соединение.
Если вы запускаете приложения как два отдельных процесса, PM2 позволяет вам управлять запуском двух одновременно через объект JavaScript, файл конфигурации JSON или YAML..
Например, запуск сценария worker.js
и api.js
по отдельности:
module.exports = {
apps : [{
name : "worker",
script : "./worker.js",
watch : true
}, {
name : "api-app",
script : "./api.js",
instances : 4,
exec_mode : "cluster"
}]
}
В этом смысле вы можете сохранить их как один проект, а затем запустить их вместе, используя один файл конфигурации с PM2.
Если сложность ваших приложений доходит до того, что может быть лучше разделить их, вы можете сделать это позже.
@SashaStojanovic Обычно это основано на сложности, я бы, вероятно, оставил его как единый проект, пока он не дойдет до точки, когда их можно будет разделить достаточно, чтобы их было 2.
Я отредактировал свой вопрос, чтобы добавить еще один аспект использования БД с несколькими процессами. Кларенс, не могли бы вы дать дальнейший совет по этому поводу?
SQLite позволяет нескольким процессам одновременно обращаться к базе данных, просто изменения (записи) данных контролируются блокировкой, которая потенциально может быть медленнее. Оба процесса пишут в базу данных или только считывают данные? Я бы подумал о том, чтобы сделать это отдельным вопросом, поскольку он сильно отличается от исходного вопроса.
Хорошо, я спросил здесь stackoverflow.com/questions/56171089/…
@SashaStojanovic Пожалуйста, примите и этот ответ, если он помог ответить на ваш первоначальный вопрос.
Поскольку вы, вероятно, получите обратные вызовы для обнаруженных маяков, и частота не будет высокой, я бы реализовал это как один процесс. Сложность с маяками заключается в том, чтобы обрабатывать регионы входа/выхода, чтобы избежать «заикания», поэтому оптимально иметь один таймер на каждый обнаруженный таймер, который отслеживает вход/выход далеко/близко/немедленно, если вам сейчас нужна такая детализация.
Попробую. Спасибо! В идеале я хочу, чтобы это было в одном проекте, но я не был уверен, что это структурно правильно или лучше всего это делать.