Gần đây tôi đã đọc về nguồn cung cấp sự kiện và thực sự thích những ý tưởng đằng sau nó nhưng bị mắc kẹt với vấn đề sau.
Giả sử bạn có N quy trình đồng thời nhận lệnh (ví dụ: máy chủ web), tạo kết quả và lưu trữ chúng trong một cửa hàng tập trung. Chúng ta cũng giả sử rằng tất cả trạng thái ứng dụng nhất thời được duy trì trong bộ nhớ của các quy trình riêng lẻ bằng cách áp dụng tuần tự các sự kiện từ cửa hàng.
Bây giờ, giả sử chúng ta có quy tắc kinh doanh sau: mỗi người dùng riêng biệt phải có một tên người dùng duy nhất.
Nếu hai quy trình nhận lệnh đăng ký người dùng cho cùng một tên người dùng X, cả hai đều kiểm tra xem X không có trong danh sách tên người dùng của họ, quy tắc sẽ xác thực cho cả hai quy trình và cả hai đều lưu trữ sự kiện "người dùng mới với tên người dùng X" trong cửa hàng .
Hiện tại chúng tôi đã bước vào một trạng thái toàn cầu không nhất quán vì quy tắc kinh doanh bị vi phạm (có hai người dùng riêng biệt có cùng tên người dùng).
Trong máy chủ N truyền thống <-> 1 hệ thống kiểu RDBMS, cơ sở dữ liệu được sử dụng làm điểm đồng bộ hóa trung tâm giúp ngăn chặn sự không nhất quán đó.
Câu hỏi của tôi là: làm thế nào để các hệ thống nguồn có sự kiện thường tiếp cận vấn đề này? Có phải họ chỉ đơn giản xử lý mọi lệnh một cách tuần tự (ví dụ: giới hạn số lượng quá trình có thể ghi vào cửa hàng thành 1)?