【问题标题】:With Microservices, different services has similar entities to be stored in database, how to deal with it?使用微服务,不同的服务有相似的实体要存储在数据库中,如何处理呢?
【发布时间】:2016-07-28 21:54:42
【问题描述】:

我试图了解什么是微服务。

据我所知,它只是可以相互调用或由客户端调用的独立自包含服务。

假设我有 ProductService 和 UserService。如果我们的系统允许人们对产品和用户发表评论,我们应该将两个系统的 cmets 存储在一个 cmets 表中,还是应该每个系统都有单独的 cmets 表?

每个服务应该使用自己的数据库还是将它们存储在一个地方?

【问题讨论】:

    标签: architecture microservices


    【解决方案1】:

    据我所知,它只是独立的独立服务 可以相互调用,也可以由客户端调用

    你懂的!这是一个相当不错的定义:

    • 分离 - 分别设计、构建、部署和管理
    • 自包含 - 完全自主
    • 可以相互调用 - 通过众所周知的协议进行通信,同步或异步。
    • 或由客户端 - 每个服务都公开其自己的可组合 UI 组件

    如果我们的系统允许人们对产品和用户发表评论, 我们是否应该将两个系统的 cmets 存储在 cmets 表中

    只有当您有单独的评论服务时,您才会这样做。根据您自己的定义,服务应该是自包含的。这意味着没有共享依赖项,例如数据模型或数据库表。

    每个服务应该使用自己的数据库还是将它们存储在一个地方?

    再次引用您的定义,服务应该是分离的(或至少是可分离的),只要它们不使用相同的数据库实例,它们可以共享一个服务器实例。

    【讨论】:

      【解决方案2】:

      听起来您正在考虑根据实体拆分服务,这并不是一个好主意。

      在您提供的示例中,您可以使用任何一种方法,也可以将它们与两者分开存储,或者复制。这取决于您尝试做什么、如何访问该信息以及您的服务如何相互交互。快速的解决方案,如果不了解完整的上下文可能会给您未来带来麻烦,所以最好现在花一些时间避免它。

      解释什么是微服务以及如何构建它们可能需要一两本书,所以我鼓励您从 Microservices by Sam Newmann 开始。

      我之前推荐过这本书,它是一个很好的主题介绍。它在第一章回答了你的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-08
        • 2016-02-21
        • 2021-03-25
        • 1970-01-01
        • 2019-12-03
        • 2020-05-09
        • 1970-01-01
        • 2017-11-09
        相关资源
        最近更新 更多