Tăng cường hệ thống với Event Sourcing và CQRS
SonetOps
•
22/09/2025
Tăng cường hệ thống với Event Sourcing và CQRS
Event Sourcing (ES) và CQRS là bộ đôi kiến trúc mạnh mẽ, thay thế CRUD truyền thống, mang lại khả năng kiểm toán, mở rộng và linh hoạt cho các hệ thống phức tạp. Bài viết này giới thiệu cách áp dụng ES/CQRS trong DevOps và ví dụ thực tiễn.
ES và CQRS là gì?
Event Sourcing lưu trữ mọi thay đổi dưới dạng sự kiện (events) thay vì trạng thái hiện tại. CQRS tách biệt xử lý lệnh (Command) và truy vấn (Query), tối ưu hóa hiệu suất cho cả ghi và đọc dữ liệu

Hình 1: Quy trình xử lý trong ES/CQRS
Tại sao cần ES/CQRS?
- Kiểm toán: Lưu lịch sử đầy đủ, không thể thay đổi.
- Mở rộng: Tách biệt luồng ghi và đọc để scale độc lập.
- Linh hoạt: Tạo nhiều mô hình đọc từ cùng dữ liệu sự kiện.
Triển khai ES/CQRS trong E-commerce
Ví dụ xử lý đơn hàng:
# Command: Đặt hàng
class PlaceOrderCommand:
order_id: str
customer_id: str
items: list
# Event: Đơn hàng đã đặt
class OrderPlacedEvent:
order_id: str
customer_id: str
items: list
timestamp: str
Quy trình:
- Command
PlaceOrdertạoOrderPlacedEvent. - Lưu event vào Event Store.
- Event Bus (Kafka) gửi event.
- Projection Service cập nhật Read Model.
- Query đọc trạng thái từ Read Model.
So sánh ES/CQRS với CRUD
| Tính năng | ES/CQRS | CRUD |
|---|---|---|
| Kiểm toán | Lưu lịch sử sự kiện | Chỉ lưu trạng thái hiện tại |
| Mở rộng | Scale độc lập | Khó tách biệt |
| Độ phức tạp | Cao hơn | Đơn giản |
Kết luận
Event Sourcing và CQRS là giải pháp mạnh mẽ cho các hệ thống phức tạp, đặc biệt trong DevOps và ứng dụng tài chính, thương mại điện tử. Hãy khám phá Kafka và thiết kế sự kiện để triển khai hiệu quả! Xem thêm tại martinfowler.com.