Tôi hiện có hai dịch vụ siêu nhỏ. Chúng tôi sẽ gọi cho họ A
và B
.
Cơ sở dữ liệu trong microservice A
có bảng sau:
A
|-- users
Cơ sở dữ liệu trong microservice B
có bảng sau:
B
|-- trackers
Các yêu cầu nêu rõ users
và trackers
có 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_trackers
bả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" đếnusers
vàtrackers
. - Một
owners
bả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
users
vàtrackers
trong 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 B
chăm sóc mà microservice A
muố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?