我是一名刚接触 Golang 的 PHP 开发人员。PHP 带有一个内置服务器,不推荐用于生产。我阅读了astaxie 写的关于 Go 网络开发的精美书籍,以及关于编写网络应用程序的golang.org 示例。他们都使用http.ListenAndServe()来创建 Web 服务器。我只想知道这个服务器是否可以在生产中使用,还是只是一个像 PHP 内置服务器这样的虚拟服务器?通过生产我的意思是,它可以像 Apache 或 ngnix 服务器一样处理巨大的流量吗?
2 回答
陪伴而非守候
TA贡献1757条经验 获得超8个赞
简短的回答:是的。
更长的答案:您当然可以将内置的 Web 服务器用于生产流量。您今天很有可能已经使用过它,因为 Google 使用它提供了一些流量。我认识很多公司,包括我工作的那家将它用于生产流量的公司。顺便说一句,我不知道在 Go 中广泛使用的 Web 服务器不使用标准 Web 服务器。
但请记住,您需要调整客户端超时等内容以使其真正健壮,并可能限制传入连接等。
守着一只汪
TA贡献1872条经验 获得超3个赞
要添加到@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 运行所有内容仍然很好用于生产。
- 2 回答
- 0 关注
- 213 浏览
添加回答
举报
0/150
提交
取消