Очередь задач на PostgreSQL без дублей: SKIP LOCKED, lease и ключ идемпотентности

12+
12+

4 просмотра

3 дня назад

ПожаловатьсяНарушение авторских прав
12+
12+

4 просмотра

3 дня назад

ПожаловатьсяНарушение авторских прав
12+
12+

4 просмотра

3 дня назад

🔹 Присоединяйся к курсу «LLM-разработчик» по ссылке https://ru.hexlet.io/link/6WNJOY, где мы научим создавать AI-сервисы с RAG, MCP, агентами и локальными моделями, которые можно внедрять в реальные продукты. Как реализовать надёжную очередь задач в PostgreSQL и избежать дублирующихся писем при параллельной обработке? В этом видео разбираем Race Condition, блокировки строк, FOR UPDATE SKIP LOCKED, lease, fencing tokens и идемпотентность на практическом примере. Представьте интернет-магазин, в котором три пода одного сервиса одновременно обрабатывают очередь писем. Как сделать так, чтобы задачи выполнялись параллельно, клиенты не получали дубликаты, а работа не зависала после падения или длительного зависания воркера? Разбираем решение пошагово. Что вы узнаете из видео: - Race Condition: почему несколько воркеров могут одновременно забрать одну задачу и как возникают дубликаты. - Оптимистическая блокировка: как использовать условный UPDATE и проверку статуса для атомарного захвата задачи. - Пессимистическая блокировка: как работает SELECT FOR UPDATE и почему обычные блокировки могут создавать очереди ожидания. - FOR UPDATE SKIP LOCKED: как несколько воркеров могут забирать разные задачи без ожидания заблокированных строк. - Проблема долгих транзакций: почему нельзя удерживать транзакцию и соединение с базой на протяжении всей обработки внешнего запроса. - Lease (аренда задачи): как возвращать зависшие задачи в обработку после истечения срока аренды. - Fencing tokens: как защитить состояние базы данных от устаревшего воркера, который продолжил работу после потери задачи. - Idempotency Key: как предотвратить повторные внешние эффекты, даже если письмо отправляется повторно. - At-least-once delivery: почему повторные попытки отправки неизбежны и как проектировать систему с учётом этого факта. Главный вывод: надёжная очередь задач требует нескольких уровней защиты. PostgreSQL обеспечивает согласованный захват и обновление состояния задач, lease позволяет восстанавливать обработку после зависаний, fencing tokens защищают от устаревших владельцев, а ключ идемпотентности позволяет получателю распознавать повторные запросы. Полезные ссылки: 5 ноября стартует курс «Go-разработчик с нуля», где мы подробно разберем фреймворк Gin, горутины, многопоточность и работу с API https://ru.hexlet.io/link/WqKpvp Также 5 ноября стартует курс «Бэкенд на Node.js для фронтенд-разработчиков», где вы изучите Node.js, API, SQL и Docker. https://ru.hexlet.io/link/BCQ5ut А 10 ноября планируем вебинар об AI и LLM, где поговорим о применении языковых моделей в разработке и о том, какие задачи стоит решать с их помощью. Ждем тебя по ссылке https://ru.hexlet.io/link/YKYprW! #AI #AIAgents #CICD #SpecDrivenDevelopment #AgenticCoding #ClaudeCode #Codex #DevOps #CodeReview #SoftwareDevelopment #AIcoding #Программирование #РазработкаПО #АвтоматизацияРазработки #Хекслет

Название:

Очередь задач на PostgreSQL без дублей: SKIP LOCKED, lease и ключ идемпотентности

Категория:

Обучение