Как масштабировать тысячи экземпляров приложений Firebase - PullRequest
0 голосов
/ 25 июня 2018

Мне нужно инициализировать потенциально тысячи экземпляров приложения Firebase на стороне сервера, используя firebase-admin с учетной записью службы, а затем прослушивать конкретные события БД реального времени и Firestore в этих экземплярах приложения. Эти экземпляры не имеют ничего общего друг с другом, и единственный доступ к ним у меня есть через их файлы учетных данных учетной записи службы.

Моя главная проблема - масштабирование, потому что новые экземпляры приложений проекта будут инициализироваться на лету. Важно, чтобы прослушиваемые события не дублировались, поэтому я не могу, чтобы несколько экземпляров сервера инициализировали прослушивание событий всех приложений.

В идеале я хотел бы иметь автоматическое масштабирование безсерверного решения и оставить его в семействе облачных платформ Google. Если бы был способ работать с экземплярами приложения, в то время как они автоматически масштабировались за кулисами - как балансировщик нагрузки для коллекции экземпляров приложения. Я смотрел на решение Google Cloud Pub / Sub, чтобы потенциально сделать что-то подобное, но не смог придумать что-то конкретное.

Решение для немасштабирования, которое у меня есть, с использованием облачных функций:

РЕДАКТИРОВАТЬ: после обратной связи относительно облачных функций

  • при запуске облачных функций моего проекта, инициализировать все текущие экземпляры приложения
  • имеет облачную функцию, которая прослушивает вновь добавленные учетные записи служб и инициализирует для них новый экземпляр приложения. В настоящее время я не знаю, сколько экземпляров проекта я могу сохранить в памяти, прежде чем это станет проблемой.

Запустите один сервер Node для инициализации всех текущих экземпляров приложения. По мере добавления новых проектов просто добавьте ссылку на него. Внимательно следите за сервером, чтобы убедиться, что он не исчерпывает память. Масштабируйте вертикально насколько возможно. Когда дело доходит до точки, где это необходимо, запустите второй экземпляр сервера, но вручную распределите экземпляры проекта между серверами, чтобы не было дубликатов.

Дополнительный вопрос: масштабируются ли только отдельные облачные функции по мере необходимости? то есть. что происходит с другими стандартными функциями / объектами JS, созданными вне облачной функции, но внутри файла облачных функций index.js?

Любой совет будет принят с благодарностью. С удовольствием уточнить что-либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...