2015-06-14 13 views
8

Sono uno sviluppatore PHP nuovo di Golang. PHP viene fornito con un server integrato che non è consigliato per la produzione. Ho letto lo beautiful book by astaxie sullo sviluppo web in Go e anche lo golang.org example on writing a web app. Entrambi usano lo http.ListenAndServe() per creare un server web. Voglio solo sapere se questo server può essere utilizzato in produzione o è solo un server fittizio come il server integrato di PHP? Per produzione intendo, può gestire un traffico enorme come un server Apache o ngnix?Utilizzo del server HTTP di Go per la produzione

+2

OP chiesto "Voglio solo sapere se questo server può essere utilizzato in produzione o è solo un server fittizio". Questo non è un IMO basato sull'opinione pubblica, è una domanda focalizzata con una risposta definita (sì), ma non una semplice domanda di programmazione, lo ammetto. –

risposta

5

Risposta breve: SÌ.

Risposta più lunga: è possibile utilizzare il server Web incorporato per il traffico di produzione. Ci sono buone probabilità che tu lo abbia usato oggi, dal momento che Google serve un po 'di traffico che lo utilizza. Conosco molte aziende, inclusa quella per cui lavoro, che la utilizzano per il traffico di produzione. BTW Non conosco un server Web largamente utilizzato in Go che fa non utilizza il server web standard.

Occorre tuttavia tenere presente che è necessario modificare le cose come client di timeout per renderlo davvero robusta, e forse limitare le connessioni in entrata, ecc

+0

è l'accorciatore di URL di google che usano il server Go in? –

+2

@AkashKumarSharma Nessuna idea. Una cosa che so che gira su di esso sono i loro server di download. Vedi qui, questa è una bella chiacchierata https://talks.golang.org/2013/oscon-dl.slide#1 –

3

Per aggiungere a @ risposta di Not_a_Golfer: Go del web-server è estremamente solido e abbastanza ben testato finora.

Ci sono, tuttavia, motivi per cui si potrebbe mettere dietro un proxy inverso come nginx, Apache o HAProxy, tra cui:

  • terminazione SSL (nginx ha un sacco di funzioni aggiuntive TLS che dovrete per implementare parzialmente te stesso, come semplice supporto pinzatura OCSP)
  • caching proxy (che serve risposte statiche dalla cache, o 500 se il GO applicazione si blocca)
  • registrazione Performant
  • supporto
  • SPDY (anche se entrambi Vai & nginx sarà proba Bly ottenere HTTP/2 allo stesso tempo)
  • supporto incorporato gzip e opzioni
  • descrittore di file di cache per file statici

ho generalmente preferiscono mettere nginx davanti se ho l'opzione , perché sebbene tu possa implementare tutte queste funzionalità in Go, c'è un po 'di re-invenzione delle ruote in corso. È possibile ottenere la maggior parte del modo con middleware come gorilla/handlers e la propria libreria crypto/tls, e se non si è un operatore e/o si desidera mantenere le cose veramente magre, quindi eseguire tutto direttamente da Go è ancora valido per la produzione .

+0

Ho intenzione di usare nginx principalmente per il caching del proxy ora che ritiene che il server Go sia molto performante. –

Problemi correlati