Рубрика «распределенные системы»

Разбираем одну ноду базы данных, чтобы понять распределённые системы

Когда читаешь про покупку Neon за $1 млрд, возникает вопрос: за что платят, если PostgreSQL и MySQL бесплатны? Чтобы это понять, нужно залезть под капот - и начать не с распределённых монстров, а с одной ноды.

Вначале был файл

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

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

Когда система растёт, нагрузка на базу становится критической, а готовых решений для шардирования PostgreSQL не хватает. Стандартные подходы не устраивали — поэтому команда сделала своё решение для шардирования в ядре процессинга заказов. Оно позволяет решардировать данные без простоев и деградации метрик.

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

TL;DR

Человек — это не тело и не набор данных, а непрерывный субъективный процесс («я-сейчас»).
Копирование сознания не спасает — оно создаёт наследника.
Но если заранее включить в себя нейропротезы и вычислительные контуры, которые уже участвуют в субъективном опыте, то гибель тела перестаёт быть финалом.
Это не бессмертие и не отказ от биологии — это архитектура живучести с жёсткими физическими пределами.


1. Долгая перспектива: у биологии есть дедлайн

Мы живём возле G-звезды (Солнца)Читать полностью »

В этой статье я хотел бы рассмотреть микросервисные паттерны под другим углом. Когда я начинал изучение микросервисных паттернов, у меня постоянно был вопрос: Так это же было в другом паттерне. Я решил немного структурировать их: объединить по похожим элементам. Кластеризировать микросервисные паттерны достаточно тяжело так как каждый паттерн по‑своему уникален, однако для запоминания на собеседованиях или для себя это сделать можно. Основной контент статьи — картинка, далее идёт описание, чтобы всё было в одном месте.

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

Всем привет! Это Алексей Рыбак, основатель R&D-центра Devhands. Мы занимаемся образованием экспертного уровня, внимательно следим за краткосрочными и долгосрочными трендами в индустрии, поэтому предлагаем вашему вниманию очень интересную на наш взгляд ретроспективную статью Константина РатвинаЧитать полностью »

Меня зовут Миша, я бэкенд‑разработчик в платформе Яндекс Еды, и сейчас я покажу немного настоящего кода процессинга заказа.

e, err := w.prepareExecutor(ctx, req)
if err != nil {
    return nil, err
}

if err := e.CreateAndPay(); err != nil {
    return e.HandleResult(err)
}

if err := e.InitializeNativeDelivery(); err != nil {
    return e.HandleResult(err)
}

if err := e.WaitForOrderConfirmation(); err != nil {
    return e.HandleResult(err)
}

if err := e.WaitDelivery(); err != nil {
    return e.HandleResult(err)
}

return e.HandleResult(nil)

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

Введение: два источника правды - одна большая проблема

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

Наш проект использует паттерн двойной записи (Dual-Write):

  • Solana — гарантирует неизменность и прозрачность данных о выданных дипломах

  • PostgreSQL (Supabase) — обеспечивает быстрые выборки и сложные запросы

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

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

Основные проблемы микросервесных приложений:

  1. Сложный обмен данными между сервисами.

  2. Сбор и отдача данных из разных сервисов с агрегацией, фильтрацией, пагинацией и прочей обработкой.

  3. Консистентность данных между сервисами.

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


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