0

Ich habe eine Echtzeit Node Anwendung, die ich auf Google Cloud ausführen möchte. Es ist Echtzeit, weil der Server immer synchron mit Firebase sein muss. Zum Beispiel, um die Suchfunktionalität usw. zu verarbeiten. Also werde ich dieses ständig tickende Ding haben, das nur darauf wartet, dass Ereignisse passieren.Google Cloud Platform - Planer?

Eines der Kernelemente der Anwendung ist das Konzept, dass Events (Datum und Uhrzeit) erstellt werden kann.

Was ich brauche, ist im Wesentlichen eine Black Box. Ich möchte sagen "Sag mir am 23. Dezember um 20 Uhr von diesem Event". Ein bisschen wie ein Mega Long Callback oder etwas, das ich abonnieren kann.

Ich weiß, dass cron verfügbar ist, aber das ist nicht ganz das, was ich will. Ein Cron hat in einer Echtzeitanwendung kein wirkliches Geschäft und fühlt sich nicht richtig an. Meine Anwendung sollte sich an Ereignisse anpassen. Ich möchte nicht, dass ein Maschinengewehr einmal rund um die Uhr gezündet wird, besonders wenn keine Änderungen am System vorgenommen wurden. Ich muss die zeitbasierte Abstimmungsidee aufgeben.

Ich glaube, was ich wirklich brauche, ist ein Scheduler, der wie ein Cron aussieht, aber mehr "Echtzeit".

Dies führte mich Microsoft Azure which has a Scheduler

denke ich, das könnte genau das sein, was ich brauche. Falls ja, gibt es eine Google Cloud-Entsprechung, die ich möglicherweise in den Google Docs vermisse?

Antwort

1

Die flexible GAE-Umgebung bietet einen ähnlichen Cron-Dienst.

Von Scheduling Jobs with cron.yaml:

Die App Engine Cron-Service ermöglicht es Ihnen, regelmäßig geplante Tasks zu konfigurieren, die zu festgelegten Zeiten oder regelmäßig arbeiten. Diese Aufgaben werden allgemein als Cron-Jobs bezeichnet. Diese Cron-Jobs werden automatisch vom App Engine Cron Service ausgelöst. Zum Beispiel Sie können dies verwenden, um täglich eine Bericht-E-Mail an alle zwischengespeicherten Daten alle 10 Minuten zu aktualisieren, oder um eine Zusammenfassung Informationen einmal pro Stunde zu aktualisieren.

Ein Cron-Job ruft eine URL mit einer HTTP GET-Anforderung unter einer gegebenen Uhrzeit auf. Eine von cron aufgerufene HTTP-Anfrage kann bis zu 60 Minuten lang laufen, ist aber subject to the same limits as other HTTP requests.

Von About cron.yaml

Das Folgende ist ein Beispiel cron.yaml Datei:

cron: 
- description: daily summary job 
    url: /tasks/summary 
    schedule: every 24 hours 
- description: monday morning mailout 
    url: /mail/weekly 
    schedule: every monday 09:00 
    timezone: Australia/NSW 
- description: new daily summary job 
    url: /tasks/summary 
    schedule: every 24 hours 
    target: beta 

Also alles, was Sie tun müssen, um solche Cronjobs (Trigger) für was auch immer konfigurieren Aktionen, die Sie benötigen, und fügen Sie Handler für die jeweiligen URLs hinzu, die diese Aktionen ausführen.

Von The schedule format:

Die folgenden sind Beispiele von Zeitplänen:

every 12 hours 
every 5 minutes from 10:00 to 14:00 
every day 00:00 
every monday 09:00 
2nd,third mon,wed,thu of march 17:00 
1st monday of sep,oct,nov 17:00 
1 of jan,april,july,oct 00:00 

Hinweis: Es ist noch nicht möglich, die Cron-Jobs programmatisch zu planen, aber es gibt eine feature request dafür.

Die cron.yaml für das jeweilige Beispiel in der Frage erwähnt:

cron: 
- description: trigger the Dec 23rd event 
    url: /events/12.23 
    schedule: 23 of dec 20:00 

den Cron-Job bereit:

gcloud app deploy cron.yaml 
+1

Dies ist nur ein Kopieren/Einfügen von Google Cloud-Plattform ... können Sie ein konkretes Beispiel mit detaillierten Schritten zur Bereitstellung des Cron-Jobs !? – Learn2Code

+0

@ Learn2Code Fertig. Glaubst du, dass es die Frage besser beantwortet? –

0

In Ihrem Fall Cloud-Funktionen Google - und allgemeinen Funktionen als A Service/Serverless - scheinen die beste Lösung für die Ausführung ereignisgesteuerter Codeabschnitte zu sein. Bei GCP besteht er im Wesentlichen darin, ein nodejs-Modul in einen Bucket hochzuladen, wobei Ihre Logik in eine exportierte Funktion eingebettet ist.

Vom docs:

/** 
* Cloud Function. 
* 
* @param {object} event The Cloud Functions event. 
* @param {function} callback The callback function. 
*/ 
exports.helloWorld = function helloWorld (event, callback) { 
    console.log(`My Cloud Function: ${event.data.message}`); 
    callback(); 
}; 

Sie können mehr über here lesen.

Verwandte Themen