为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

简短的回答:是的。

更长的答案:您当然可以将内置的 Web 服务器用于生产流量。您今天很有可能已经使用过它,因为 Google 使用它提供了一些流量。我认识很多公司,包括我工作的那家将它用于生产流量的公司。顺便说一句,我不知道在 Go 中广泛使用的 Web 服务器使用标准 Web 服务器。

但请记住,您需要调整客户端超时等内容以使其真正健壮,并可能限制传入连接等。


查看完整回答
反对 回复 2021-10-18
?
守着一只汪

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 运行所有内容仍然很好用于生产。


查看完整回答
反对 回复 2021-10-18
  • 2 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信