Architektura sterowana zdarzeniami (event-driven)
Serwisy publikują fakty, np. „złożono zamówienie”, a inne na nie reagują, zamiast wołać się nawzajem bezpośrednio.
Pod jedną nazwą kryją się trzy style. Powiadomienie o zdarzeniu wysyła cienkie zdarzenie, a odbiorcy dopytują o szczegóły. Przenoszenie stanu w zdarzeniu (event-carried state transfer) wkłada dane do zdarzenia, więc odbiorcy trzymają własną kopię i nigdy nie dopytują. Event sourcing trzyma zdarzenia jako źródło prawdy. Nowy odbiorca nie wymaga zmian u nadawcy; kosztem są przepływy trudne do prześledzenia od początku do końca i dane tylko ostatecznie spójne.
Powiązane hasła
- Event sourcing: Zapisywanie każdej zmiany jako zdarzenia w dzienniku, do którego tylko się dopisuje, i odtwarzanie bieżącego stanu przez ich odtworzenie, zamiast trzymać tylko ostatni stan.
- Dostarczenie co najmniej raz (at-least-once delivery): Gwarancja kolejki albo brokera, że każda wiadomość dotrze, być może więcej niż raz, więc konsumenci muszą radzić sobie z duplikatami.
- Spójność ostateczna (eventual consistency): Gwarancja, że kopie danych zgodzą się ze sobą, gdy przestaną napływać zmiany, ale w międzyczasie mogą chwilowo pokazywać różne wartości.
- Wzorzec outbox (transactional outbox): Zapisanie zdarzenia w tabeli outbox w tej samej transakcji bazy co sama zmiana, a potem osobne opublikowanie go w brokerze.
