Đây là chuỗi chung của hai thành phần phân tán trong ứng dụng Java của chúng tôi:
1 A sends request to B
2 B starts some job J in parallel thread
3 B returns response to A
4 A accepts response
5 Job finishes after some time
6 Job sends information to A
7 A receives response from a Job and updates
Đây là kịch bản lý tưởng, giả sử mọi thứ hoạt động. Tất nhiên, cuộc sống thực sự đầy những thất bại. Ví dụ, một trong những trường hợp xấu nhất có thể là nếu #6
thất bại đơn giản chỉ vì mạng: công việc đã được thực thi chính xác, nhưng A
không biết gì về nó.
Tôi đang tìm kiếm một cách tiếp cận nhẹ về cách quản lý lỗi trong hệ thống này. Lưu ý rằng chúng tôi có rất nhiều thành phần, vì vậy việc phân cụm tất cả chúng chỉ vì xử lý lỗi không có ý nghĩa. Tiếp theo, tôi đã bỏ việc sử dụng bất kỳ bộ nhớ / repo phân tán nào sẽ được cài đặt lại trên mỗi thành phần vì cùng một lý do.
Suy nghĩ của tôi đang đi theo hướng có một trạng thái tuyệt đối trên B và không bao giờ có trạng thái tồn tại trên a A
. Điều này có nghĩa như sau:
- trước khi
#1
chúng tôi đánh dấuA
rằng đơn vị công việc tức là thay đổi sắp bắt đầu - chỉ
B
có thể bỏ đánh dấu trạng thái này. A
có thể lấy thông tin vềB
bất cứ lúc nào, để cập nhật trạng thái.- không có thay đổi mới trên cùng một đơn vị có thể được gọi trên
A
.
bạn nghĩ sao? Có cách nào nhẹ để khắc phục lỗi trong hệ thống loại này không?