我目前有两个微服务。我们称它们为A
和B
。
微服务下的数据库A
具有下表:
A
|-- users
微服务下的数据库B
具有下表:
B
|-- trackers
需求说明users
并trackers
具有多对多关系。
我不确定如何在微服务架构中正确处理此问题。
我可以看到此方法是以下三种方法之一:
- 一个
user_trackers
表添加到微服务A
。这类似于包含表中的“users
和”的“外键”的联接表trackers
。 - 一个
owners
表添加到微服务B
。该表的作用类似于多态联接表。这将允许任何服务创建与跟踪器的关联。这可能看起来像这样:B |-- trackers |-- owners |-- owner_id |-- owner_type |-- tracker_id
- 为保存记录
users
并trackers
在每个微服务。使它们与某种pubsub系统保持同步。
我最初打算使用选项2,因为我喜欢它保留了事务边界。我可以创建一个跟踪器并将其与某些原子关联。但是,它似乎超出了微服务的范围B
。微B
服务为什么要关心微服务A
想要建立关联?
我觉得这里可能存在一个我不知道的好模式。我提出的任何选择是否有意义?还有另一种可能更有意义的选择吗?