2010-11-04 8 views
5

Jestem obecnie projektowaniu systemu, w którym musimy wiedzieć, czy użytkownik jest nadal online/zalogowany.Projekt „Jestem żywy” usługi

System jest oparty na sieci Web Net, więc mamy zamiar zrobić przy użyciu kodu AJAX/JSONP, który wysyła sygnał do serwera co 2 minuty.

Istnieje duża liczba użytkowników, więc ping co 2 minuty powoduje ok. 600 pingów na sekundę.

Dlatego zamierzamy umieścić tę usługę na jej własnym serwerze i przechowywać wszystkie informacje w pamięci za pomocą prędkości.

Pamięć podręczna będzie dziedziczeniem nazwanych par wartości, pierwszej grupy, a następnie osoby i znacznika czasu dla każdej osoby.

Pytanie czy możemy napisać bezpośrednio do pamięci podręcznej prędkości dla każdego pinga? Czy może to spowodować blokowanie? Czy powinniśmy najpierw napisać do kolejki, a następnie zaktualizować pamięć podręczną z kolejki?

W tym samym czasie, gdy aktualizujemy pamięć podręczną, inni użytkownicy będą żądać informacji na temat poszczególnych grup.

+0

Dla grup REDiS rzeczy jest o wiele lepiej nadaje się: http://code.google.com/p/redis/wiki/SaddCommand ... Wątpię trzeba się martwić o blokowania lub współbieżności przy dostępie prędkość –

+0

http://msdn.microsoft.com/en-us/library/ee790890.aspx –

Odpowiedz

2

Myślę, że powinieneś być w stanie to zrobić, jeśli możesz zmienić swój model tak, aby opierał się na każdym elemencie pamięci podręcznej wokół użytkownika, tak jak to zostało opisane jako grupa użytkowników. Jeśli potrzebujesz możliwości wysyłania zapytań do tych elementów według grup, musisz wymyślić sposób na zachowanie indeksu (potencjalnie w pamięci) kluczy i grup, do których będą wysyłane zapytania (według zapytania to powolny punkt).

To może sprawić, że Likelyhood was uaktualniające tę samą pozycję w tym samym czasie koło tych plików (jak każdy klient będzie aktualizacją tylko co 2 minuty)

Pozwoliłoby do skorzystania optymistycznego Współbieżnym model dla prędkość omówiona w MSDN na poniższym łączu, bez utraty danych.

http://msdn.microsoft.com/en-us/library/ee790890.aspx