oshp1512
Senior Member
Hi các bác, em đang làm dự án mà có issue nho nhỏ chưa xử được, nhờ các bác cho em cao kiến xử lý với
Tiền đề:
Có 2 server A, B độc lập. DB độc lập. Nghiệp vụ là sync data 1 bảng (vd bảng Product) của 2 DB này
ở phía B sẽ có thêm 1 column is_update để đánh dấu row đó cần được sync
VD:
Xử lý hiện tại:
Ban đầu 2 bên A, B có row id 1 cần được sync data: column is_delete của item ở B đang false, và A cần sync nó
A sẽ chạy batch 5s/1 lần và xử lý theo flow như dưới
1. Đầu tiên call API sang B lấy ra những thằng cần sync, khi B được A request sang thì get những row có flag is_update True để reponse cho A -> B trả về cho A là data của id 1
2. Sau khi A nhận được, A sẽ dựa vào data đó để sync vào DB A.
3. Update db A xong, thì sẽ call api sang B, truyền data là id những thằng được A sync thành công -> truyền cho B id 1 để B update lại flag is_update False
-> Flow như vậy là xong, tới đây batch vẫn chạy nhưng không có flag is_update nào bật nữa thì sẽ không sync data
ISSUE:
Hiện tại ở step 2 việc sync data vào A vì một lý do nào đó ở phía server A mà fail (lost connect/full cpu load/....), thì step 3 vẫn tiếp diễn, dẫn đến A chưa sync thành công mà B vẫn update lại flag is_update sang FALSE -> không đồng bộ data
Câu hỏi:
Có cách nào để tạo dựng cơ chế có thể confirm được rằng xử lý đồng bộ đã hoàn thành dù cho ở bất cứ trạng thái như thế nào không?
Tiền đề:
Có 2 server A, B độc lập. DB độc lập. Nghiệp vụ là sync data 1 bảng (vd bảng Product) của 2 DB này
ở phía B sẽ có thêm 1 column is_update để đánh dấu row đó cần được sync
VD:
Xử lý hiện tại:
Ban đầu 2 bên A, B có row id 1 cần được sync data: column is_delete của item ở B đang false, và A cần sync nó
A sẽ chạy batch 5s/1 lần và xử lý theo flow như dưới
1. Đầu tiên call API sang B lấy ra những thằng cần sync, khi B được A request sang thì get những row có flag is_update True để reponse cho A -> B trả về cho A là data của id 1
2. Sau khi A nhận được, A sẽ dựa vào data đó để sync vào DB A.
3. Update db A xong, thì sẽ call api sang B, truyền data là id những thằng được A sync thành công -> truyền cho B id 1 để B update lại flag is_update False
-> Flow như vậy là xong, tới đây batch vẫn chạy nhưng không có flag is_update nào bật nữa thì sẽ không sync data
ISSUE:
Hiện tại ở step 2 việc sync data vào A vì một lý do nào đó ở phía server A mà fail (lost connect/full cpu load/....), thì step 3 vẫn tiếp diễn, dẫn đến A chưa sync thành công mà B vẫn update lại flag is_update sang FALSE -> không đồng bộ data
Câu hỏi:
Có cách nào để tạo dựng cơ chế có thể confirm được rằng xử lý đồng bộ đã hoàn thành dù cho ở bất cứ trạng thái như thế nào không?