Обновить
27.19

Распределённые системы *

Нюансы проектирования распределенных систем

Сначала показывать
Порог рейтинга
Уровень сложности

Надоел Celery? Не нужен K8s? Как мы сделали легковесный оркестратор на Python

Время на прочтение4 мин
Охват и читатели8.2K

Привет, Хабр!

Если вы когда-нибудь сталкивались с задачей запуска сотен изолированных фоновых процессов на одном сервере (будь то парсеры для клиентов, торговые боты или обработчики данных в SaaS), то вы знаете, как быстро всё усложняется.

Можно, конечно, вручную поднимать Docker-контейнеры и писать костыли для мониторинга. Можно развернуть полноценный Kubernetes, но для одной ноды это часто — оверкилл, требующий отдельного администратора. Можно использовать Celery, но он управляет задачами, а не контейнерами, и изоляция на уровне процессов — это не тоже самое, что изоляция на уровне контейнеров.

Мы столкнулись с этой болью и написали инструмент, который закрывает этот пробел. Встречайте: RedTailFox — легковесный оркестратор на Python, который управляет Docker-контейнерами с вашими воркерами на одном сервере. Он сам решает, когда поднять новый контейнер, сам следит за здоровьем слотов и сам себя чинит.

Читать далее

Новости

От ручного конфига к автоматическому мониторингу: обзор новой библиотеки go-discovery для Tarantool 3.0

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели7.6K

Когда у вас 50+ узлов Tarantool в кластере, ручное управление соединениями превращается в боль. Узлы падают, реплики становятся мастерами, новые инстансы добавляются — и все это нужно отслеживать в реальном времени. 

Рассказываем, как мы спроектировали go-discovery — библиотеку для автоматического обнаружения узлов кластера Tarantool 3.0.

Читать далее

Почему многоагентные системы ломаются (и почему это нормально)

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.8K

Есть ощущение, что мы сейчас живём в странный период: LLM-агенты уже умеют “делать работу”, но ещё не умеют быть предсказуемыми.

На демке всё выглядит идеально:

• один агент пишет код,
• второй — тесты,
• третий — делает ревью,
• четвёртый — собирает артефакты и отчёт,
• пятый — «оператор», который всё это оркестрирует.

Первые пару запусков ты сидишь и думаешь: «Ну всё. Завтра индустрия будет другой». На третьем запуске агент уверенно сообщает: «Я исправил проблему», и одновременно:

Читать далее

Go: как получить до 5 млн RPS с одного экземпляра Tarantool

Время на прочтение23 мин
Охват и читатели8.1K

Привет, Хабр. Меня зовут Олег Жуковец. Я руководитель команды «Экосистема» в Tarantool R&D компании VK Tech.

Многие разработчики сталкивались с ситуацией, когда запросы к базе данных выполняются быстро, индексы настроены, оборудование справляется с нагрузкой, но конечное приложение все равно работает медленно. Нередко проблема кроется не в самой базе данных, а в некорректно реализованном клиенте, который может стать «бутылочным горлышком» для всего ИТ-ландшафта. Именно поэтому оптимизация клиентов для работы с БД имеет важное значение.

В этой статье я на примере коннектора к Tarantool расскажу о доступных и простых оптимизациях клиента для БД, которые позволяют минимизировать аллокации и число горутин, чтобы выкрутить скорость обработки запросов (RPS) на максимум.

Читать далее

muRPC: Реализация протокола JSON-RPC на C++

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели5.7K

Данная статья описывает библиотеку muRPC для создания сервера и клиента для протокола JSON-RPC. Режим работы предполагает, что один из клиентов JSON-RPC предоставляет какие-то методы и сообщает об этом серверу. Тогда другие клиенты JSON-RPC могут эти методы вызывать и получать ответ. Сервер предоставляет маршрутизацию и валидацию сообщений между клиентами.

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

Читать далее

Мысли вслух. Протоколы и механизмы синхронизации транзакций в распределённом вычислительном кластере СУБД

Время на прочтение18 мин
Охват и читатели7.3K

Продолжаю рубрику «Мысли вслух». Цель данной публикации – описать алгоритмы и новизну моих исследований по созданию кластера СУБД с горизонтальным масштабированием производительности – распределенного вычислительного кластера (РВК). Набралась очередная порция материалов в следствие новых изысканий и натурных экспериментов, которыми и делюсь. Сегодня речь пойдет о возможных протоколах работы РВК. Создание распределённого кластера СУБД обычно приносит серьёзные потери в производительности одиночных операций, плюс сложности в разработке, эксплуатации и сопровождении. Цель моей работы – создать РВК без этих недостатков.

Читать далее

Книга: «System Design II. Распределенные системы. Подготовка к сложному интервью»

Время на прочтение2 мин
Охват и читатели12K

Привет, Хаброжители! «System Design. Распределенные системы. Подготовка к сложному интервью» — это практическое руководство для инженеров и архитекторов, которое поможет справиться с самыми трудными техническими заданиями. Алекс Сюй и Сан Лэм предлагают стратегию, проверенную на практике, пошаговые алгоритмы и реальные примеры, позволяющие научить вас проектировать масштабируемые системы — от новостной ленты до поисковых сервисов и чат-приложений.

Читать далее

Как мы мигрировали с Zeppelin и что из этого вышло. Часть 1. Рассылки

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели8.2K

Для задач аналитики Zeppelin - это чуть ли не находка. Он может в одной книжке исполнять код на любом языке (был бы интерпретатор), выводить его в виде красивых табличек, графиков и в любом другом виде, который удобен. И на Хабре есть много статей, посвященных плюсом данного решения для задач аналитики.

В результате в аналитический отдел ТКБ Инвестмент Партнерс данный инструмент проник достаточно глубоко: на нем писались аналитические отчеты для разных отделов, расчетные таблицы, которые затем отсылались в дашборды, также данными книжками могли пользоваться все, кто знал какие-либо языки программирования.

И мы попали в зависимость от него. Панацея, которая должна была стать легким решением для (почти) любой задачи превратилась в наше проклятие. Из-за проблем с данной системой на нас приходило по 5-7 тикеров в неделю, а также потерей доверия к нашим сервисам.

Как мы с этим справились?

Книга: «System Design. Подготовка к сложному интервью по GenAI»

Время на прочтение2 мин
Охват и читатели10K

Привет, Хаброжители! Интервью по System Design (проектированию ИТ-систем) очень популярны у работодателей, на них легко проверить ваши навыки общения и оценить умение решать реальные задачи.

Читать далее

Memory wall: что это и почему важно для индустрии хранения данных

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели9K

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

Это явление давно известно в архитектуре вычислительных систем как разрыв между процессором и памятью (или Memory Wall). Сегодня он определяет производительность серверов, баз данных, платформ данных и AI/ML-платформ сильнее, чем выбор конкретной модели процессора или видеокарты. А в будущем определит то, какие продукты и решения индустрия будет использовать для решения задачи хранения данных.

Привет! Я Александр Гришин, руководитель по развитию продуктов хранения данных в Selectel. В этой статье я попробую подробно разобрать, что такое этот ваш разрыв между процессором и памятью, как он сформировался, как устроена иерархия памяти в сервере и почему эти ограничения подталкивают индустрию к новым архитектурам и решениям. Погнали!

Читать далее

Когда математика встречает бэкенд, или Как рассчитать RPS на поллинговую ручку

Время на прочтение10 мин
Охват и читатели11K

Загадка: во сколько раз увеличится RPS на ручку поллинга, если уменьшить интервал поллинга с 5 минут до 2? 

Ответ: в 2,5 раза!

Привет! Меня зовут Стёпа, и я разработчик в Яндекс Go. Я хочу поделиться тем, как математика может встречаться в самых неожиданных местах — даже в такой рутинной задаче, как настройка интервала поллинга. В статье я рассмотрю модельный пример, который встречался каждому разработчику, и просчитаю его с математической точки зрения, использовав базовые факты из теории вероятностей и статистики.

Читать далее

Eventual Consistency на практике: что делать со сложными системами?

Время на прочтение6 мин
Охват и читатели4.4K

Современные комплексы бизнес-приложений отличаются высокой сложностью, из-за чего могут происходить сбои - сообщения теряются, consumer’ы падают, очереди переполняются. Поделимся реальным кейсом, в котором Eventual Consistency удалось обеспечить без серьезной переработки существующих систем.

Обеспечение Eventual Consistency в сложных системах

Уже давно стандартом де-факто стали микросервисы, поэтому практически любая система представляет собой набор компонентов, взаимодействующих между собой как синхронно (например, по REST), так и асинхронно — через шины сообщений (RabbitMQ, Kafka).

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

Где именно все может сломаться

Предположим, у нас две системы:

Читать далее

Мультиагенты — это скрытые распределённые монолиты

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.6K

Мультиагентные системы часто собирают по привычной схеме «оркестратор + набор независимых сервисов-агентов» — и довольно быстро приходят к распределённому монолиту. В статье разберем, почему при интерфейсе на естественном языке нельзя принудительно обеспечивать контракты как в API, из-за чего усложняются маршрутизация, изменения начинают каскадить, а общий контекст превращается в разделяемое состояние. И почему в такой ситуации иногда разумнее признать монолит — и управлять оркестрацией как единым целым.

Открыть разбор

Ближайшие события

Как мы переписали ядро Trino на Rust

Время на прочтение20 мин
Охват и читатели8.6K

CedrusData Engine — это lakehouse-движок, основанный на Trino. На реальных нагрузках наш продукт рутинно превосходит по производительности другие технологии (Trino, Doris, Dremio, StarRocks) в 1.5-3 раза, с еще более значительным отрывом от устаревших Greenplum и Impala. Эти результаты — следствие постоянных вложений в разработку новейших техник обработки больших данных. В этой статье я расскажу про проект Oxide — одну из наших ключевых инициатив прошлого года по переписыванию ядра Trino с Java на Rust.

Читать далее

Удобная синхронизация настроек Kafka

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7.1K

Если вы настроили многоузловой кластер Kafka, то, вероятно, знаете, что в нем есть части конфигурации, общие для кластера, а есть уникальные для каждого узла.

В этой заметке я описываю свой способ проведения централизованного обновления конфигурации брокеров.

Поменяли на одном брокере — настройки применили везде.

Bourne again shell.

Погнали!

Небо Сергея Павловича Королёва

Время на прочтение5 мин
Охват и читатели8.7K

Как мечта гения прошлого века задает тренды нашего столетия

12 января 2026 года исполнилось 119 лет со дня рождения Сергея Павловича Королева. Его нет с нами уже более полувека, но созданный им космический «задел» до сих пор определяет контуры не только российской, но и мировой космонавтики. Мы живем в эпоху Илона Маска и частных стартапов, возвращения на Луну и полетов к Марсу. При чем здесь советский конструктор, родившийся при царе? Ответ прост: именно Королёв заложил фундаментальные принципы, на которых стоит наше сегодняшнее представление о космосе как о пространстве для жизни, работы и мечты.

Читать далее

Как микросервисы стали тормозом. И почему мы вернулись к монолиту

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели35K

Изначально микросервисная архитектура решила реальную проблему - изолировала очереди и убрала “head-of-line blocking”, когда один упавший адресат тормозит всех.

Но дальше начался рост репозиториев, расхождение версий общих библиотек, рискованные обновления и операционная нагрузка. К тому же каждый сервис обладал своим профилем ресурсов и ручной настройки автоскейла.

В итоге команда объединила 140 сервисов в один монолит, собрала монорепо и стабилизировала тесты через запись/воспроизведение HTTP-трафика.

Читать далее

Как JOIN изменил наш подход к инфраструктуре данных в NAVER

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.4K

После миграции с ClickHouse на StarRocks NAVER существенно оптимизировала обработку многотабличных JOIN. StarRocks повысил производительность запросов, обеспечил бесшовное масштабирование и позволил построить единый слой запросов, совместимый с множеством источников данных. Эти улучшения позволили предоставлять инсайты в реальном времени и поддерживать принятие решений на основе данных во всей экосистеме NAVER.

Читать далее

Eventually-consistent СУБД — всё?

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели24K

В начале 2010-х в профессиональном сообществе разработчиков и архитекторов распределенных систем широко обсуждалась идея, что мир баз данных вступает в новую эру. На фоне успехов крупных интернет-сервисов термин BASE начал использоваться как противопоставление классическому ACID. Хайп вокруг NoSQL, CAP-теоремы и масштабируемых систем породил лозунги вроде «SQL умер», «ACID — для банков, а мы делаем веб», «eventual consistency — это нормально».

Однако спустя полтора десятилетия крупные облачные и корпоративные платформы по-прежнему говорят языком транзакций, изолированных операций и строгой согласованности. 

Что же произошло? Была ли «битва ACID и BASE» реальным технологическим разломом или лишь отражала ограничения своего времени? 

В этой статье мы разберём, как возникли ACID и BASE, почему BASE быстро стал популярен и что на самом деле означает тезис «победил ACID» в 2020-е годы.

Читать далее

Retention в Kafka: Почему сообщения живут дольше, чем вы думаете?

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели8.8K

Вы настроили retention.ms = 86400000 (24 часа) и отправили тестовое сообщение. Через сколько времени реально удалится сообщение?

Читать далее
1
23 ...