2015-01-30 12 views
8

In einem recent question jemand darauf hingewiesen, dass die Firebase pricing documentation Staaten:Werden für Firebase-Streaming-REST-Verbindungen die Grenzwerte für gleichzeitige Verbindungen berücksichtigt?

REST-API-Anforderungen zählen nicht zu Ihrem Verbindungslimits

Ich verstehe (und schätzen) diese Aussage für das, was es für gemeint scheint GET-, PUT-, POST- und DELETE-Anforderungen für die REST-API werden normalerweise für Nicht-Echtzeitoperationen an den Daten verwendet, z. B. beim Herunterladen der Daten für Sicherungs- oder Massenberechnungen. Dies sind typischerweise seltene, relativ kurzlebige Operationen und sollten im Allgemeinen die Anzahl der Echtzeitdatenverbindungen in den Schatten stellen.

Aber das ist anders, wenn wir Firebase's REST streaming API betrachten. Im Gegensatz zum Rest der REST-API ist das Streaming eindeutig für Echtzeitdatenverbindungen gedacht.

Gemäß der oben genannten Dokumentation sollten diese Verbindungen nicht mit dem Verbindungslimit übereinstimmen. Aber nach einer comment by a Firebase developer on Google Groups:

concurrent [Verbindungen] ist Echtzeit-Clients oder gestreamt REST

Der Teil I scheint betont dafür, dass Kunden das Streaming-REST-API tun Zählung gegen das Verbindungslimit.

Um zu testen, habe ich einen kleinen C# Client schrieb, dass die Firebase REST-Streaming-API, um einen Knoten zu überwachen verwendet:

var url = "https://<my>.firebaseio.com/clock/.json"; 

var client = new WebClient(); 
client.Headers["Accept"] = "text/event-stream"; 
using (var stream = client.OpenRead(url)) { 
    using (var reader = new StreamReader(stream)) { 
     string line = null; 
     while (null != (line = reader.ReadLine())) { 
      (DateTime.Now.ToShortTimeString() + line).Dump(); 
     } 
    } 
} 

Etwa 15 Minuten nach dem Start dieses Programms wird die gleichzeitigen Verbindungen in meiner Firebase Armaturenbrett in die Tat stiegen um 1. Die Ausführung einer zweiten Instanz erhöhte die Anzahl der gleichzeitigen Verbindungen im Dashboard erneut.

Dieser Test scheint zu bestätigen, was in Google Groups angedeutet wurde: REST-Streaming-Clients gelten als gleichzeitige Verbindung. Kann jemand dies bestätigen oder einen Fehler in meinem Test feststellen?

Antwort

6

Ihre Annahmen sind hier richtig. Streaming Aufrufe über die REST-API zählen gegen die Anzahl Ihrer Contrulents, wie sie logisch sollten (d. H., Sie halten eine Socket-Verbindung offen und erstellen eine zusätzliche Last). Non-Streaming-Aufrufe für die REST-API führen nicht zu und nicht zu als gleichzeitige Verbindungen.

Ich schaue mir die Preisseite an und schaue, ob wir den Text etwas klarer machen können.