Tôi được yêu cầu thực hiện một số khám phá trong tìm kiếm sự kiện. mục tiêu của tôi là tạo một lớp API nhỏ đáp ứng tất cả các hoạt động CRUD truyền thống. Bây giờ tôi đang sử dụng một gói có tên 'có nguồn gốc' và cố gắng chơi với nó (Sử dụng Nodejs).Cách quản lý yêu cầu đọc trong ứng dụng có nguồn gốc sự kiện
Tuy nhiên, tôi đã nhận ra rằng sự kiện tìm nguồn cung ứng không hoàn toàn hữu ích khi nó được sử dụng một mình. thông thường, nó được kết hợp với CQRS.
Sự hiểu biết của tôi về CQRS là, khi giao diện người dùng gửi lệnh ghi tới máy chủ. ứng dụng thực hiện một số xác thực đối với dữ liệu. và lưu nó trong cửa hàng sự kiện (tôi đang sử dụng mongoDB), ví dụ: đây là cửa hàng sự kiện của tôi sẽ trông như thế nào:
{method:"createAccount",name:"user1", account:1}
{method:"deposit",name:"user1",account: 1 , amount:100}
{method:"deposit",name:"user1",account: 1 , amount:100}
{method:"deposit",name:"user1",account: 1 , amount:100}
{method:"withdraw",name:"user1",account1,amount:250}
Nó chứa tất cả thông tin kiểm tra chứ không phải tình trạng cuối cùng. tuy nhiên, tôi bối rối làm thế nào tôi có thể xử lý các hoạt động đọc. nếu tôi muốn đọc số dư tài khoản. chính xác thì điều gì sẽ xảy ra? đây là câu hỏi của tôi:
- Nếu chúng tôi không thể truy vấn sự kiện lưu trữ (cơ sở dữ liệu) trực tiếp cho hoạt động đọc, thì chúng ta nên truy vấn ở đâu? nó nên là một bộ nhớ đệm trong bộ nhớ?
- Nếu chúng tôi truy vấn bộ nhớ. là trạng thái cuối cùng đã có hoặc tôi phải thực hiện thao tác phát lại (hoặc gấp trái) để tính kết quả. ví dụ: số dư của tài khoản 1 là 50.
- Tôi đã tìm thấy một số blogger đã nói về 'đăng ký' hoặc 'phát'. chúng là gì và phát sóng cho ai?
Tôi sẽ thực sự đánh giá cao bất kỳ đề xuất nào và vui lòng sửa lỗi nếu hiểu biết của tôi sai.
Đối với tôi, một khái niệm bạn không nhận thức được trong câu hỏi là sự kiện thường được duy trì trong luồng, được tách biệt theo Tổng hợp theo nghĩa DDD. Các seqs của các sự kiện được xem xét trong một quá trình quyết định được giới hạn cho những người bạn colocated khi viết. Về phía truy vấn, bạn có thể trong một số trường hợp tải thấp tấn công nó bằng cách đọc + gấp toàn bộ luồng. Nói chung, như các câu trả lời ám chỉ đến, dự đoán là làm thế nào tương đương với truy vấn đạt được. [Tài liệu giới thiệu cho GES] (http://docs.geteventstore.com/introduction/4.0.2/event-sourcing-basics/) là một đọc tốt –
@RubenBartelink có bạn đã đúng! Tôi không có ý tưởng về cách sử dụng các luồng sự kiện. Tôi nên xem xét những thứ bảo trì luồng. Cảm ơn bạn đã đề xuất! – nick