猿问

使用 Go 的 HTTP 服务器进行生产

我是一名刚接触 Golang 的 PHP 开发人员。PHP 带有一个内置服务器,不推荐用于生产。我阅读了astaxie 写的关于 Go 网络开发的精美书籍,以及关于编写网络应用程序的golang.org 示例。他们都使用http.ListenAndServe()来创建 Web 服务器。我只想知道这个服务器是否可以在生产中使用,还是只是一个像 PHP 内置服务器这样的虚拟服务器?通过生产我的意思是,它可以像 Apache 或 ngnix 服务器一样处理巨大的流量吗?


萧十郎
浏览 214回答 2
2回答

陪伴而非守候

简短的回答:是的。更长的答案:您当然可以将内置的 Web 服务器用于生产流量。您今天很有可能已经使用过它,因为 Google 使用它提供了一些流量。我认识很多公司,包括我工作的那家将它用于生产流量的公司。顺便说一句,我不知道在 Go 中广泛使用的 Web 服务器不使用标准 Web 服务器。但请记住,您需要调整客户端超时等内容以使其真正健壮,并可能限制传入连接等。

守着一只汪

要添加到@Not_a_Golfer 的回答中:Go 的网络服务器非常可靠,并且到目前为止经过了很好的测试。但是,您可能会将其置于 nginx、Apache 或 HAProxy 等反向代理后面的原因包括:SSL 终止(nginx 有很多额外的 TLS 功能,你必须自己部分实现,比如简单的 OCSP 装订支持)代理缓存(从缓存提供静态响应,如果您的 Go 应用程序崩溃,则为 500)高性能日志SPDY 支持(尽管 Go 和 nginx 可能会同时获得 HTTP/2)内置 gzip 支持和选项静态文件的文件描述符缓存如果可以的话,我通常更喜欢将 nginx 放在前面,因为尽管您可以在 Go 中实现所有这些功能,但仍然需要重新发明一些轮子。您可以使用gorilla/handlers和 Go 自己的 crypto/tls lib等中间件获得大部分方法,如果您不是运维人员和/或想要保持精简,那么直接从 Go 运行所有内容仍然很好用于生产。
随时随地看视频慕课网APP

相关分类

Go
我要回答