konto usunięte

Temat: Globalna struktura danych po stronie serwera

Witam,

W swoim projekcie staram się znaleźć rozwiązanie na problem kolejkowania obsługi
klientow.
Dana osoba uderza do pewnej asynchronicznej akcji kontrolera, w ramach ktorej
identyfikator klienta bylby zapisywany do nieblokujacej kolejki FIFO, z tym że ow
struktura musialaby byc globalna w ramach danej instancji aplikacji na serwerze (tak to przynajmniej widze)
i wlasnie nie wiem jak cos takiego moglbym zasymulowac.
Projekt oparty jest o MVC 4 + sql sever compact.

Temat: Globalna struktura danych po stronie serwera

Mateusz M.:

Co to jest nieblokujaca kolejka FIFO globalna w ramach danej instancji aplikacji na serwerze ??
Bo nie bardzo wiem o co Ci chodzi.

konto usunięte

Temat: Globalna struktura danych po stronie serwera

W projekcie chcialbym moc kolejkowac przypisywanie graczy do konkretnych stołów/pokojow.
Jedne z zalozen projektu:
- na danym stole przebywac moga max 4 osoby,
- gracz jest przypisywany do randomowego stolu

Podsylam obrazek przedstawiajacy sytuacje, ktora mnie trapi.

Obrazek


Etapy:
- czas t1: znajdowanie wszystkich wolnych stolow
- czas t2: wylosowanie randomowego wolnego stolu
- czas t3: zapisanie odopowiednich zmian w bazie danych

Chodzi o moment t3. W tym czasie, gdy gracz nr1 zapisuje zmiany do bazy,
gracz nr2 w momencie t2 moze miec nieprawidlowo informacje o wolnych stolach,
gdyz moze zdarzyc sie sytuacja, ze wylosowany zostanie dla niego stol z 3 osobami,
gdzie w bazie gracz nr1 wlasnie sie zapisal czyniac pokoj pelnym.

I tak aby ustrzec sie przed powyzsza sytuacje doszedlem do wniosku,
ze odpowiednim rozwiazaniem bedzie kolejkowanie graczy i obslugiwanie
ich z osoba. W momencie, gdy danemu graczowi znajdziemy stol, zajmujemy
sie nastepnym, stad tez zamysl nieblokujacej kolejki FIFO, a z racji, ze musimy
jakos te dane trzymac dla wszystkich uzytkownikow aplikacji, musi byc
ona globalna (nie wiem jakiego innego slowa uzyc). Kwestią jest teraz to, gdzie
w kodzie programu utworzyć taką kolejkę aby każdy z graczy miał do niej dostęp.
Innym rozwiązaniem jest skorzystanie po prostu z bazy danych, ale nie wiem czy
nie będzie miało to negatywnego wpływu na wydajność.

PS: Dodam przy okazji, ze w projekcie korzystam z biblioteki SignalR.Ten post został edytowany przez Autora dnia 18.08.13 o godzinie 20:47

konto usunięte

Temat: Globalna struktura danych po stronie serwera

Co sądzicie o skorzystaniu z lockow?Ten post został edytowany przez Autora dnia 19.08.13 o godzinie 08:11
Tomasz M.

Tomasz M. never go full
retard!

Temat: Globalna struktura danych po stronie serwera

Musisz zrobić persystencję, a co jak Ci aplikacja padnie a strukturę miałeś w pamięci? Lepiej już zestawić jakiegośservice'a który to obsługuje, ale ja i tak wykorzystałbym bazę do tego celu.



Wyślij zaproszenie do