2015-01-30 8 views
8

W recent question ktoś zauważył, że Firebase pricing documentation stany: wnioski APICzy połączenia REST transmisji strumieniowej Firebase są wliczane do limitu jednoczesnych połączeń?

reszta nie liczą się do swoich limitów połączeń

rozumiem (i docenić) to stwierdzenie za to, co wydaje się być przeznaczona na : Żądania GET, PUT, POST i DELETE w stosunku do REST API są zwykle używane do operacji w czasie rzeczywistym na danych, takich jak pobieranie danych do tworzenia kopii zapasowych lub masowych obliczeń. Zwykle są to rzadkie, stosunkowo krótkotrwałe operacje i generalnie powinny przerastać liczbę połączeń transmisji danych w czasie rzeczywistym.

Ale to jest inne, gdy patrzymy na Firebase's REST streaming API. W przeciwieństwie do reszty interfejsu API REST, transmisja jest wyraźnie przeznaczona do połączeń danych w czasie rzeczywistym.

Zgodnie z powyższą dokumentacją połączenia te nie powinny być wliczane do limitu połączenia. Ale według comment by a Firebase developer on Google Groups:

jednoczesnych [połączenia] są klientami w czasie rzeczywistym lub strumieniowo REST

Część I podkreślił, wydaje się sugerować, że klienci korzystający z transmisji strumieniowej REST API zrobić count w stosunku do limitu połączenia.

Aby przetestować, napisałem mały Klient C#, który używa Firebase REST strumieniowego API do monitorowania węzła:

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(); 
     } 
    } 
} 

około 15 minut po uruchomieniu tego programu jednoczesnych połączeń w moim Firebase desce rozdzielczej rzeczywiście wzrosły o 1. Uruchamiając drugą instancję, zwiększono liczbę jednoczesnych połączeń w desce rozdzielczej.

Ten test zdaje się potwierdzać sugestie w Grupach dyskusyjnych Google: Klienci strumieniowi REST są liczeni jako połączenie równoległe. Czy ktoś może to potwierdzić lub wykryć usterkę w moim teście?

Odpowiedz

6

Twoje założenia tutaj są poprawne. Wywoływanie strumieniowe wywołań za pośrednictwem interfejsu API REST powoduje odliczanie od liczby współbieżnych, tak jak powinny logicznie (tzn. Trzymają otwarte połączenie z gniazdem i tworzą dodatkowe obciążenie). Połączenia bez przesyłania strumieniowego z interfejsem REST API mają wartość , a nie jako połączenia współbieżne.

Zajrzę do strony wyceny i zobaczymy, czy możemy nieco wyjaśnić tekst.