有了微服务,不同的服务有类似的实体存储在数据库中,如何处理呢?

时间:2016-07-27 13:20:51

标签: architecture microservices

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

据我所知,它只是分开的自包含服务,可以由彼此或客户端调用。

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

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

2 个答案:

答案 0 :(得分:2)

  

据我所知,它只是分开的自足服务   可以由彼此或客户调用

你理解得很好!那是一个相当不错的定义:

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

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

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

  

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

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

答案 1 :(得分:2)

听起来你觉得根据实体分割服务,这不是一个好主意。

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

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

我以前推荐过那本书,这是一个非常好的介绍。它在第一章中回答了你的问题。