Итак, финал части 1! По крайней мере основного разбора без дополнений. Собственно, сегодня мы разберем то, чем в основном с точки зрения ядра ОС и CPU являются все вот эти ваши бэкенды – системные вызовы и всё, что вокруг них.На самом деле механизм немного замудренный и “в лоб” сразу все эти системные вызовы мы разбирать не будем, потому что вокруг них существует ещё несколько концепций.Итак, начнем!User mode, Kernel modeПроцессор исполняет код в разных уровнях привилегий.Это механизм защиты, к…
Для тех, кому хочется сразу посмотреть код: репозиторий сервиса — в конце текста.Откуда задачаНужен сервис, который централизованно выполняет исходящие HTTP-запросы для экосистемы микросервисов и интеграций. Постановка на уровне требований:Два режима входа — и синхронный (ответ нужен вызывающей стороне), и асинхронный (достаточно принять задачу и отдать результат «куда-то ещё»).Два канала постановки — удобно и через HTTP API, и напрямую в Kafka (без лишнего hop через HTTP).Rate limit — защита к…
В данной статье рассматривается создание сервиса для динамического изменения размеров изображений с функциями проксирования и кэширования, а также приводится вариант его применения.ВведениеВ современной веб-разработке работа с изображениями занимает важное место. Проблемы оптимизации скорости загрузки страниц, экономии трафика и адаптивности под разные устройства заставляют искать эффективные способы обработки графики на лету. Такой подход избавляет от необходимости хранить десятки вариаций одн…
Привет, Хабр. Меня зовут Серафим Недошивин, я 18-летний разработчик на Go, PHP и TS. Эта статья не посвящена тонкостям устройства gc нашего любимого языка программирования Go и уж тем более не является строго технической. Более того, эта статья является своего рода одой управленческому учёту малого бизнеса в России, а также всем людям, отдавшим свою жизнь в попытках создать наиболее подходящий инструмент для этой задачи.Автор прекрасно понимает, что тема ERP/CRM систем обсасана со всех сторон е…
Если вы работаете с LLM-провайдерами, то наверняка сталкивались с одной и той же проблемой: у OpenAI лимит 100 RPM на ключ, у Vertex AI — свои квоты на проект, у Anthropic — отдельные ограничения. В итоге приходится держать несколько ключей, балансировать нагрузку вручную, следить, чтобы один заблокированный доступ не уронил всё приложение, и при этом хочется сохранить единый OpenAI-совсместимый эндпоинт для клиентского кода.Именно для этого и создан Auto AI Router — лёгкий прокси-роутер на Go,…
Обзор Phoenix LiveView и его друзей из других стеков: Rails Hotwire, Laravel Livewire и Go Live/HLiveПреамбула: краткая история нежеланияВ начале двухтысячных, когда jQuery еще казался вершиной инженерной мысли, а слово «фреймворк» произносилось с придыханием и легким немецким акцентом, веб-разработчик был существом предсказуемым. Он писал HTML, немного CSS, чуть-чуть серверного кода — и уходил домой к шести. Ajax обрел второе дыхание, и подходы к созданию веб-приложений разветвились, как генеа…
Привет, Habr!Меня зовут Магомед, я руководитель команды «Платформа платежей и коммуникаций» в Lenta tech («Группа Лента»). В статье хочу разобрать задачу приоритезации уведомлений в Kafka на высоких нагрузках. Речь пойдет о платформе коммуникаций, которая обрабатывает SMS, push, email и мессенджеры и за месяц отправляет более 301 млн сообщений.Проблема, с которой пришлось столкнуться, типовая для таких систем: как гарантировать быструю доставку критичных сообщений, если основной объем трафика —…
В игре Warcraft есть такая тварь — железный голем. Здоровенная кукла, слепленная из глины и металла, которую оживляют магическим словом. Тупой, но мощный исполнитель. Сказали бить — бьёт. Сказали охранять — стоит насмерть.Я захотел такого же, но в коде.Телом пусть будет Telegram-бот. А мозгом — нейросеть. Не просто очередной «чат с ИИ», а настоящий кодинг-агент. Чтобы кидаешь ему проект, а он: «Тут у тебя SQL-инъекция, тут гонка данных, тут ты импорт забыл, и вообще у тебя в зависимостях дыра».…
Первые великие оптимизаторы появились уже на таком низком уровне, как железо. По факту, задача выжимки ресурсов в программировании есть на любом уровне. В этой статье мы разберем оптимизации на уровне CPU такие как NUMA, prefetch, TLB и alignment.Статья получится немного неоднородной и больше про “высокие материи”, что в принципе намекает на то, что разбор “железной” составляющей скоро подойдет к концу!ВводнаяКак мы рассматривали некогда ранее обращение на RAM – это достаточно дорого. CPU пытае…