Ответ 1
WSGI
протокол специфичен для Python. С Go у вас есть три варианта (на самом деле, четыре, но обычный CGI
, предположительно, не следует рассматривать для установок с умеренной и высокой нагрузкой):
-
Встроенная служба обслуживания
HTTP
стандартной библиотеки Go.В этом случае ваше приложение является автономным сервером. Это может быть самая простая настройка, но у нее могут быть следующие проблемы:
- Чтобы запустить приложение с пониженными привилегиями (вы должны это сделать) на номер привилегированного порта (ниже 1024 и 80 в этом диапазоне), вам нужно использовать специализированную оболочку или возможности POSIX.
- Чтобы обеспечить изящные перераспределения без потери соединений, вам понадобится другая оболочка (например,
goagain
).
-
То же, что и выше, но за обратным прокси-сервером
HTTP
в виде веб-сервера.В основном устраняет проблемы автономного варианта, но все еще имеет накладные расходы на передачу полного трафика
HTTP
вперед и назад. -
FastCGI
через подходящий веб-сервер.Nginx
иApache
(и многие другие) в порядке.FCGI
реализация клиента доступна в стандартной библиотеке Go.В дополнение к отсутствию проблем с автономной настройкой, реализуется более эффективный протокол обмена данными. Еще один бонус заключается в том, что ваш сервер Go может взаимодействовать с интерфейсным веб-сервером, используя Unix-каналы, которые имеют меньшую стоимость передачи, чем TCP-сокеты, задействованные в обратном варианте
HTTP
.
Итак, если ваша установка в настоящее время использует WSGI
, я бы сказал, перейдите с FCGI
.