Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Як вирішується проблема узгодженості даних між сервісами?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)У мікросервісній архітектурі немає єдиної бази даних, тому **узгодженість даних** забезпечується на рівні обміну подіями і координації дій між сервісами, а не глобальними транзакціями. **Ключове:** узгодженість досягається керуванням подіями, сагами (Saga pattern) та ідемпотентними операціями, що дає гнучкість і відмовостійкість, але вимагає продуманої логіки взаємодії.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняУ мікросервісній архітектурі **немає єдиної бази даних**, тому узгодженість даних забезпечується **на рівні обміну подіями і координації дій** між сервісами. Мета - досягти *логічної узгодженості* без глобальних транзакцій. ### 1. **Event-driven підхід (подієва узгодженість)** Кожен сервіс публікує події про свої зміни, наприклад «Замовлення створено», «Оплату підтверджено». Інші сервіси підписуються і оновлюють свої дані. Так досягається **eventual consistency** - дані стають узгодженими з невеликою затримкою. *Приклад:* Сервіс замовлень створює замовлення → публікує подію → сервіс доставки додає запис у себе. ### 2. **Сага (Saga pattern)** Велика бізнес-операція розбивається на серію локальних кроків у різних сервісах. Якщо один із кроків не вдався, виконуються *компенсаційні дії* для відкату попередніх змін. *Приклад:* 1. Створити замовлення → 2. Зарезервувати товар → 3. Списати оплату. Якщо крок 3 не пройшов - відкочуються кроки 1-2 («скасувати замовлення», «звільнити товар»). ### 3. **Outbox pattern** Щоб подія не загубилася між записом у базу і відправленням у брокер, сервіс спершу записує її в *outbox*-таблицю, а потім надійно публікує. Це запобігає розсинхронізації між локальними і зовнішніми змінами. ### 4. **Ідемпотентність і ретраї** Кожен сервіс повинен уміти безпечно повторювати операції. Навіть якщо подія чи запит прийде двічі, результат залишиться коректним. ### 5. **Моніторинг і контроль консистентності** Використовуються фонові перевірки (*reconciliation jobs*), які періодично звіряють дані між сервісами і виправляють розбіжності. **Підсумок:** > У мікросервісах узгодженість досягається не спільною транзакцією, а **керуванням подіями, сагами та ідемпотентними операціями**. > Це дає гнучкість і відмовостійкість, але вимагає продуманої логіки взаємодії між сервісами.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.