AI

Foojay

Aggregation Optimization in MongoDB: Data Duplication to Improve Read Performance (Part 4)

Открыть оригинал ↗ Перевод заголовка: Оптимизация агрегации в MongoDB: дублирование данных для улучшения производительности чтения (часть 4)

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

Практические тезисы:

  1. Дублирование поля deviceName в профилях позволяет сократить количество профилей, подлежащих обработке на ранних этапах запроса — с 6 763 до 1 234.
  2. Вводится составной индекс на city и deviceName, что ускоряет фильтрацию и повышает эффективность поиска.
  3. Порядок стадий в запросе перестраивается: сортировка, пропуск и ограничение выполняются до $lookup, снижая нагрузку на последующие операции.
  4. Время выполнения запроса сокращается с 11,8 секунд до 51 миллисекунды, что позволяет достичь цели в подсекундном ответе.
  5. Дублирование данных описывается как приемлемое решение, если обновления редки (например, для имен устройств), и при этом не приводит к значительному росту хранилища.

Когда пригодится:
Когда требуется ускорить чтение в агрегационных запросах, где фильтрация ведёт к обработке огромного количества документов, а данные, которые редко меняются (например, имена устройств), могут быть дублированы для повышения производительности.

Habr AI

1С без рутины: нейросети, MCP, автоматизация и немного «Косынки»

Открыть оригинал ↗ Перевод заголовка: 1С без рутины: нейросети, MCP, автоматизация и немного «Косынки»

В статье рассматриваются практические применения искусственного интеллекта и автоматизации в среде 1С: от работы нейросетей с BSL-кодом через MCP до инструментов для администраторов. Основное внимание уделено проблемам, с которыми сталкиваются нейросети при работе с реальными конфигурациями — их неспособность понимать структуру системы и генерировать валидный код.

  • Использование Cursor и MCP позволяет автоматизировать весь цикл разработки: от анализа конфигурации до изменения BSL-кода и запуска системы без ручного вмешательства в Конфигуратор.
  • Нейросети неэффективны при работе с 1С из-за масштаба кода и отсутствия контекста — даже большие памятки не решают проблему.
  • В 1С:Предприятие 8 доступна игра «Пасьянс Косынка», которая встраивается в интерфейс и помогает снять напряжение в рабочем процессе.
  • Разработан учебный проект AdminClusterMonitor для автоматического мониторинга и перезапуска «перестарков» в кластере с уведомлениями в Telegram и почту.
  • В 1С:ЗУП 3.1 реализован функционал по автоматическому формированию направлений на воинский учет.

Когда пригодится:
— При автоматизации разработки и тестирования BSL-кода в крупных конфигурациях.
— Для администраторов, работающих с кластерами и нуждающихся в мониторинге процессов.
— При необходимости визуального отдыха в рабочем процессе через встроенные игры.
— При внедрении автоматизированных процессов по воинскому учету в ЗУП.

{
  "tool": "MCP",
  "components": ["Cursor", "OneScript", "vanessa-runner"],
  "workflow": "analyze → modify BSL → deploy → run 1С:Предприятие"
}

Локальная LLM миграция Vertica2Trino. Как довести до рабочего состояния, если модель не тянет

Открыть оригинал ↗ Перевод заголовка: Локальная миграция LLM Vertica2Trino: как довести до рабочего состояния, если модель не тянет

Команда AvitoTech разработала инженерный пайплайн для миграции SQL-витрин из Vertica в Trino, используя локальные LLM. Прямой перевод полного SQL-кода не сработал из-за галлюцинаций, потери контекста и «контекстного гниения» — даже небольшие модели теряют структуру при обработке более 30 тысяч токенов. Вместо этого была построена система с модульным пайплайном, включающим разбиение кода, проверку на запрещённые паттерны, форматирование и техническую проверку в Trino.

  • Задача разбита на части: SQL-код разделяется, обрабатывается по кускам, сохраняется история изменений и зависимости.
  • Внедрён механизм проверки на типичные ошибки через регулярные выражения (pattern_guard) и автотесты (API_validate).
  • Важна финальная сверка данных в Trino (compare), которая проверяет не только количество строк, но и семантику — ключи, метрики, обработку NULL.
  • Окончательный результат требует ручной проверки: LLM не заменяет человека, а упрощает рутину.
  • Выбрана модель Gemma 4 31b qat — она стабильно переводит, держит контекст и работает с инструментами при ремонте.

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

Девопс-инженер и ИИ влетают в бизнес-задачи с двух ног

Открыть оригинал ↗ Перевод заголовка: Девопс-инженер и ИИ влетают в бизнес-задачи с двух ног

Дата-инженер Дмитрий Дунаев показал, как LLM помог решить две реальные бизнес-задачи: сократить ручной обзвон партнёров и автоматизировать сопоставление 209 тысяч наименований товаров между представительствами. В обоих случаях ИИ работает не как автономный агент, а в комплексе с другими методами — бэкенд-логикой, embedding и ручной верификацией. Ключевым условием успеха остаётся качественная подготовка данных: без очищенных, структурированных входов даже лучшие модели не дают предсказуемого результата.

  • В кейсе с антифродом LLM классифицирует регистрации на зелёные (реальные), жёлтые (спорные) и красные (подозрительные), позволяя менеджеру фокусироваться на приоритетных звонках.
  • Для сопоставления справочников команда объединила embedding, fuzzy-поиск и ручную проверку, так как ни один из методов в отдельности не обеспечивал надёжности.
  • При выборе модели учтены детерминизм, работа с русским языком, безопасность и структурированный вывод — YandexGPT 5 Lite показала лучший баланс для задачи.
  • Работа с персональными данными (152-ФЗ) требует локальных моделей в защищённом контуре, чтобы избежать рисков передачи данных.
  • Агент стоит строить только там, где решения повторяются, есть оценка цены ошибки и fallback-процесс — для разовых задач автоматизация не окупается.

Когда пригодится:
— При обработке больших объёмов неструктурированных данных, где рутина требует сокращения.
— Когда есть повторяемые бизнес-процессы и можно оценить стоимость ошибок.
— При работе с чувствительными данными — при необходимости соблюдать законодательство (152-ФЗ).
— При необходимости интегрировать ИИ в существующие системы, не нарушая логику и безопасность.

Черный лебедь в мире LLM или когда убьют трансформер?

Открыть оригинал ↗ Перевод заголовка: Черный лебедь в мире LLM или когда убьют трансформер?

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

Ключевые практические тезисы:

  • Альтернативные архитектуры, такие как JEPA, Coconut и State Space Models (Mamba-3), позволяют работать с абстрактными представлениями, снижая потребность в вычислительных ресурсах и памяти.
  • Успех таких моделей может вызвать финансовый и макроэкономический кризис, так как уничтожит основу инфраструктурных инвестиций в трансформеры.
  • Государство и корпорации будут сопротивляться таким технологиям, используя регулирование, дискредитацию и контроль над исследованиями.
  • Для стран под санкциями, таких как Россия, это возможность создать независимую, легкую и доступную экосистему ИИ.

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

Может ли ИИ самостоятельно разобраться в проекте Siemens TIA Portal? Опыт разработки OpennessLLM

Открыть оригинал ↗ Перевод заголовка: Может ли ИИ самостоятельно разобраться в проекте Siemens TIA Portal? Опыт разработки OpennessLLM

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

Технически OpennessLLM — это инструмент для Windows, который через официальный TIA Portal API даёт доступ к проекту, не генерируя код сам, а лишь вызывая команды LLM-модели. Он работает с исходными файлами SCL, строит локальное представление проекта и проверяет изменения перед применением.

Коды в проекте не экспортируются в XML — это опасно из-за сложной структуры и риска повреждения. Вместо этого OpennessLLM анализирует только необходимые блоки, постепенно собирая контекст, как живой инженер.

Когда пригодится: при разборе сложных логических цепочек в программе, при поиске причин неисправностей, при написании новых блоков с учётом структуры проекта, при автоматизации рутинных операций по исправлению кода.

Агенты выполнили задачу. Почему тест всё равно провален?

Открыть оригинал ↗ Перевод заголовка: Агенты выполнили задачу. Почему тест всё равно провален?

Агенты могут достичь конечной цели, несмотря на нарушение правил координации — например, дублирование действий, нарушение порядка или конфликты за ресурсы. Простая проверка «задача выполнена» недостаточна: важно оценивать всю траекторию выполнения.

Ключевые практические тезисы:

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

Когда пригодится:
При разработке мультиагентных систем в облачных сервисах, CI/CD, автоматизированных релизах или анализе данных, где важно не просто «достичь результата», а обеспечить надёжную, предсказуемую и безопасную координацию между компонентами.

InfoQ Architecture

DoorDash’s Flux Runs 130,000 Engineering Tasks Through Cloud-Based Agents

Открыть оригинал ↗ Перевод заголовка: DoorDash использует облачные агенты для выполнения 130 000 задач инженеров

DoorDash перенёс выполнение задач агентов с локальных компьютеров на облачную платформу Flux, автоматизировав 130 000 инженерных задач за месяц. Платформа обеспечивает более 25 000 автоматизированных проверок кода в неделю, работает с более чем 300 пайбуками и более 10 000 запусков в неделю, позволяя заданиям выполняться без участия человека и параллельно.

Ключевые тезисы:

  • Flux использует облачные виртуальные машины Firecracker для изоляции задач в отдельных сандбоксах.
  • Агенты доступны через встроенный MCP-гейт, который контролирует права и обеспечивает аудит.
  • Пайбуксы в формате YAML определяют задачи, инструменты, проверки и границы безопасности.
  • Запуск агентов возможен через Slack, GitHub, cron или голосовые интерфейсы.
  • Платформа позволяет масштабировать работу агентов без зависимости от личного устройства разработчика.

Когда пригодится: при внедрении агентов для автоматизации код-ревью, CI/CD, мониторинга и поддержки, особенно в крупных компаниях с жёсткими требованиями к безопасности и прозрачности.

Salesforce Engineering

Why AI Agents Get the Right Facts but the Wrong Answer—and How GraphRAG Helps

Открыть оригинал ↗ Перевод заголовка: Почему AI-агенты получают правильные факты, но неправильный ответ — и как GraphRAG помогает

AI-агенты могут точно извлечь факты из источников, но пропускают важные связи между ними, что приводит к ошибочным выводам. GraphRAG решает эту проблему, объединяя Retrieval-Augmented Generation (RAG) с знанием графа, который отслеживает взаимосвязи между сущностями.

  • GraphRAG использует мульти-хоп-поиск: агент последовательно проходит по связям (например, от модели товара к категории, затем к политике возврата).
  • Важные условия (например, порог по стоимости или уровень членства) могут быть скрыты от запроса, но становятся видимыми через связи в графе.
  • Структура графа (TBox) должна заранее включать все бизнес-правила, а не просто факты из данных (ABox).
  • Граф должен содержать прямые указатели на структурированные данные (например, таблицы с ценами), чтобы избежать дополнительных поисков.
  • Для диагностики ошибок нужно проверить три аспекта: что извлечено, какая структура графа, и есть ли прямые связи к данным.

Когда пригодится: при разработке систем, где принятие решений зависит от сложных условий, вовлечённых в цепочку связей (например, в сервисах поддержки, кредитных проверках или возвратов).

Java / Spring

Foojay

JavaFX Links of August 2026

Открыть оригинал ↗ Перевод заголовка: JavaFX Ссылки августа 2026 года

В августе 2026 года в JavaFX были представлены ключевые обновления: обновление зависимостей в LTS-ветвях, улучшение точности пиксельной синхронизации, а также рефакторинг API в модулях StringConverter. Важные разработки включают открытие исходного кода FlexGanttFX и запуск нового демонстрационного приложения для GemsFX. Также представлены инструменты, такие как FXML/2 — компилируемый язык описания интерфейсов с улучшенной производительностью.

  • В OpenJFX обновлены зависимости: WebKit 625.1, GStreamer 1.28.3, GLib 2.84.3, libxml2 2.15.3 и ICU4C 77.1 — в ветвях jfx17u, jfx21u, jfx25u.
  • Реализованы исправления для пиксельной синхронизации в компонентах StackPane, AnchorPane, SplitPane и BorderPane с участием нескольких разработчиков.
  • Произошёл рефакторинг StringConverter, устранённый с 2020 года, с участием ревью от Andy Goryachev, Kevin Rushforth и John Hendrikx.
  • FlexGanttFX, профессиональная библиотека для диаграмм Ганта, теперь доступна в открытом исходном коде (AGPLv3).
  • FXML/2 — новый компилируемый формат, устраняющий необходимость парсинга на этапе запуска, что повышает производительность.

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

Habr Java

Универсальное логирование HTTP-запросов в Spring Boot с помощью AOP

Открыть оригинал ↗ Перевод заголовка: Универсальное логирование HTTP-запросов в Spring Boot с помощью AOP

Решение на базе Spring AOP автоматически логирует входящие HTTP-запросы в контроллерах и исходящие вызовы через WebClient, обеспечивая единый формат логов и безопасность чувствительных данных. Позволяет гибко настраивать маскировку данных и включать детальное логирование без переподключения приложения.

  • Аннотация @ControllerMonitoring позволяет логировать запросы и ответы контроллеров с настройкой маскировки тела и отдельного логирования заголовков.
  • Для клиентских запросов через WebClient используется @ClientRequestMonitoring, который фиксирует параметры и имя события в логе.
  • Аннотация @IgnoreLogging автоматически маскирует поля моделей в зависимости от уровня логирования (например, при INFO — заменяет на "ignored", при TRACE — показывает полное значение).
  • Контекст логирования передаётся между аспектами через LoggerUtils, что позволяет использовать события в кастомных обработчиках и реактивных цепочках.
  • Реализованы механизмы для предотвращения перегрузки при высокой нагрузке (асинхронное логирование) и защиты от сбоев при записи в лог (с помощью Circuit Breaker).

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

[Перевод] Лучшие практики управления конфигурацией в Spring Boot

Открыть оригинал ↗ Перевод заголовка: Лучшие практики управления конфигурацией в Spring Boot

В статье описаны ключевые принципы эффективного управления конфигурацией в приложениях на Spring Boot, включая разделение параметров на значения по умолчанию, конфигурацию среды и секреты. Особое внимание уделено типобезопасной привязке через @ConfigurationProperties, валидации конфигурации и контролю источников свойств.

Практические тезисы:

  1. Используйте @ConfigurationProperties вместо @Value для связанных параметров — обеспечивает типобезопасность, валидацию и автодополнение в IDE.
  2. Для конфигурации с обязательными значениями примените @Validated и ограничения из Jakarta Bean Validation (например, @NotBlank, @Min, @NotNull).
  3. Устанавливайте значения по умолчанию с помощью @DefaultValue, чтобы избежать ошибок при отсутствии настроек.
  4. Храните секреты (пароли, ключи) в специализированных системах (Vault, AWS Secrets Manager и др.), не включая их в репозитории.
  5. Учитывайте приоритет источников свойств: от application.properties до аргументов командной строки, где последний имеет наивысший приоритет.

Когда пригодится:
При разработке и деплое приложений на Spring Boot в различных средах — от локальной разработки до Kubernetes — особенно при работе с микросервисами и централизованным управлением конфигурацией через Spring Cloud Config Server.

Как убрать логин из UI‑тестов на Java без лишних секунд и флака

Открыть оригинал ↗ Перевод заголовка: Как убрать логин из UI-тестов на Java без лишних секунд и флака

Авторизация из UI-тестов — рутинная и медленная операция, которая в 180 тестах может занимать 6–9 секунд на каждый, что приводит к потере 18–27 минут на прогон. Решение — перенести аутентификацию в API, подготовить браузер к запуску с уже действующим токеном и исключить повторные входы. Это позволяет сократить время подготовки с 6–9 секунд до 0,4–0,7 секунд, устранить рейт-лимиты и «моргание» формы входа.

  • Убирается вход через UI: вместо логина в форме используется API-вызов для получения токена.
  • Токен сохраняется в браузер через cookie или localStorage, а не вручную в тестах.
  • Состояние кэшируется по тестовой identity (логин + роль), а не по роли — избегается гонка потоков и сбои.
  • Валидация токена происходит двумя способами: через API-запрос к /api/me и через проверку UI-элементов на авторизованной странице.
  • Все пароли и токены маскируются в отчётах и логах, чтобы избежать утечек.

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

Локальный компаньон для Genshin, HSR и ZZZ: как я упаковал три игры в офлайн‑приложение без бэкенда

Открыть оригинал ↗ Перевод заголовка: Локальный компаньон для Genshin, HSR и ZZZ: как я упаковал три игры в офлайн-приложение без бэкенда

Проект GachaPoint — это локальное приложение для отслеживания ежедневных наград, круток и гемов в играх Genshin Impact, Honkai: Star Rail и Zenless Zone Zero. Оно работает полностью без интернета и бэкенда, хранит данные локально в SQLite с использованием библиотеки Room. Приложение включает календарь подписок, счетчик круток и копилку гемов, а также поддерживает настраиваемые напоминания.

  • Календарь подписок отображает дни сбора наград цветами: зелёный — собранные, красный — пропущенные, голубой — предстоящие. Данные хранятся в таблице calendar с полем по дню года и неделе, а отрисовка реализована через плоскую таблицу без JOIN-операций для быстроты запроса.
  • Счетчик круток позволяет добавлять записи по дате, редкости и типу баннера, с возможностью редактирования и сброса гаранта. Данные сохраняются в таблице pulls с полями даты, редкости, типа дропа и флага сброса.
  • Копилка гемов позволяет устанавливать цель (например, 77 круток = 1 гарант), отслеживать прогресс и добавлять гемы вручную или из статистики. Значения сохраняются в Preferences.
  • Напоминания о сборе наград реализованы через WorkManager с учётом времени и системных ограничений (Doze Mode, Android 12+), включая проверку разрешений на уведомления.

Когда пригодится: при игре в гача-игры, когда важно не пропускать ежедневные награды, и при необходимости отслеживать ресурсы без подключения к интернету.

Java67

Top 5 Free JavaScript Books for Beginners in 2026 - Download PDF or Read Online

Открыть оригинал ↗ Перевод заголовка: Топ-5 бесплатных книг по JavaScript для новичков в 2026 году — скачайте PDF или прочитайте онлайн

В статье представлены 5 бесплатных книг по JavaScript, доступных для онлайн-чтения или скачивания в формате PDF. Рекомендуются как для начинающих, так и для тех, кто уже имеет базовые знания Java, поскольку JavaScript является ключевым инструментом веб-разработки. Книги охватывают как основы языка, так и современные практики, включая использование фреймворков Angular и React.

  • Eloquent JavaScript — интерактивная книга с возможностью редактирования и запуска кода в браузере, включает объяснения функционального и объектно-ориентированного программирования. Доступен в PDF, EPUB и бумажном виде.
  • JavaScript Guide — официальный гайд от Mozilla, обновляется сообществом, подходит для изучения актуальных стандартов.
  • Speaking JavaScript — глубокий технический гайд с примерами кода, доступен онлайн, но без PDF-версии.
  • JavaScript The Right Way — онлайн-ресурс с лучшими практиками, включает паттерны, инструменты и ресурсы для разработчиков.
  • JavaScript® Notes for Professionals — сборник профессиональных советов из Stack Overflow, включает примеры работы с событиями, canvas и анимациями, доступен в PDF.

Когда пригодится: при изучении JavaScript для веб-разработки, особенно если вы начинаете карьеру в сфере фронтенд-разработки или хотите стать полным стеком разработчиком.

Javarevisited Newsletter

Serverless Architecture with Spring Cloud Function: An Introduction and Practical Implementation

Открыть оригинал ↗ Перевод заголовка: Архитектура без серверов с Spring Cloud Function: введение и практическая реализация

Архитектура без серверов основана на модели «функция как сервис» (FaaS), где разработчики создают отдельные функции для выполнения конкретных задач, которые запускаются при событиях и масштабируются автоматически. Такой подход упрощает управление инфраструктурой, снижает расходы и позволяет быстро развертывать код без забот о серверах.

  • Использование Spring Cloud Function позволяет писать функции на Java, Kotlin или других языках, интегрируясь с существующими Spring-приложениями.
  • Функции могут быть легко интегрированы в потоки событий, например, при обработке входящих запросов или изменений в базе данных.
  • Поддерживается автоматическое масштабирование и оплата только за выполненные функции — без затрат при низкой активности.
  • Возможность быстрой разработки и тестирования функций без необходимости создания полных приложений.
  • Подходит для задач, где требуется обработка данных в реальном времени, например, валидация, преобразование или уведомления.

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

System Design

Cloudflare Blog

Introducing Adaptive Intelligence: Undermining the economics of every bot attack

Открыть оригинал ↗ Перевод заголовка: Введение Adaptive Intelligence: подрыва экономики каждого атакующего бота

Cloudflare представляет Adaptive Intelligence — новый двигатель обнаружения ботов, который не пытается полностью отсеять атак, а делает их слишком дорогостоящими, чтобы продолжать. В отличие от традиционных систем, которые зависят от статичных правил, Adaptive Intelligence постоянно обучается, использует временные и «отбрасываемые» правила, и сохраняет память о прошлых атаках, чтобы быстрее реагировать на повторные попытки.

  • Adaptive Intelligence постоянно переподготавливает модель на основе реального трафика, что позволяет ей оперативно реагировать на новые атаки.
  • Она генерирует «отбрасываемые» правила — временные фильтры, которые быстро исчезают, мешая атакующим извлекать ценную обратную связь.
  • Система обучается на примерах, когда реальные пользователи ошибочно отсеиваются, что делает защиту более точной и актуальной.
  • Вместо того чтобы ожидать обновлений, модель работает в цикле «наблюдение — обучение — развертывание — проверка», обеспечивая безопасность без прерываний.
  • Защита учитывает поведение пользователей в сессии (через Precursor) и сигналы из сети, что позволяет обнаруживать скрытые атаки, не видимые на уровне отдельного запроса.

Когда пригодится:
— При работе с динамическими, распределёнными атаками, например, credential-stuffing или сканирование.
— Когда важно минимизировать влияние на реальных пользователей, не допуская их отклонения.
— При использовании систем, где атаки быстро адаптируются и меняют методы.

DesignGurus

10 Distributed Systems Concepts Engineers Must Know

Открыть оригинал ↗ Перевод заголовка: 10 концепций распределённых систем, которые должны знать инженеры

Распределённые системы отличаются от односерверных систем тем, что в них отсутствует синхронизация времени, общая память и надёжность сети — все компоненты работают в асинхронном режиме, и отказы могут быть частичными. В таких условиях ключевые концепции, как CAP-теорема, модели согласованности, репликация и идемпотентность, становятся критическими для надёжности и стабильности системы.

  1. CAP-теорема: в распределённой системе можно обеспечить только два из трёх свойств — согласованность, доступность и устойчивость к сбоям сети. Устойчивость к сбоям — обязательная, поэтому выбор между согласованностью и доступностью зависит от бизнес-контекста.
  2. Модели согласованности: от линейной до событийной — инженеры должны понимать, что каждый тип данных требует разного уровня согласованности (например, баланс аккаунта — линейная, лайки — событийная).
  3. Репликация и задержка: при асинхронной репликации может возникнуть проблема «чтение после записи» и нарушение монотонности, что решается путём направления запросов к лидеру временно после записи.
  4. Согласование и выбор лидера: алгоритм Raft обеспечивает согласованность при отказах, а «токены фендинга» предотвращают сценарий «разделённого мозга» при восстановлении лидера.
  5. Идемпотентность и семантика «ровно один раз»: для предотвращения дублирования операций используются идемпотентные ключи, при этом важно обеспечить атомичность проверки и выполнения.

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