Я написал серверный код для использования firebase-queue](https://github.com/firebase/firebase-queue) для масштабируемости, однако с выпуском Cloud Functions для Firebase (и его обещанием автоматической масштабируемости) мне интересно, есть ли необходимость в Queue... Кто-нибудь объединил эти две технологии для большей цели? В частности, для разработчиков Firebase, таких как @Frank van Puffelen, функции заменят firebase-queue?
Облачные функции для Firebase делают firebase-queue устаревшим?
Ответы (3)
firebase здесь
Я не уверен, что firebase-queue не устарела. Время покажет.
Но теперь мы определенно используем облачные функции для Firebase во многих сценариях, где раньше мы использовали firebase-queue и рабочий процесс узла. Больше нет необходимости использовать собственный процесс Node.js, что увеличивает скорость разработки. Автоматическое масштабирование облачных функций уже доказало свою бесценность.
Объединение Cloud Functions с firebase-queue кажется нелогичным. Если вы просто добавляете узлы в базу данных и используете их в своей функции, у вас будет такое же поведение без необходимости в дополнительной библиотеке.
Обновление: один из наших инженеров баз данных только что представил сценарий, в котором функции не могут заменить очередь. При создании резервных копий рабочим необходимо монтировать и отключать удаленные диски. Эта задача может быть возможной в облачной функции, ее гораздо проще выполнить в автономном, самоуправляемом процессе Node.
firebase-queue
, включая возможности повторных попыток, ведение журнала и т. д., при переносе самой обработки заданий в облачные функции может быть ценным. Не могли бы вы пояснить, почему эта комбинация нелогична? ?
- person nimast; 01.05.2017
Я не думаю, что облачные функции Firebase должны сделать firebase-queue устаревшим, и я не думаю, что вообще нелогично хотеть объединить firebase-queue с облачными функциями, как сказал @@Frank van Puffelen.
Firebase-queue предоставляет задачам гораздо больше, чем просто возможность прослушивать firebase и запускать задачи. Он обеспечивает протокол для связи между сторонами, назначающими задачи и отвечающими на запросы задач, координируя повторные попытки невыполненных задач, сообщая о ходе выполнения, состоянии и дополнительных метаданных. Одной из возможностей, которую это позволяет, является цепочка задач.
Я думаю, что для Firebase или третьей стороны было бы полезно разработать пакет firebase-functions-queue, который расширяет firebase-functions и позволяет вам писать облачную функцию firebase с той же сигнатурой, что и firebase-queue. Что-то вроде этого:
const functions = require('firebase-functions');
const functions-queue = require('firebase-functions-queue'); //extends firebase-functions with onQueue function
admin.initializeApp(functions.config().firebase);
functions.database.ref('/queue').onQueue(options,function(data,progress,resolve,reject){
...
})
Этот новый пакет будет работать так же, как firebase-queue и использовать те же метаданные и параметры, за исключением того, что ему не нужно будет управлять несколькими рабочими процессами, поскольку облачные функции уже делают это автоматически и без проблем.
Это будет иметь следующие преимущества:
- Позволит разработчикам firebase использовать стандартный способ назначения заданий очередям, отслеживать ход выполнения, сбои и т. д.
- Приложение может назначить задание в очередь, и ему все равно, обрабатывается ли оно облачной функцией или другой средой.
- Разработчик может взять существующую очередь и переместить ее со своего сервера узла в облачные функции без изменения клиентского приложения.
- Это может даже разрешить цепочку задач, когда одна задача может обрабатываться облачной функцией, а другая — другим сервером в рамках одного задания.
Я не думаю, что это так просто, как сказать, что он заменяет firebase-queue. В идеале вы должны использовать функции для большинства распространенных случаев использования firebase-queue.
Тем не менее, вероятно, есть и некоторые законные причины для использования firebase-queue.
- Это довольно надежная система очередей, которая позволяет использовать задачи с несколькими состояниями и позволяет устанавливать количество рабочих.
- Он работает в указанной вами среде вместо App Engine (вы можете установить на свой сервер двоичные файлы, недоступные в GAE).
- Может быть дешевле в зависимости от специфики пропускной способности и вызовов.
- Он может бесплатно связываться со сторонними конечными точками, в то время как для функций требуется платная учетная запись.
- Функции все еще находятся в стадии бета-тестирования и не предлагают SLA. В настоящее время они также имеют некоторые задержки при запуске, которых не было бы в firebase-queue (этот пункт должен стать недействительным во время выпуска GA).