Sto progettando un nuovo server che deve supportare migliaia di connessioni UDP (da qualche parte circa 100.000 sessioni). Qualche input o suggerimento su quale usare?select vs poll vs epoll
risposta
Linux: epoll
FreeBSD: kqueue
Finestre: ??
Ci sono librerie di wrapper, come libevent e libev, che possono astrarre questo per te.
La risposta è epoll se si utilizza Linux, kqueue se si utilizzano porte di completamento FreeBSD o Mac OS X e i/o se si utilizza Windows.
Alcune cose aggiuntive si (quasi certamente) desiderare di ricerca sono: tecniche di bilanciamento
- carico
- networking
- architettura di database
- tabelle hash perfetta multi-threaded
Inoltre, è importante da notare a UDP non ha "connessioni" al contrario di TCP. Sarebbe anche nel tuo migliore interesse iniziare in scala ridotta e di dimensioni maggiori, dal momento che il debugging di soluzioni basate su reti può essere difficile.
Grazie per la risposta. Capisco che non esiste una cosa chiamata connessioni UDP in quanto è un comunicatore orientato alla connessione. L'applicazione che avevo in mente è basata sulla sessione, quindi invece della sessione l'ho menzionata come connessione. Colpa mia. Inoltre ho provato più di 200.000 sessioni basate sulla selezione con un'applicazione multithread. Volevo solo ottimizzare. Inoltre, non è nuovo per la creazione di una soluzione di architettura scalabile. Il bilanciamento del carico potrebbe non essere adatto al tipo di server che si sta guardando. È sicuramente un networking multithread. Probabilmente useranno un qualche tipo di pattern produttore/consumatore. – ravi
L'autore di CURL ha scritto un articolo straordinario su poll vs select vs event libraries.
Questa guida non ha aiutato affatto. Fondamentalmente supponeva che tutti conoscessero le principali differenze tra i tre. – enigmaticPhysicist
Si prega di fornire almeno un sommario e non solo un link nudo – MikeMB
@enigmaticPhysicist - Sono d'accordo con te. Ho trovato questo articolo più dettagliato, spero che aiuti: https://www.ulduzsoft.com/2014/01/select-poll-epoll-practical-difference-for-system-architects/ –
- 1. select(), poll() o epoll()? per l'attributo sysfs
- 2. Java BlockingQueue take() vs poll()
- 3. Win32 select/poll/eof/ANYTHING?
- 4. rotaie collection_select vs. select
- 5. Utilizzo di select()/poll() nel driver di dispositivo
- 6. DataTable Selezionare vs LINQ Select
- 7. selettori jQuery: multiselect vs select
- 8. Meccanismi degli eventi di rete Level vs Edge Trigger
- 9. pg_dump vs COPY (SELECT * FROM my_table)
- 10. SQL SELECT speed int vs varchar
- 11. polling vs polling lungo
- 12. limite vs esiste vs count (*) vs count (id) in MySQL
- 13. ID vs UniqueID vs ClientID vs UniqueClientID vs StaticClientID?
- 14. VS 2008 vs VS 2008 Express
- 15. .NET vs ASP.NET vs CLR vs ASP
- 16. Atomikos vs JOTM vs Bitronix vs?
- 17. Accumulare vs piega vs ridurre vs comprimere
- 18. ACE vs Boost vs Poco vs wxWidgets
- 19. VS 2013 MSTest vs nUnit vs xUnit
- 20. control.BeginInvoke() Vs Dispatcher Vs SynchronizationContext Vs .. - AFFIDABILITÀ
- 21. Exec vs ExecWait vs ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs ExecDos vs ExeCmd
- 22. bigtable vs cassandra vs simpledb vs dynamo vs couchdb vs hypertable vs riak vs hbase, cosa hanno in comune?
- 23. e vs * e | vs +
- 24. SpiderMonkey vs JavaScriptCore vs?
- 25. * vs ** vs *** in Proguard?
- 26. prestazioni epoll
- 27. bundler vs RVM vs gemme vs RubyGems vs gemsets vs system ruby
- 28. Misurare il tempo in Linux - tempo vs orologio vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
- 29. innerText vs innerHtml vs label vs text vs textContent vs outerText
- 30. Mathematica: non valutata vs Defer vs attesa vs HoldForm vs HoldAllComplete vs etc etc
quale sistema operativo sei? differenti sistemi operativi diversi. –
Linux Redhat versione aziendale 5 – ravi
@ravi: è necessario verificare anche framework basati su eventi (asincroni) come Twisted, in cui è possibile scrivere il server e testarlo con vari metodi di polling: [TwistedMatrix.com: Scelta di un reattore] (http : //twistedmatrix.com/documents/current/core/howto/choosing-reactor.html) –