Evenimente

Evenimentele microserviciilor

Accesul la baza de date va genera evenimente, în special la scriere. Acest comportament trebuie implementat sau suprascris în implementarea de bază a ORM.

Sistemul cache ascultă aceste evenimente pentru a invalida și reîmprospăta datele modificate.

Pentru entitățile care extind alte modele, evenimentul ar trebui emis pentru entitatea părinte.

Toate microserviciile pot avea acces la modelele de date, adică modelele entităților.

Microserviciile pot solicita date prin orice implementare a accesului la date, respectând practicile potrivite fiecărui caz.

De exemplu, pentru citirea sau modificarea informațiilor sensibile este preferabil apelul microserviciului responsabil ori al metodelor publice, în locul accesului direct la baza de date.

1.1. Event sourcing

https://www.confluent.io/blog/apache-kafka-for-service-architectures/

Evenimentele ar trebui să conțină un ID unic, versiunea mesajului, versiunea schemei, numele serviciului emitent și datele.

O abordare uzuală pentru modificări incompatibile este crearea a două topicuri, orders-v1 și orders-v2, pentru mesajele cu schema veche, respectiv nouă. Dacă serviciul Orders este responsabil de comenzi, există câteva opțiuni:

Serviciul Orders poate publica simultan în ambele scheme.

Se poate adăuga un proces care convertește mesajele din orders-v2 în orders-v1. Pentru această conversie este folosit, de regulă, un job KStreams simplu.

Serviciile continuă să folosească ambele topicuri până la migrarea completă la v2. Atunci, topicul v1 poate fi arhivat sau șters, după caz.

O altă variantă combină un protocol fără stare, precum HTTP, cu o infrastructură de evenimente, de exemplu printr-un gateway. Fiecare serviciu poate expune două interfețe separate: una pentru evenimente și alta pentru cereri și răspunsuri. În acest model, schimbările de stare generează evenimente, iar interogările folosesc HTTP. Evenimentele reprezintă datele persistente ale sistemului, pentru care Kafka este potrivit; interogările sunt interacțiuni temporare, potrivite pentru HTTP. Materialul citat prezintă și alte modele de proiectare bazate pe evenimente.