2013-10-19 8 views
10

W jaki sposób są obliczane połączenia?Sposób obliczania połączenia w Firebase

Załóżmy, że mam aplikację internetową, której jedno obciążenie wysyła wiadomość do wszystkich podłączonych klientów, i powiedzmy, że mam 5 połączonych klientów. Czy oznacza to, że tak długo, jak zakładka przeglądarki z aplikacją sieciową jest otwarta, będzie ona liczona jako 1 połączenie, co oznacza, że ​​będę miał 6 równoczesnych połączeń i które są wliczane do tego, co zdefiniowałeś jako "Połączenie" na stronie cenowej?

Jeśli nie, proszę wyjaśnić sposób obliczania "połączenia". Dzięki

+2

Tak, jeśli w dowolnym momencie jest 6 kart przeglądarki (lub urządzeń) połączonych z bazą Firebase, które będą liczone jako 6 połączeń. Strona ceny zawiera maksymalną liczbę połączeń, które możesz otworzyć jednocześnie w danym momencie. – Anant

+0

Czy nie byłoby 5 stałych połączeń (po jednym dla każdego klienta) i 5 tymczasowych połączeń dla aplikacji internetowej (po jednej dla każdego żądania)? – Trevor

Odpowiedz

35

To pytanie mnie dręczyło od kiedy przebiegłem samouczek thinkster.io angular + firebase i zobaczyłem moją zakładkę analityki firebase pokazującą szczyt równoczesny z 6, mimo że pamiętam tylko jedną stronę otwartą. Spojrzałem na kod i pomyślałem, że może to wynikać z tego, jak samouczek spowodował utworzenie nowego adresu Firebase (URL) dla każdej lokalizacji w bazie ogniowej.

Chciałem przetestować różnicę między tworzeniem nowej Bazy Firebase (URL) a odniesieniem do katalogu głównego, a następnie uzyskaniem dostępu do lokalizacji .child(). Moja teoria głosiła, że ​​nowy Firebase (url) tworzy nowe połączenie za każdym razem, podczas gdy .child() używałby ponownie istniejącego połączenia.

Konfiguracja

  • utworzono dwa nowe firebases każdy z identycznymi danymi
  • skonfigurować połączenie angularjs projekt używając jako pisarza
  • wliczony angularfire

Kod

Dla uproszczenia, ja po prostu umieścić wszystko w głównym kontrolerze wygenerowanego kodu.

Aby przetestować połączenia utworzone z nowym Firebase() Zrobiłem następujące:

$scope.fb_root = $firebase(new Firebase(FBURL_NEW)); 
$scope.fb_root_apps = $firebase(new Firebase(FBURL_NEW + '/apps')); 
$scope.fb_root_someApp = $firebase(new Firebase(FBURL_NEW + '/apps/someApp')); 
$scope.fb_root_users = $firebase(new Firebase(FBURL_NEW + '/users')); 
$scope.fb_root_mike = $firebase(new Firebase(FBURL_NEW + '/users/mike')); 

Aby przetestować połączenia utworzone z ref $ dziecka() Zrobiłem, co następuje:.

$scope.fb_child = $firebase(new Firebase(FBURL_CHILD)); 
$scope.fb_child_apps = $scope.fb_child.$child("apps"); 
$scope.fb_child_someApp = $scope.fb_child_apps.$child("someApp"); 
$scope.fb_child_users = $scope.fb_child.$child("users"); 
$scope.fb_child_mike = $scope.fb_child_users.$child("mike"); 

Następnie oprawiam te obiekty w moim widoku, tak że je widzę, a ja bawiłem się aktualizując dane przez moją bazę firebase i oglądając aktualizację danych na żywo w mojej aplikacji.

Wyniki

Otworzyłam moją lokalną aplikację na 17 kart przeglądarki, mając nadzieję, że duża liczba kart przesadzałbym żadnych różnic pomiędzy metodami przyłączeniowych.

To, co odkryłem, to że każda zakładka otworzyła tylko jedno połączenie z gniazdem internetowym z powrotem do bazy danych dla każdej bazy danych bazy firebase. Tak więc na końcu testu obie metody dały taką samą liczbę szczytową 17 połączeń.

Wnioski

Z tego prostego testu Myślę, że to na pewno powiedzieć, że biblioteka Firebase JS robi dobrą robotę zarządzanie jego połączenia.

Bez względu na to, że twój kod wywoływał kilka razy nową bazę danych Firebase() lub przez odwoływanie się do lokalizacji podrzędnych za pośrednictwem .child(), biblioteka utworzy tylko jedno połączenie, jeśli chodzi o pomiar.To połączenie pozostanie w sieci tak długo, jak aplikacja jest otwarta.

W twoim przykładzie - tak, wierzę, że zobaczysz 6 równoczesnych połączeń, 1 dla aplikacji, w której ktoś wysyła wiadomość, i 5 dla aplikacji otrzymujących wiadomość.

Aktualizacja

Jedną rzeczą warto wspomnieć, że środki Firebase przyłącza do płatnych programów opartych na 95. percentyla wykorzystania w ciągu miesiąca. Jest to wymienione w sekcji Najczęściej zadawanych pytań na stronie z cenami: @https://www.firebase.com/pricing.html

Aktualizacja 11-Mar-16: Baza Firebase nie jest już wyświetlana, aby mierzyć połączenia na podstawie 95%. Zamiast tego odmawia się 101. współbieżnego połączenia.

https://www.firebase.com/pricing.html:

Wszystkie nasze plany mają sztywny limit na liczbę połączeń z bazą danych. Nasze plany Bezpłatne i Spark są ograniczone do 100. Limit nie może być podniesiony . Wszystkie inne plany mają limit grzecznościowy wynoszący 10 000 połączeń bazy danych . Można je usunąć, aby na stałe zezwalać na połączenia Unlimited , jeśli wyślesz do nas e-mail na adres [email protected] Powodem, dla którego narzucamy ten limit, jest zapobieganie nadużyciom i zapewnienie, że jesteśmy przygotowani na obsługę naszych największych klientów. Prosimy o kontakt z nas z co najmniej 24-godzinnym wyprzedzeniem, abyśmy mogli podnieść ten limit i zapewnić , że mamy wystarczającą pojemność dostępną dla twoich potrzeb.

+0

Jeśli chcę utworzyć grupę taką jak WhatsApp z 5000 użytkownikami, to będzie działać w 100 połączeniach. –

+0

@PratikButani, myślę, że będzie działać pod warunkiem, że w dowolnym momencie nie więcej niż 100 użytkowników otworzy aplikację czatu grupowego, a twoja aplikacja nie będzie mogła pozostać połączona z firewallem w tle w poszukiwaniu nowych wiadomości, ponieważ zostanie to policzone jako połączenie. –