În acest curs vom explora conceptele de caching și message queues, esențiale pentru optimizarea performanței și scalabilității unui sistem software.
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.
Caching-ul se poate realiza la diferite niveluri folosind tehnologii specializate.
- Redis: Stocare bazată pe cheie-valoare cu suport pentru expirația datelor.
- Memcached: Cache de mare viteză, dar fără persistență.
- Cloudflare, AWS CloudFront: Servesc conținut static aproape de utilizatori pentru a reduce latența.
- 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.
Message Queues permit trimiterea și procesarea asincronă a mesajelor între servicii.
- 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.
- 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.
- Pub/Sub (Publisher-Subscriber): Mesajele sunt transmise mai multor consumatori.
- Point-to-Point Messaging: Mesajele sunt trimise direct unui singur consumator.
Cum putem scala o platformă precum Netflix pentru a gestiona milioane de utilizatori?
- CDN pentru stocarea și livrarea rapidă a fișierelor video.
- Redis pentru caching-ul metadatelor utilizatorilor.
- Kafka pentru tracking-ul vizualizărilor și sugestii personalizate.
- RabbitMQ pentru procesarea conținutului video și transcodare.