2 回答
TA贡献1866条经验 获得超5个赞
WSGI
协议特定于 Python¹。使用 Go,你有三个选项(实际上是四个,但CGI
对于中到高负载设置,应该不考虑普通):
HTTP
Go 标准库的内置服务设施。在这种情况下,您的应用程序是一个独立的服务器。这可能是最简单的设置,但可能存在以下问题:
要在特权端口号(低于 1024,并且 80 在此范围内)上以降级的特权(您必须这样做)运行您的应用程序,您需要使用专门的包装器或 POSIX 功能。
为了在不丢失连接的情况下提供优雅的重新部署,您需要另一个包装器(如
goagain
)。与上面相同,但在
HTTP
Web 服务器形式的反向代理后面。主要消除了独立变体的问题,但仍然有
HTTP
来回传递全流量的开销。FastCGI
通过合适的网络服务器。Nginx
并且Apache
(以及许多其他人)对此没有意见。FCGI
客户端实现在 Go 标准库中可用。除了没有独立设置的问题外,还实现了更高效的数据交换协议。另一个好处是您的 Go 服务器可能使用 Unix 管道与前端 Web 服务器通信,其传输成本低于反向
HTTP
代理变体中涉及的 TCP 套接字。
因此,如果您的设置当前使用WSGI
,我会说使用FCGI
.
¹ 正如一些评论者指出的那样,严格来说,这并不完全正确:WSGI 允许将用任何语言编写的 Web 服务应用程序与 Web 服务器或应用程序服务器(依次连接到 Web 服务器)分离。
为了实现这一点,双方必须使用相同的协议 WSGI,该协议与语言无关。尽管如此,似乎大多数不是用 Python 编写的软件会使用 HTTP 或 FastCGI 与前端服务器进行通信。
- 2 回答
- 0 关注
- 421 浏览
添加回答
举报