Đây là level mà đa số developer không chạm tới.
Nhưng trong production thực tế, bạn sẽ cần:
- Cache tốc độ cao
- Real-time system
- Hệ thống phân tán
Đây là nơi Laravel kết hợp với kiến trúc hiện đại.
#1. Redis Deep Dive
#Redis là gì?
In-memory data store → cực nhanh
#Dùng Redis trong Laravel
#Config
CACHE_DRIVER=redis
QUEUE_CONNECTION=redis
SESSION_DRIVER=redis
#1. Cache với Redis
Cache::put('user:1', $user, 60);
$user = Cache::get('user:1');
#2. Cache Pattern (Quan trọng)
#Cache Aside (phổ biến nhất)
$user = Cache::remember("user:$id", 60, function () use ($id) {
return User::find($id);
});
Flow:
- Check cache
- Miss → query DB
- Save cache
#Cache Invalidation (khó nhất)
Cache::forget("user:$id");
Rule:
- Update DB → clear cache
#3. Redis Queue
SendEmailJob::dispatch($user);
Redis giúp queue nhanh hơn database rất nhiều
#4. Pub/Sub (Real-time)
Redis::publish('channel', json_encode($data));
Dùng cho WebSocket
#⚠️ Lưu ý
- Redis không phải DB chính
- Dữ liệu có thể mất nếu không config persistence
#2. WebSocket & Broadcasting
#Vấn đề
HTTP là stateless → không real-time
#Giải pháp: WebSocket
Kết nối 2 chiều real-time
#Laravel Broadcasting
#Event
class OrderCreated implements ShouldBroadcast
{
public function broadcastOn()
{
return ['orders'];
}
}
#Frontend (JS)
Echo.channel('orders')
.listen('OrderCreated', (e) => {
console.log(e);
});
#Stack phổ biến
- Laravel Echo
- Pusher / Soketi
#Real Case
- Chat app
- Notification realtime
- Live dashboard
#⚠️ Tips
- Không broadcast quá nhiều event
- Dùng queue cho broadcast
#3. Microservices với Laravel
#Khi nào cần?
- System lớn
- Team nhiều
- Domain phức tạp
#Kiến trúc cơ bản
API Gateway
↓
User Service
Order Service
Payment Service
#Giao tiếp giữa service
#1. HTTP API
Http::get('http://order-service/api/orders');
#2. Message Queue (advanced)
- Kafka
- RabbitMQ
Event-driven
#Ví dụ flow Order
User → API → Order Service → Event → Payment Service
#Thực tế
- Không nên dùng microservices quá sớm
- Monolith tốt vẫn scale được
#4. Event-Driven System (Advanced)
#Flow
Event → Queue → Multiple Listener
#Ví dụ
OrderCreated::dispatch($order);
Listeners:
- SendEmail
- UpdateInventory
- PushNotification
#Ưu điểm
- Decoupled
- Scalable
#Nhược điểm
- Khó debug
- Event chaining phức tạp
#5. Real Architecture (Production)
Một hệ thống thực tế:
- Laravel (API)
- Redis (cache + queue)
- MySQL (DB)
- WebSocket server
- Nginx + Load balancer
#6. Anti-pattern (rất quan trọng)
#❌ 1. Lạm dụng Redis
Cache sai → data inconsistency
#❌ 2. Broadcast mọi thứ
Tốn tài nguyên
#❌ 3. Microservices sớm
Over-engineering
#7. Tips & Tricks (thực chiến)
- Cache theo key rõ ràng:
user:{id} - Dùng TTL hợp lý
- Log event để debug
- Tách domain rõ khi dùng microservices
#8. Mindset Senior
Junior:
“Dùng Redis cho nhanh”
Senior:
“Phải hiểu consistency, trade-off và kiến trúc hệ thống”
#9. Câu hỏi thường gặp (Interview nâng cao)
1. Redis khác gì so với database?
Redis lưu in-memory, nhanh hơn nhưng không đảm bảo persistence như DB
2. Khi nào nên dùng WebSocket?
Khi cần real-time như chat, notification
3. Pub/Sub trong Redis là gì?
Là cơ chế publish message và subscriber nhận message
4. Microservices có nhược điểm gì?
Phức tạp, khó debug, cần infra mạnh
5. Event-driven architecture là gì?
Kiến trúc dựa trên event để tách các thành phần hệ thống
6. Làm sao đảm bảo consistency khi dùng cache?
Dùng cache invalidation hoặc write-through strategy
7. Khi nào không nên dùng Redis?
Khi dữ liệu cần consistency cao hoặc không cần tốc độ cao
#Kết luận
Advanced topics giúp bạn:
- Xây dựng hệ thống real-time
- Scale hệ thống lớn
- Áp dụng kiến trúc hiện đại
Đây là level của Senior → Architect thực thụ.