Microservices 微服务的数据库体系结构

Microservices 微服务的数据库体系结构,microservices,Microservices,正如我经常听到的那样,在微服务体系结构中,对于每一个微服务,我们都必须创建单独的数据库 但是如果我必须在不同的数据库之间保持外键约束,这是不可能的。就像我在AuthenticationMicro服务中有一个用户表,我想在我的目录服务中使用它(用户表中的userid列) 那么如何解决呢 提前感谢您可以通过事件源(例如,您可以使用rabbit MQ或apache kafka进行异步消息传递)在目录服务中维护用户表的卷影副本(仅包含用户ID列的有用信息) 目录服务将以只读模式使用用户信息。但是,只有当

正如我经常听到的那样,在微服务体系结构中,对于每一个微服务,我们都必须创建单独的数据库

但是如果我必须在不同的数据库之间保持外键约束,这是不可能的。就像我在AuthenticationMicro服务中有一个用户表,我想在我的目录服务中使用它(用户表中的userid列)

那么如何解决呢


提前感谢

您可以通过事件源(例如,您可以使用rabbit MQ或apache kafka进行异步消息传递)在目录服务中维护用户表的卷影副本(仅包含用户ID列的有用信息)

目录服务将以只读模式使用用户信息。但是,只有当用户信息不经常更改时,此解决方案才有效。否则,异步通信可能效率低下且成本高昂。 在这种情况下,您可以实现从目录服务到用户服务的API调用,以便对用户数据进行任何验证。

使用来维护服务之间的数据一致性

传奇是一系列本地交易。每笔本地交易 更新数据库并发布消息或事件以触发 传奇故事中的下一个本地交易。如果本地事务失败 因为它违反了一条商业规则,所以传奇故事执行了一系列 补偿撤消由所做更改的事务 先前的本地交易