Рубрика «highload»

Привет!

Кратко о том что такое потоковая обработка данных и в чем её отличие от пакетной.

Пакет данных, это часть информации поступающая в систему которая содержит законченный или не полный фрагмент данных. Большинство механизмов цифровой передачи информации в современных системах построены на пакетной передаче. Отличие потоковых и пакетных систем обработки в том, когда эти данные обрабатываются:

  • Потоковая обработка данных подразумевает обработку данных и реакцию на них непосредственно в момент получения с минимальными задержками.

Пришёл в проект, там легаси погоняет легаси. Спагетти такие что уже в рот лезут. Отчёты по филиалам открывались 30 секунд. Команда реально боялась нажать кнопку в рабочее время, а вдруг база ляжет.

Это была система управления розничной сетью: несколько филиалов, сотни тысяч записей о заказах, ежедневные отчёты по выручке и остаткам. На бумаге ничего страшного. На практике монолит на Django где бизнес-логика размазана по контроллерам так, что поменяй что-то одно и сломается три другого.

Первое что я сделал: открыл EXPLAIN ANALYZE.

Что показал EXPLAIN ANALYZE

Запрос для отчёта по филиалу выглядел примерно так:

Читать полностью »
Как мигрировать кусочек Яндекс Такси с PostgreSQL на YDB и перестать считать подключения к шардам - 1

Привет! Меня зовут Игорь Березняк, и мы с командой делаем Техплатформу Городских сервисов Яндекса. Я уже Читать полностью »

Привет! Эта статья - текстовая версия моего стрима с разбором задачи на бесконечную ленту по System Design из https://t.me/siliconchannel/141 этого поста.

Рассмотрим классическую задачу из System Design интервью - персональная лента подписок. По сути, мы проектируем упрощённый клон Instagram. Сама задача звучит следующим образом:

Делаем сервис: подписки на авторов, публикации постов, выдача персональной ленты с пагинацией. Нагрузка: чтение доминирует - 30 тыс. RPS; запись постов 1000 RPS; есть “мегапопулярные” авторы.

Этапы

Читать полностью »

Архитектурные решения, грабли и RabbitMQ

Привет!

Я Python-инженер. Последние несколько лет я в одиночку строил довольно сложную бэкенд‑систему, и за это время набил немало шишек и нашел, как мне кажется, несколько интересных решений. В этой статье я хочу поделиться не «историей успеха», а конкретными архитектурными проблемами и их решениями при построении высокопроизводительного сервиса на асинхронном Python.

Статья будет полезна тем, кто работает с FastAPI, микросервисами и думает о надежности и масштабируемости своих систем.

1. Проблема: Хаос из 20+ AI-моделей

Читать полностью »

Мы в вебе живём хорошо, потому что все данные у нас отдаются из кешей.
А что если их там нет? А что, если их там теперь нет? Обрекаем базу данных на хабраэффект?

А что будет, если даже кеш не справляется с нагрузкой?

Дисклеймер

После статьи про непонятные мануалы я чувствую своим долгом добавить 2 параграфа для людей не из бекенда и не из хайлода. У всех нас разные кухни на работе, разные задачи, разные решения, разные термины. Давайте договоримся о единой терминологии в статье.

Термины

«Rust — это когда ты контролируешь каждый байт.
Go — это когда ты делаешь сервис, а не борешься с компилятором.»

Введение

Rust и Go часто оказываются по разные стороны инженерных холиваров.
Кто‑то называет Go «языком для продакшна», кто‑то утверждает, что Rust — «единственный способ спать спокойно после деплоя».

Я работал с обоими языками: писал микросервисы на Go, системы обработки событий и сетевые агенты на Rust.
В этом посте — не теоретическое сравнение, а практическое: где Rust реально оправдан, а где Go дает фору по скорости разработки и стабильности.


Производительность

Читать полностью »

Делимся опытом создания робота-диспетчера на low-code платформе. Прошли путь от простой идеи до архитектуры "Мастер-Воркер" для обработки большого потока заказов. Разбираем ошибки, технические решения и показываем готовые workflow.

Привет, меня зовут Арина, я фулстек разработчик. Мы разрабатываем высоконагруженный сервис для доставки еды, и сегодня я хочу рассказать, как мы автоматизировали один из самых рутинных участков с помощью n8n.

Введение: Проблема ручной фильтрации заказов


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js