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



我有三个表Invoice(InvoiceId,Invoicetoalprice(、表complaintId和表are complaintType(complaintTypeID(。我有两个微服务,发票管理和投诉管理。因此,表complaintType由投诉表和发票表标识;发票管理和投诉管理共享表中的图片,以显示关系。有没有一种模式来处理这个问题?微服务通信也将通过API网关进行在此处输入图像描述

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

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

最新更新