Category : golang

golang
Кастомные memory pools в Golang

Привет, Хабр!Сегодня рассмотрим, почему стандартный sync.Pool в Go не всегда спасает, когда речь идёт о высоконагруженных сервисах, и как кастомные memory pools позволяют взять под контроль работу с памятью. Что не так с sync.Pool? sync.Pool отлично подходит для переиспользования объектов в простых сценариях. Он работает хорошо, когда нагрузка стабильна и объекты используются короткое время. Но как только запускаем систему с жесткими требованиями к задержкам, возникают две проблемки:Непредсказу…

  • воскресенье, 9 марта 2025 г. в 00:00:07
golang
Fan-Out, Fan-In с динамической балансировкой горутин в Golang

Привет, Хабр!Когда речь заходит о конкурентности в Go, паттерн Fan‑Out, Fan‑In — одна из важных концепций на мой взгляд. Он позволяет распределять задачи между несколькими горутинами и затем собирать результаты обратно в один поток.Что такое Fan-Out, Fan-In?Fan‑Out означает, что одна горутина отправляет задачи нескольким другим. Это позволяет распараллелить вычисления, что полезно при работе с IO‑операциями, загрузкой данных или обработкой запросов.Fan‑In — это обратный процесс. Когда несколько…

  • воскресенье, 9 марта 2025 г. в 00:00:06
golang
Как я создавал Observability для своих pet-проектов. Часть 2

В первой части мы развернули базовый стек для сбора метрик, логов и трейсов и интегрировали его с приложением на Laravel. Теперь покажу настройку Observability на примере простого Golang-приложения — настроим в нём структурированные логи, распределённый трейсинг и метрики, а также интегрируем с нашим стеком.Для нетерпеливых, по традиции можете сразу посмотреть репозиторий с примером. Запускаете docker-compose up в корне и docker compose up в ./examaples/golang, переходите на http://localhos…

  • суббота, 8 марта 2025 г. в 00:00:15
golang
Как я написал пакет для быстрого создания и управления формами в Go

Привет, Хабровчане! Сегодня я хочу рассказать о своём небольшом проекте - пакете goform, который я написал для упрощения работы с HTML-формами в Go. Это не просто ещё один пакет, а результат моего опыта и желания сделать процесс работы с формами более удобным и эффективным. В этой статье я поделюсь историей создания, функциональностью пакета и тем, как он может быть полезен другим разработчикам.Заранее хочу сказать что статья никоим образом не предназначена для пиара, понимаю что задачка фактич…

  • суббота, 8 марта 2025 г. в 00:00:14
golang
Design by Contract на минималках: пишем assertions и улучшаем устойчивость на Go

Всем привет! Меня зовут Александр Иванов, я старший разработчик в YADRO, работаю над созданием средств управления элементами опорной сети и пишу на Go. Мы с командой разрабатываем продукт для сервисов сотовой связи — качество нашей работы влияет на пользовательский опыт тысяч людей. Поэтому часто мы ищем решения, как повысить устойчивость работы кода в продакшене. Об одном из таких решений я расскажу в этой статье. Design by Contract — подход к проектированию ПО, в котором взаимодействие компон…

  • суббота, 8 марта 2025 г. в 00:00:13
golang
#1.2 Самописное ядро для Minecraft — ULE на Go lang

Приветствую всех! Раз вы попали сюда, значит, вы хотите создать собственное ядро для игры Minecraft на языке программирования Go. Эта статья — римейк статьи о создании ядра, поэтому авторство можно приписать первоначальному автору. Однако так как он перешел на Rust, я получил эстафету и продолжил написание ядра на Go. В его коде было много ошибок, так как почти всё хранилось на его GitHub, который он почистил для Rust. Я переработал систему, чтобы вся основная часть хранилась локально, кроме би…

  • суббота, 8 марта 2025 г. в 00:00:12
golang
Настроить GPU-экспортеры? Легче создать свой или «как подружить экспортер Nvidia-smi-exporter с Pod…

Привет! Меня зовут Настя Бережная, я – DevOps-инженер, и в этой статье я расскажу о том, как мы пробовали использовать для решения своей задачи экспортеры Nvidia DCGM-Exporter и nvidia-gpu-exporter. Но после некоторых скитаний по документациям, форумам и попытками настроить экспортер малой кровью, было решено создать свой. Начнем с самого начала. К нашей команде пришел бизнес на первый взгляд с достаточно тривиальной задачей – реализовать отслеживание ресурсов видеопамяти в разрезе прило…

  • суббота, 8 марта 2025 г. в 00:00:11
golang
Компилятор GO. Добавляем цикл WHILE

На одной из конференций я наблюдал, как наши коллеги реализовывали тернарный оператор в Go с помощью комментариев. Доклад длился всего минут 10, и, честно говоря, я не смог уловить ничего внятного, кроме того, что ребята явно хорошо повеселились. Однако это вдохновило меня разобраться, как работает компилятор Go под капотом. А лучший способ разобраться — это попробовать написать что-то своё.Самым простым и понятным для меня в этом плане показалась реализация цикла while. В этой статье я покажу,…

  • суббота, 8 марта 2025 г. в 00:00:10
golang
Выходим за рамки: создание оператора для наблюдения за внешними ресурсами в Kubernetes

Привет! Я Александр Зверев, инженер архитектурных решений в компании «Флант». Сегодня поговорим про всеми любимый Kubernetes. Этот оркестратор стал таким популярным не только потому что он эффективно управляет контейнерами. Ещё его можно прокачать под себя. И для этого у него есть все необходимые инструменты. Новые возможности можно добавить с помощью контроллеров, операторов и создания новых типов ресурсов.При этом уже есть проекты, которые пошли дальше и научились управлять ресурсами за преде…

  • пятница, 7 марта 2025 г. в 00:00:14