【问题标题】:Database architecture for micro services微服务的数据库架构
【发布时间】:2019-03-03 05:57:23
【问题描述】:

正如我大部分时间听到的那样,在微服务架构中,我们必须为每一个微服务创建单独的数据库。

但是,如果我必须在不同的数据库之间维护外键约束,这是不可能的。就像我在身份验证微服务中有一个用户表,我想在我的目录服务中使用它(用户表中的用户 ID 列)

那怎么解决呢。

提前致谢

【问题讨论】:

    标签: microservices


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      使用Saga Pattern 维护跨服务的数据一致性。

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

      【讨论】:

        猜你喜欢
        • 2020-09-12
        • 1970-01-01
        • 2020-07-05
        • 2019-10-08
        • 2017-11-30
        • 2017-09-09
        • 2019-01-29
        • 2017-09-11
        • 2019-11-11
        相关资源
        最近更新 更多