2010-11-21 23 views
9

Khi ảnh chụp nhanh tổng hợp không đồng bộ với nhật ký sự kiện, tôi chỉ có thể phát lại các sự kiện của tôi từ các ảnh chụp nhanh đầu tiên (được cho là đồng bộ hóa). Cùng tôi có thể làm khi tôi thêm/xóa các trường mới hoặc khi tôi sửa đổi logic của các trình xử lý hiện có.Làm thế nào để xử lý các tình huống, khi mô hình đọc trở nên không đồng bộ với nhật ký sự kiện?

Trong trường hợp tôi cần thêm mô hình đã đọc mới (tức là chế độ xem báo cáo mới), tôi có thể thực hiện lại một lần nữa - tôi sẽ phát lại các sự kiện của mình.

Nhưng tôi nên xử lý tình huống như thế nào, khi mô hình đã đọc không đồng bộ với nhật ký sự kiện? Lưu trữ các sự kiện và xuất bản là trong một giao dịch, nhưng việc cập nhật mô hình đã đọc xảy ra trong một giao dịch khác, điều này có thể không thành công. Các sự kiện lặp đi lặp lại ngay từ đầu có thể giúp đỡ, nhưng nó có thể mất vĩnh cửu. Tôi có cần một khái niệm về ảnh chụp nhanh cho toàn bộ mô hình đã đọc không?

Bạn giải quyết vấn đề này như thế nào? Cảm ơn bạn.

Trả lời

7

Lý do thất bại trong xử lý sự kiện là gì? Bao lâu là "vĩnh cửu"?

Đọc cập nhật mô hình hiếm khi thất bại (không giống như trình xử lý lệnh), vì logic bên trong cực kỳ đơn giản. Thất bại có thể được gây ra bởi các vấn đề thoáng qua (IO/mất mạng) và sẽ được xử lý tự động bằng xe buýt thông báo.

Tuy nhiên, nếu mô hình đã đọc bị hỏng vì một số lý do, thì cách dễ nhất để đặt lại và truyền sự kiện qua đó. Ngay cả hàng triệu sự kiện cũng sẽ mất khá nhiều thời gian. Ngoài ra, bạn luôn có thể sử dụng phương pháp Map-Reduce.

Tôi khuyên bạn không nên giới thiệu ảnh chụp nhanh để đọc mô hình. Tôi nghĩ rằng điều này chỉ làm phức tạp kiến ​​trúc mà không có bất kỳ lợi ích đáng kể nào.

+1

Cảm ơn bạn Rinat! Trong trường hợp lặp lại các sự kiện ngay từ đầu, bạn có sử dụng một chuỗi các trình xử lý sự kiện không? Bởi vì trong trường hợp tôi sẽ sử dụng một số chuỗi công việc tôi có thể nhận được kết quả không chính xác (trong khi nó sẽ hoạt động trong sản xuất vì tính chất miền - điều kiện chủng tộc của một số sự kiện không thể xảy ra khi xuất bản từ người dùng thực, nhưng có thể khi xuất bản từng người một cho một số chủ đề công nhân). Liệu nó có thừa nhận trên toàn cầu rằng chúng ta chỉ nên sử dụng một chuỗi công nhân để xử lý các sự kiện ngay từ đầu? Cảm ơn bạn vì câu trả lời có giá trị của bạn. –

+0

Cuộc gọi tốt. Tôi muốn tránh các vấn đề tương tranh như vậy bằng cách luôn chạy không quá 1 thread cho mỗi thể hiện thực thể (hoặc là các lệnh hoặc các sự kiện). Vì vậy, chúng tôi có thể có nhiều chủ đề cho trình xử lý sự kiện, tuy nhiên, mỗi lần xem * cá thể * (được nhận dạng bởi một số danh tính) sẽ luôn được xử lý chỉ bằng một chuỗi duy nhất. Tất nhiên, một chủ đề có thể xử lý nhiều hơn một trường hợp hoặc kiểu xem tại một thời điểm. Không giúp đỡ à? –

+0

Cảm ơn bạn! Sau một vài ngày phân tích câu trả lời của bạn, tôi nghĩ rằng tôi hiểu cơ chế xử lý sự kiện với nhiều chuỗi công việc. Tôi đánh giá cao câu trả lời của bạn. –

Các vấn đề liên quan