Tôi hiện có hai dịch vụ siêu nhỏ. Chúng tôi sẽ gọi cho họ Avà B.
Cơ sở dữ liệu trong microservice Acó bảng sau:
A
|-- users
Cơ sở dữ liệu trong microservice Bcó bảng sau:
B
|-- trackers
Các yêu cầu nêu rõ usersvà trackerscó mối quan hệ nhiều-nhiều.
Tôi không chắc chắn làm thế nào để xử lý đúng cách trong kiến trúc microservice.
Tôi có thể thấy điều này hoạt động theo một trong ba cách:
- Một
user_trackersbảng được thêm vào microserviceA. Điều này hoạt động tương tự như một bảng tham gia có chứa "khóa ngoại" đếnusersvàtrackers. - Một
ownersbảng được thêm vào microserviceB. Bảng này hoạt động tương tự như một bảng tham gia đa hình. Điều này sẽ cho phép bất kỳ dịch vụ nào tạo liên kết với trình theo dõi. Điều này có thể trông giống như thế này:B |-- trackers |-- owners |-- owner_id |-- owner_type |-- tracker_id - Giữ hồ sơ cho
usersvàtrackerstrong mỗi microservice. Giữ chúng đồng bộ với một số loại hệ thống pubsub.
Ban đầu tôi sẽ chọn tùy chọn 2 vì tôi thích nó bảo toàn ranh giới giao dịch. Tôi có thể tạo một trình theo dõi và liên kết nó với một cái gì đó nguyên tử. Tuy nhiên, nó có vẻ ngoài phạm vi cho microservice B. Tại sao microservice nên Bchăm sóc mà microservice Amuốn tạo ra một hiệp hội?
Tôi cảm thấy có lẽ có một mô hình tốt ở đây mà tôi không biết. Có bất kỳ lựa chọn tôi đặt ra có ý nghĩa? Có một lựa chọn khác có thể có ý nghĩa hơn?