2017-03-10 2 views
0

Ich verwende eine Back-End-App in App Engine (noch im freien Plan) und unterstützt mobile Client-Apps in einer Firebase Realtime Database-Konfiguration. Wenn ein Client eine Änderung an der Datenbank vornimmt, muss mein Back-End diese Änderung überprüfen und möglicherweise einige Ausgaben berechnen.Firebase: Wie weckt App Engine, wenn Client db ändert?

Ich könnte meine App Engine Instanz wach sitzen lassen und ständig auf Firebase Ports warten und auf Änderungen in der Datenbank warten, aber das würde meine Instanz rund um die Uhr wach halten und den Lastenausgleich nicht unterstützen.

Bevor ich zu Firebase wechselte, weckten meine Clients das Back-End manuell auf, indem sie eine REST-Anforderung der gewünschten Änderung schickten. Nun, da Firebase es den Clients erlaubt, Änderungen direkt vorzunehmen, hoffte ich, dass sie keine manuelle Anfrage stellen müssen. Ich könnte weiterhin eine Anfrage von dem Client erzeugen, aber diese Lösung wird nicht robust sein, da es den Server nicht informieren würde, wenn die Anfrage aus irgendeinem Grund nicht durchkommt und der Benutzer den Client abgeschaltet hat, bevor es erfolgreich war um die Anfrage zu senden. Firebase hat einen eigenen Mechanismus, um Änderungen beizubehalten, aber meine Anfrage würde einen ähnlichen Mechanismus benötigen. Ich hoffe, dass es eine einfachere Lösung gibt.

Gibt es eine Möglichkeit, dass Firebase automatisch eine Anfrage erstellt und meine App Engine aufweckt, wenn die Datenbank geändert wird?

+1

Hallo, muss es in Echtzeit sein? Oder wäre es beispielsweise akzeptabel, alle 4 Stunden einen Hörer auszulösen? –

+0

Echtzeit. Der Benutzer erwartet das Berechnungsergebnis innerhalb von Sekunden. – jazzgil

+0

Ok, also, was ich im Sinn hatte (https://cloud.google.com/solutions/mobile/firebase-app-engine-android-studio), müsste eine Instanz 24/7 laufen lassen (wegen manueller Skalierung) und wird daher nicht mit einem freien Plan passen. Dies steht im Einklang mit der Antwort von Dan Cornilescu unten. –

Antwort

2

betrachten Sie die neuen (Beta) Firebase Cloud-Funktionen. Damit können Sie den Code von node.js ausführen, vorprozessieren und Ihren appengine für Datenbankereignisse aufrufen.

https://firebase.google.com/docs/functions/

+0

Leider scheint diese Option in ihrem kostenlosen "Spark" -Plan nicht möglich zu sein. – jazzgil

+0

Wenn Sie für ihren "Pay per Use" Plan gehen, wird es weiterhin frei sein, wenn Sie die Quoten nicht bestehen. Es war bisher mein Fall, aber möglicherweise ist mein Abrechnungszyklus nicht vollständig. Update: nur überprüft meine Abrechnung, es ist nicht kostenlos, aber ich habe eine Hosting-und Datenbank mit leichten Nutzung und ich wurde für den letzten Monat $ 0,05 für ausgehende Bandbreite berechnet, aber noch keine Gebühren für Cloud-Funktionen zu sehen. –

+0

Ich ziehe es vor, jetzt an die freie Quote gebunden zu sein, als eine überraschende unbekannte Ladung zu riskieren. – jazzgil

0

Von Listening to real-time events from a web browser:

Posting Ereignisse zurück

zu App Engine

App Engine derzeit nicht bidirektionale Streaming HTTP Verbindungen unterstützen. Wenn ein Client den Server aktualisieren muss, muss er eine explizite HTTP-Anforderung senden.

Die Alternative hilft Ihnen nicht ganz, da sie nicht in die freie Quote passt. Aber hier ist es sowieso. Von Configuring the App Engine backend to use manual scaling:

Um Firebase mit App Engine Standardumgebung zu verwenden, müssen Sie manuelle Skalierung verwenden. Dies liegt daran, dass Firebase Hintergrundthreads verwendet, um auf Änderungen zu warten, und langlebige Hintergrundthreads nur auf manuell skalierten Backend Instanzen.

Verwandte Themen