Curs 4 - Caching și Message Queues în System Design

În acest curs vom explora conceptele de caching și message queues, esențiale pentru optimizarea performanței și scalabilității unui sistem software.

1. Ce este Caching-ul și de ce este important?

Caching-ul este procesul de stocare temporară a datelor frecvent accesate pentru a îmbunătăți viteza răspunsului sistemului.

- Cache Hit: Când datele sunt găsite în cache și nu e nevoie de o nouă interogare.

- Cache Miss: Când datele nu sunt găsite în cache și trebuie preluate din sursa originală.

- Unde poate fi folosit caching-ul?

- Frontend (Browser Cache, CDN): Stocarea resurselor statice.

- Backend (Application Cache, In-Memory Caching): Stocarea intermediară a datelor.

- Database Caching: Accelerarea interogărilor prin replici și in-memory storage.

2. Tehnici de Caching și Strategii

Caching-ul se poate realiza la diferite niveluri folosind tehnologii specializate.

a) In-Memory Caching

- Redis: Stocare bazată pe cheie-valoare cu suport pentru expirația datelor.

- Memcached: Cache de mare viteză, dar fără persistență.

b) Edge Caching și CDN

- Cloudflare, AWS CloudFront: Servesc conținut static aproape de utilizatori pentru a reduce latența.

c) Strategii de Invalidare a Cache-ului

- Write-Through Cache: Se scrie simultan în cache și în baza de date.

- Write-Behind Cache: Se scrie mai întâi în cache, iar actualizarea bazei de date se face ulterior.

- Lazy Loading: Datele sunt încărcate în cache doar la prima accesare.

3. Message Queues și Procesare Asincronă

Message Queues permit trimiterea și procesarea asincronă a mesajelor între servicii.

a) Avantajele folosirii Message Queues

- Decuplarea serviciilor: Permite scalabilitate mai mare.

- Distribuția echilibrată a sarcinilor: Îmbunătățește performanța sistemului.

- Asigurarea livrării mesajelor: Sistemele pot gestiona mesaje pierdute sau nereușite.

b) Comparație între Message Queues

- RabbitMQ: Protocol AMQP, potrivit pentru task-uri de procesare.

- Kafka: Utilizat pentru procesarea stream-urilor de date în timp real.

- AWS SQS: Serviciu de cozi de mesaje gestionat de AWS.

c) Modele de implementare

- Pub/Sub (Publisher-Subscriber): Mesajele sunt transmise mai multor consumatori.

- Point-to-Point Messaging: Mesajele sunt trimise direct unui singur consumator.

4. Exemplu Practic - Optimizarea unei platforme de streaming video

Cum putem scala o platformă precum Netflix pentru a gestiona milioane de utilizatori?

a) Utilizarea CDN și Cache pentru conținut video

- CDN pentru stocarea și livrarea rapidă a fișierelor video.

- Redis pentru caching-ul metadatelor utilizatorilor.

b) Procesarea Asincronă a Evenimentelor

- Kafka pentru tracking-ul vizualizărilor și sugestii personalizate.

- RabbitMQ pentru procesarea conținutului video și transcodare.

Resurse suplimentare: