Obsluga zapytan od Klientow przez serwer

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!

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.

1

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

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/

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0