Obsluga zapytan od Klientow przez serwer

Obsluga zapytan od Klientow przez serwer
KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 701
0

Cześć,
piszę serwer do obsługi wielu Klientów. Jestem już na dość zaawansowanym etapie ale naszły mnie wątpliwości czy dobrze to robię.

Chodzi mianowicie o to w jaki sposób obsługiwać takich Klientów.

Aktualnie wygląda to tak, że każdy nowy Klient trafia do tablicy, odpalany jest nowy wątek z obsługą takiego Klienta i przekazany do niego wskaźnik na tablicę. W ten sposób wszystko co wysyła Klient trafia od razu do jego wątku i tam jest przetwarzane.

Zacząłem się zastanawiać czy nie lepiej by było zrobić np. globalną kolejkę obsługiwaną przez np 10 wątków, które pobierałyby najstarsze pozycje kolejki i obsługiwały w ten sposób komunikaty od Klientów.

Pojawia się pytanie, które rozwiązanie byłoby lepsze dla 100, 1000, 5 000 czy 10 000 Klientów? A może oba są dobre i to kwestia po prostu wyboru metody?

Proszę Was o pomoc i opinię. Macie może jakieś doświadczenia?

Pozdrawiam!

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
2

Znaczna większość serwerów na stałą liczbę instancji (wątków) opartą właśnie o kolejkę, zatem stawiam, że to jest najlepsze rozwiązanie. Patrz: Apache, nginx.

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1

zależy od ilości planowanych klientów - przy 1000 jednoczesnych po prostu może Ci braknąć zasobów

YU
  • Rejestracja: dni
  • Ostatnio: dni
1

To co napisali poprzednicy jest oczywiscie prawdą, ale jeśli chcesz bardziej zagłębić się w temat to możesz zerknąć tutaj:
http://www.kegel.com/c10k.html. Co prawda tytuł powinien raczej zostać zmieniony na "The 1024k problem", jednak techniki tam opisane są dzisiaj jak najbardziej aktualne.
Oprócz tego polecam materiały/prezentacje z bloga H2O, który jest uważany za najwydajniejszy serwer http na świecie: http://blog.kazuhooku.com/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.