webentwicklung-frage-antwort-db.com.de

wähle vs poll vs epoll

Ich entwerfe einen neuen Server, der Tausende von UDP-Verbindungen unterstützen muss (ungefähr 100.000 Sitzungen). Irgendwelche Eingaben oder Vorschläge für welche?

63
ravi

Die Antwort lautet epoll, wenn Sie Linux verwenden, kqueue, wenn Sie FreeBSD oder Mac OS X verwenden, und i/o-Completion-Ports, wenn Sie Windows verwenden.

Einige zusätzliche Dinge, die Sie (mit ziemlicher Sicherheit) erforschen möchten, sind:

  • Lastausgleichstechniken
  • Multi-Thread-Netzwerk
  • Datenbankarchitektur
  • Perfekte Hash-Tabellen

Außerdem ist wichtig zu beachten, dass UDP im Gegensatz zu TCP keine "Verbindungen" hat. Es wäre auch in Ihrem Interesse, klein anzufangen und größer zu skalieren, da das Debuggen netzwerkbasierter Lösungen eine Herausforderung sein kann.

44
Kalantir

Der Autor von CURL schrieb einen erstaunlichen Artikel über mfrage gegen Auswahl gegen Ereignisbibliotheken.

40
unixman83

Linux: epoll FreeBSD: kqueue Windows: ??

Es gibt Wrapper-Bibliotheken wie libevent und libev, die dies für Sie abstrahieren können.

18
Yann Ramin