Projektuję nowy serwer, który musi obsługiwać tysiące połączeń UDP (gdzieś około 100 000 sesji). Wszelkie dane wejściowe lub sugestie, których należy użyć?select vs poll vs epoll
Odpowiedz
Linux: epoll
FreeBSD: kqueue
Okna:?
Istnieją biblioteki otoki, takie jak libevent i libev, które mogą je dla ciebie streścić.
Odpowiedź jest epoll, jeśli używasz systemu Linux, kqueue, jeśli używasz FreeBSD lub Mac OS X, i portów zakończenia i/o, jeśli jesteś w systemie Windows.
Niektóre dodatkowe rzeczy będą (prawie na pewno), które chcesz badania są: techniki wyważania
- obciążenia
- wielowątkowy sieci
- architektura Database
- Doskonałe stoły hash
Dodatkowo, ważne jest, aby było ważne: w UDP nie ma "połączeń" w przeciwieństwie do TCP. Byłoby również w twoim najlepszym interesie, aby zacząć od małych i większych rozmiarów, ponieważ debugowanie rozwiązań opartych na sieci może być wyzwaniem.
Dzięki za odpowiedź. Rozumiem, że nie ma czegoś takiego jak połączenia UDP, ponieważ jest to komunikacja bezpołączeniowa zorientowana na komunikację. Aplikacja, o której myślałem, jest oparta na sesjach, więc zamiast sesji wspomniałem o niej jako o połączeniu. Mój błąd. Próbowałem także ponad 200 000 sesji w oparciu o select z aplikacją wielowątkową. Chciałem tylko zoptymalizować. Nie jest też nowością w budowaniu skalowalnej architektury. Równoważenie obciążenia może nie być odpowiednie dla rodzaju serwera, na który patrzę. Jest to z pewnością sieć wielowątkowa. Najprawdopodobniej użyje pewnego rodzaju wzoru producenta/konsumenta. – ravi
Autor CURL napisał niesamowity artykuł na temat poll vs select vs event libraries.
Ten przewodnik w ogóle nie pomógł. Zasadniczo założono, że wszyscy znają główne różnice między tymi trzema. – enigmaticPhysicist
Podaj co najmniej podsumowanie, a nie tylko odsłonięty link – MikeMB
@enigmaticPhysicist - Zgadzam się z Tobą. Znalazłem ten artykuł bardziej szczegółowo, mam nadzieję, że pomoże: https://www.ulduzsoft.com/2014/01/select-poll-epoll-practical-difference-for-system-architects/ –
którego używasz? różne os mają różne specyficzne cechy. –
Linux Redhat wersja korporacyjna 5 – ravi
@ravi: Powinieneś także sprawdzić struktury oparte na zdarzeniach (asychroniczne), takie jak Twisted, gdzie możesz napisać swój serwer i przetestować go za pomocą różnych metod głosowania: [TwistedMatrix.com: Wybór reaktora] (http : //twistedmatrix.com/documents/current/core/howto/choosing-reactor.html) –