2012-07-10 16 views
18

Buduję aplikację społecznościową i zastanawiałem się, w jaki sposób Facebook realizuje powiadomienia. Jak wiadomo, powiadomienia na Facebooku są natychmiastowe. Natychmiast po podjęciu działania ludzie są powiadamiani.Natychmiastowe powiadomienia, takie jak Facebook

Zakładam, że nie mają one zapytania uruchomionego w bazie danych przez cały czas.

Czy ktoś może wskazać mi właściwy kierunek. Dzięki

+1

Pytanie jest dość otwarte, ponieważ jest mnóstwo alternatyw. Będziesz potrzebował czegoś, co pozwoli serwerowi przesłać do klienta. [StackOverlow stare pytanie z informacją] (http://stackoverflow.com/questions/471780/asp-net-http-server-push-to-client) –

Odpowiedz

25

Ponieważ twoje pytanie jest oznaczone jako C#, ASP.NET powinieneś użyć niesamowitej biblioteki SignalR. Zasadniczo SignalR umożliwia wysyłanie powiadomień push do klientów. Na jaką dokładnie podstawową technikę ma wpływ ma zdolność serwera i klienta.

Istnieje duża czat w czasie rzeczywistym o nazwie jabbR że jest zbudowany na szczycie SignalR:

http://jabbr.net/

Oto kilka linków, które powinny zacząć grę.

8

Facebook używa protokołu komunikacyjnego (który zaprojektował) o nazwie Thrift. Umożliwia to powiadomienia od klientów na serwerach o bardzo niskim opóźnieniu. Mogę sobie wyobrazić, że aktualizacje na serwerze będą uruchamiane w zależności od działania użytkownika, a odpowiedni użytkownicy, którzy są zalogowani, będą powiadamiani przez ten sam mechanizm.

Korzystanie z protokołu komunikacyjnego, takiego jak oszczędność (patrz także Protocol buffers) klienci nie muszą odpytywać serwera w poszukiwaniu aktualizacji, zamiast tego serwer może przekazywać powiadomienia do klientów. Aby to zrobić, serwer musi mieć pojęcie, kto jest zalogowany w tym samym czasie (logowanie, wylogowanie się z uzgadnianiem) i ich użytkowników, którzy powinni otrzymywać powiadomienia od konkretnej akcji klienta.

Łatwiej powiedzieć, niż zrobić, zwłaszcza gdy zalogowanych jest 800 milionów potencjalnych użytkowników!

0

Czasami warto spojrzeć na http://nodejs.org/ - jest to model sterowany zdarzeniami, który idealnie nadaje się do scenariusza "sieci społecznościowej"/natychmiastowego powiadomienia.

FYI: Może się również okazać, że korzystanie z bazy danych innej niż SQL, takiej jak MongoDB (http://www.mongodb.org/), będzie dużo szybsze, gdy zaczniemy sprawdzać od DB, ponieważ każdy obiekt "osoby" w Scenariusz sieci społecznościowej ma swoje unikalne cechy - które w normalnej bazie danych SQL są trudne do zaprojektowania.

Powiązane problemy