Чим EDA відрізняється від request-response архітектури?
EDA (Event-Driven Architecture) і request-response архітектура - це два різні підходи до взаємодії сервісів. Вони різняться напрямом зв'язку, синхронністю і ступенем залежності компонентів.
1. Принцип взаємодії
| Підхід | Суть |
|---|---|
| Request-Response | Один сервіс робить запит іншому і чекає на відповідь (наприклад, HTTP REST або gRPC). |
| EDA | Сервіс публікує подію, а інші підписники реагують на неї асинхронно, без очікування. |
Приклад:
- Request-Response → сервіс «Замовлення» викликає «Оплату» і чекає на підтвердження.
- EDA → сервіс «Замовлення» публікує подію «OrderCreated», а «Оплата» самостійно її обробляє.
2. Тип зв'язку
- Request-Response: сильна зв'язаність - сервіс повинен знати адресу і контракт іншого.
- EDA: слабка зв'язаність - видавець не знає підписників, зв'язок іде через брокер повідомлень.
3. Синхронність
- Request-Response: синхронно - сервіс, що викликає, блокується до отримання відповіді.
- EDA: асинхронно - усі працюють незалежно і паралельно.
4. Масштабування і відмовостійкість
- Request-Response складніше масштабувати: збій одного вузла тягне за собою ланцюжок помилок.
- EDA масштабується простіше: брокер буферизує події, а сервіси обробляють їх у своєму темпі.
5. Застосування
- Request-Response: для прямих, критичних запитів («отримати профіль», «створити замовлення»).
- EDA: для подієвих реакцій («оплату здійснено», «товар доставлено»).
Підсумок:
Request-Response - це точковий, синхронний діалог між сервісами. EDA - це потік асинхронних подій, де сервіси реагують на зміни, не залежачи одне від одного.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.