Облачные функции для Firebase делают firebase-queue устаревшим?

Я написал серверный код для использования firebase-queue](https://github.com/firebase/firebase-queue) для масштабируемости, однако с выпуском Cloud Functions для Firebase (и его обещанием автоматической масштабируемости) мне интересно, есть ли необходимость в Queue... Кто-нибудь объединил эти две технологии для большей цели? В частности, для разработчиков Firebase, таких как @Frank van Puffelen, функции заменят firebase-queue?


person eyeezzi    schedule 10.03.2017    source источник
comment
Спасибо, eyeezzi, за вопрос, кажется, это специально для меня. Я тоже запутался с 2 и в итоге решил внедрить Queues. Причина, по которой я не выбрал функции, заключалась в том, что масштабирование сокетов могло привести к дублированию вызова одного и того же вызова, а во-вторых, мне пришлось бы перепроектировать все мое приложение в соответствии с функциями для масштабирования.   -  person kapoorji    schedule 22.04.2017


Ответы (3)


firebase здесь

Я не уверен, что firebase-queue не устарела. Время покажет.

Но теперь мы определенно используем облачные функции для Firebase во многих сценариях, где раньше мы использовали firebase-queue и рабочий процесс узла. Больше нет необходимости использовать собственный процесс Node.js, что увеличивает скорость разработки. Автоматическое масштабирование облачных функций уже доказало свою бесценность.

Объединение Cloud Functions с firebase-queue кажется нелогичным. Если вы просто добавляете узлы в базу данных и используете их в своей функции, у вас будет такое же поведение без необходимости в дополнительной библиотеке.

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

person Frank van Puffelen    schedule 10.03.2017
comment
Спасибо, Фрэнк, это имеет большой смысл. Кстати, облачные функции с Firebase — это круто! - person eyeezzi; 11.03.2017
comment
Возможно, я что-то упускаю, но я думаю, что сочетание модели объекта задачи/спецификации/задания firebase-queue, включая возможности повторных попыток, ведение журнала и т. д., при переносе самой обработки заданий в облачные функции может быть ценным. Не могли бы вы пояснить, почему эта комбинация нелогична? ? - person nimast; 01.05.2017
comment
мы все забываем тот факт, что функции FB все еще находятся в стадии бета-тестирования без SLA и предполагаемой даты выхода из бета-версии? - person Rotem Slootzky; 10.08.2017
comment
Еще одна причина, по которой он не устарел, - это гарантии исполнения. Насколько я понимаю, функции firebase хотя бы один раз. - person EECOLOR; 30.07.2018

Я не думаю, что облачные функции 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 использовать стандартный способ назначения заданий очередям, отслеживать ход выполнения, сбои и т. д.
  • Приложение может назначить задание в очередь, и ему все равно, обрабатывается ли оно облачной функцией или другой средой.
  • Разработчик может взять существующую очередь и переместить ее со своего сервера узла в облачные функции без изменения клиентского приложения.
  • Это может даже разрешить цепочку задач, когда одна задача может обрабатываться облачной функцией, а другая — другим сервером в рамках одного задания.
person jjjjs    schedule 13.03.2017

Я не думаю, что это так просто, как сказать, что он заменяет firebase-queue. В идеале вы должны использовать функции для большинства распространенных случаев использования firebase-queue.

Тем не менее, вероятно, есть и некоторые законные причины для использования firebase-queue.

  1. Это довольно надежная система очередей, которая позволяет использовать задачи с несколькими состояниями и позволяет устанавливать количество рабочих.
  2. Он работает в указанной вами среде вместо App Engine (вы можете установить на свой сервер двоичные файлы, недоступные в GAE).
  3. Может быть дешевле в зависимости от специфики пропускной способности и вызовов.
  4. Он может бесплатно связываться со сторонними конечными точками, в то время как для функций требуется платная учетная запись.
  5. Функции все еще находятся в стадии бета-тестирования и не предлагают SLA. В настоящее время они также имеют некоторые задержки при запуске, которых не было бы в firebase-queue (этот пункт должен стать недействительным во время выпуска GA).
person Kato    schedule 10.03.2017