2010-10-20 9 views

Odpowiedz

12

Serwer WWW musi obsługiwać połączeń równoczesnych. Istnieje wiele sposobów, aby to zrobić, niektóre z nich to:

  • Proces na połączenie.
  • Proces na połączenie i pula procesów gotowych do użycia.
  • Gwint na połączenie.
  • Gwint na połączenie i pula wątków jest gotowa do użycia.
  • Pojedynczy proces, obsłużyć każde zdarzenie (akceptowane połączenie, dane dostępne do odczytu, można napisać do klienta, ...) na wywołanie zwrotne.
  • Niektóre kombinacje powyższych.
  • ...

Na koniec, rozróżnienie kończy się w jaki sposób można przechowywać każdy stan połączenia (wyraźnie w strukturze kontekstu, w sposób dorozumiany w stosie, niejawnie kontynuacji, ...) i w jaki sposób planujesz połączenia (pozwól programistom systemu operacyjnego na wykonanie, pozwól prymitywom odpytywania systemu operacyjnego zrobić ...).

1

Event-driven sposób zmierza do rozwiązania C10K problem. Przekształca tradycyjny "model push" w "model przyciągający", aby stworzyć niezablokowane zdarzenie we/wy. Mówiąc najprościej, architektura sterowana zdarzeniami zapobiega tworzeniu dodatkowych wątków i przełączeń kontekstowych wątku, a zwykle kończy się lepszą wydajnością i mniejszym zużyciem zasobów.

Niektóre przegląd od dewelopera szynach, zawiera również analogię: http://odysseyonrails.com/articles/8

+0

Należy zauważyć, że odradza się udzielanie jedynie linków, odpowiedzi SO powinny być punktem końcowym wyszukiwania rozwiązania (a jest to kolejne zatrzymanie odniesień, które z czasem stają się nieaktualne). Proszę rozważyć dodanie samodzielnego streszczenia tutaj, zachowując odnośnik jako odniesienie. – kleopatra