如何拆分多对多表实现微服务松耦合

问题描述

我有三个表 Invoice(InvoiceId,Invoicetotoalprice),表投诉(complaintId),和表是投诉类型(complaintTypeID)。我有两个微服务发票管理和投诉管理。所以表complaintType是由commission表和invoice表来标识的;发票管理和投诉管理共享包含图片的表格以显示关系。有没有处理这个问题的模式?微服务通信也将通过 API 网关 enter image description here

解决方法

有两种方法可以解决此类问题。 第一个也是更容易实现的是将表保留在一个微服务中,在你的情况下,我认为在投诉服务中维护它更有意义,在发票服务中只保留表的 id,所以如果你在任何时候需要请求投诉的信息,您必须向投诉服务提出请求并传递 id。

第二个选择也是最好的,因为通过这种方式可以最大限度地减少服务之间的通信并降低它们的耦合度,因此复制该表,因此它在搜索微服务中将是两个不同的表,但只有一个微服务将是所有者,在这种情况下,我想将是投诉微服务。因此,当该表中发生任何修改时,投诉微服务将使用某些消息代理(如 kafka)发布消息,发票服务将使用它并更新表,因此两个模型之间不会出现不一致。这样你就解耦了两个服务,例如,如果投诉服务器宕机,它不会影响发票服务