Задать вопрос
@ermak148

В чем смысл использования Golang как веб сервер?

Наткнулся на ютубе плейлист уроков по Go, причем 50 или 60% из них были про создание веб сервера. Возможно, немного странный вопрос, но все же. В чем смысл? А точнее где он? Просмотрев несколько тестов go vs java/c++/c#, то в большинстве из них он имел самое высокое время выполнения теста, в том же сравнении с веб сервером на spring go имеет время ответа сервера (в одинаковых условиях) до 20% большее чем у java. Я не могу понять что это за трэнд такой с использованием его для создания веб приложений. Объясните пожалуйста
  • Вопрос задан
  • 335 просмотров
Подписаться 1 Простой Комментировать
Ответ пользователя Александр Павлюк К ответам на вопрос (3)
Го намного проще многих других языков, соответственно проще читать и понимать чужой код, что ценится в больших компаниях, где работает много людей. Плюсом ценится то, что довольно сложно выстрелить себе в ногу.

Тесты есть разные, Го примерно идет в ногу с Джавой и Шарпом, особенно в случае многопоточных нагруженных серверов. А если посмотреть сколько он потребляет при этом памяти, то даже выходит вперед по эффективности.

На Го очень просто писать многопоточность и асинхронность, не нужно думать об await-ах, каждая горутина имеет свой стек, что снимает с программиста много головной боли. Вся стандартная библиотека и большой набор библиотек с гитхаба из коробки поддерживают асинхронность и потоковую обработку данных, работать с этим сильно проще, чем в других языках. Соответственно, сложнее накосячить.

Но абстракций на Го очень мало, по сравнению с той же Джавой, он довольно бедно выглядит (что и дает простоту чтения кода). Это является минусом в определенных ситуациях, поэтому на Го стараются писать небольшие сервисы.

В итоге, легковесность горутин, легкость работы с ними и асинхронная модель из коробки (не создается тред на каждую рутину, а наоборот, рутины обрабатываются разными тредами по необходимости) привели к тому, что ниша Го это сервисы, которые упираются в ожидание ресурсов от каких-то внешних систем по сети. То есть, идеальный кейс для веб-сервера, который собирает под капотом инфу с БД и других сервисов. По сути такой сервис большую часть времени ждет ресурсов по сети, в Го это ожидание сделано очень эффективно.
Ответ написан
Комментировать