Несколько служб / модулей NodeJS в гибкой среде Google App Engine

Я изо всех сил пытаюсь понять, как развернуть несколько служб nodejs на гибком движке приложений Google.

Я использую несколько классов nodejs с firebase-queue для обработки своих задач. Прямо сейчас я использую свой package.json, чтобы запустить все сразу. Однако это стало проблемой. Я хотел бы иметь возможность вносить изменения в одну конкретную службу / скрипт, не останавливая все остальные скрипты.

Мой package.json в настоящее время выглядит примерно так:

"scripts": {
    "task1": "node ./src/task1.js",
    "task2": "node ./src/task2.js",
    "start": "npm-run-all -p task1 task2"
}

Я использую разные файлы .yaml, чтобы определить, какой вариант сборки я хочу нажать (отладка или выпуск), но мне сложно развернуть каждую задачу по отдельности. Я нашел документацию о том, как это сделать в Python, но ничего не нашел в nodejs. У кого-нибудь есть предложения?


person Alan    schedule 16.10.2016    source источник
comment
Я слышал вас, я уже некоторое время занимаюсь этой темой, пытаясь выяснить способ отправки уведомления с устройства на устройство; сказать, когда приходит новое сообщение. Я не могу вам помочь, так как пытаюсь понять, как развернуть очередь Firebase на движке приложений и заставить ее работать. Я был бы признателен, если бы вы встретили какие-либо подсказки или руководства, которые я мог бы использовать для этого. еще раз извините за то, что не помогли ..   -  person TheeBen    schedule 16.10.2016
comment
@TheeBen Создайте my-queue-processser.js для каждого типа задачи очереди, следуйте инструкциям по настройке firebase-queue, затем используйте мой ответ ниже, чтобы разделить на отдельные службы и развернуть ????   -  person Alan    schedule 14.12.2016
comment
спасибо, я настроил очередь firebase. просто задавался вопросом о наличии нескольких из них, и я был почти уверен, что должен быть способ их объединить. Я пытаюсь найти оптимизированный способ снизить затраты на движок приложений Google   -  person TheeBen    schedule 14.12.2016
comment
@TheeBen Я запускал все в одной службе, но я просто понимаю, что каждая служба использует экземпляр. Счета будут расти! Они отлично работали над одним сервисом, но опасность того, что одно исключение может их всех уничтожить, беспокоит ... Дайте мне знать, если вы что-нибудь найдете ????   -  person Alan    schedule 15.12.2016


Ответы (2)


(Отвечая на свой вопрос, большое спасибо Джастину за помощь)

У меня были проблемы с динамическим изменением запуска скрипта в моем package.json. Я обнаружил, что package.json может получить доступ к переменным среды с помощью $.

package.json:

"scripts": {
    "start": "node $SCRIPT_TO_RUN"
}

myService.yaml

runtime: nodejs
vm: true
api_version: 1
instance_class: B4
manual_scaling:
  instances: 1
service: cart-monitor-dev

env_variables:
  SCRIPT_TO_RUN: './src/mytask.js'

Затем разверните, используя:

gcloud app deploy myService.yaml
person Alan    schedule 14.12.2016
comment
Это именно то, что я искал! В документации говорится о том, насколько хороша архитектура микросервисов, но на самом деле не объясняется, как запускать разные службы в одном проекте. - person Aron; 20.01.2017

Именно поэтому существуют службы App Engine :) Вы можете создать {serviceName} .yaml для каждой службы, которую хотите развернуть. Затем для каждого звоните gcloud app deploy service.yaml. Это создает несколько сервисов в одном приложении. Для примера см.:

https://github.com/JustinBeckwith/cloudcats

Надеюсь это поможет!

person Justin Beckwith    schedule 30.11.2016
comment
Спасибо, Джастин, я делаю это, чтобы определить, развертываю ли я производственные или разрабатываемые сборки. Это скрипты по умолчанию: {start: скрипты для запуска ...} в package.json, которые мне нужно определять динамически. Я не могу понять, как это сделать с помощью yaml. Какие-нибудь советы? Я смотрел ваше репо, но похоже, что он работает только с одной службой? Цените помощь ???? - person Alan; 14.12.2016